<style>.toc-chapters{max-height:none!important}.copy-btn,#sidebar-toggle,#fullscreen-toggle{display:none!important}@media(max-width:768px){.tutorial-app{display:flex;height:auto;overflow:visible;flex-direction:column}.tutorial-main{order:0;overflow:visible}.tutorial-content{overflow:visible}.tutorial-sidebar{order:1;position:static!important;width:100%!important;min-width:0!important;max-height:none!important;display:flex!important;transform:none!important}.sidebar-toc{overflow:visible}}</style>

第 23 章 实战:搭一个全天候 AI 助理

学完了 22 章,是时候把真本事亮出来了。

朋友们好呀,我是当当老师 🐾!前面 22 章全是理论和技术,这一章我们把它们串起来。

我们要做一件事:从零开始,搭一个能 24 小时帮你干活的 AI 助理。它能帮你处理邮件、管理日程、监控服务器、推送通知——就像你请了一个超级能干的实习生。


从零搭建 AI 助理:五步走路线图

23.1 需求分析

在动手之前,先想清楚:你的 AI 助理要干什么?

问自己三个问题

  1. 我每天最烦的重复事是什么?

    • 查邮件、回消息?
    • 看报表、写日报?
    • 管理待办、设置提醒?
  2. 什么信息我经常忘?

    • 会议时间?
    • 截止日期?
    • 家人的生日?
  3. 什么我需要"第一时间知道"?

    • 服务器挂了?
    • 老板发来重要邮件?
    • 股价大跌?

我的需求清单(示例)

📋 当当老师的 AI 助理需求清单
━━━━━━━━━━━━━━━━━━━━━━━━━━━
每天要做的事:
  □ 8:30  晨间播报(天气 + 今日日程 + 重要邮件)
  □ 12:00 午间提醒(下午要准备什么)
  □ 18:00 日报提醒(今天干了什么,写日报)

随时要做的事:
  □ 帮我查任何信息(天气、百科、文档)
  □ 帮我管理文件(归类、搜索)
  □ 帮我写草稿(邮件、文档)

监控:
  □ 服务器 CPU/内存/磁盘报警
  □ 重要邮件即时通知

安全规则:
  □ 不能删我的文件(除非我明确说)
  □ 不能改系统配置(除非我批准)
  □ 晚上 11 点后别吵我
━━━━━━━━━━━━━━━━━━━━━━━━━━━

你的需求清单

现在拿出纸笔(或者打开备忘录),写下你想要的 5 个功能。这只是 MVP(最小可行产品),以后可以加。

23.2 选模型和通道

选模型就是给你的 AI 助理选"大脑"。

模型选择原则

场景 推荐模型 原因
日常聊天、写文章 Claude Sonnet / GPT-4o 语言好,理解力强
编程、技术问题 Claude Sonnet / DeepSeek V3 代码能力强
全天候任务(省钱) DeepSeek / Gemini Flash 便宜,速度够快
中文为主 DeepSeek / 通义千问 中文优化好
图像识别 GPT-4o / Claude Sonnet 看图能力强

我的选择

# openclaw.yaml 模型配置
models:
  # 主力模型 - 处理复杂任务
  primary:
    provider: deepseek
    model: deepseek-chat
    apiKey: "sk-ds-xxx"

  # 快速模型 - 简单任务、心跳巡检
  fast:
    provider: deepseek
    model: deepseek-chat
    apiKey: "sk-ds-xxx"

  # 备用模型 - 主力挂了时
  fallback:
    provider: openai
    model: gpt-4o-mini
    apiKey: "sk-openai-xxx"

省钱小技巧:日常任务用便宜的模型(DeepSeek、Gemini Flash),复杂任务才用贵的模型(Claude、GPT-4o)。

通道配置

如果你有多个 API key(比如多个 OpenAI 账号),可以配置 Fallback:

models:
  primary:
    provider: deepseek
    # 多个 key 轮流用
    apiKeys:
      - "sk-1"
      - "sk-2"    # 第一个用完了自动切第二个

23.3 配置 Agent(灵魂所在)

Agent 配置决定了 AI 的性格和行为方式。

编写 System Prompt

System Prompt 是 AI 的"人格说明书":

agents:
  assistant:
    name: "当当助手"
    description: "武彬的全天候 AI 助理"
    
    system: |
      你是「当当助手」,一个全天候在线的 AI 助理。
      
      ## 你的身份
      - 你是用户(武彬)的私人 AI 助理
      - 你性格温和、专业、偶尔幽默
      - 你的所有操作都要为用户考虑
      
      ## 核心能力
      - 能查天气、看日历、读邮件、管理文件
      - 能执行脚本、分析数据、生成报告
      - 通过手机通知主动联系用户
      
      ## 行为准则
      - 安全第一:删除操作前必须确认
      - 简洁明了:能一句话说完不说两句
      - 主动汇报:有重要发现及时通知
      - 夜间安静:23:00-08:00 不主动打扰
      
      ## 响应风格
      - 用中文回复
      - 重要信息用列表 + 表情符号
      - 技术问题要解释清楚

[截图:Agent 配置的 system prompt 界面]

常用 Agent 配置模板

agents:
  code-assistant:
    name: "代码助手"
    system: |
      你是一个高级程序员助理。
      你擅长 Python、JavaScript、Go 编程。
      回答问题时要给出可运行的代码示例。
    
  writing-assistant:
    name: "写作助手"
    system: |
      你是一个中文写作助手。
      你擅长写文章、邮件、方案。
      注意语气得体,用词精准。

23.4 配置自动化

TaskFlow 自动化

创建一个全天候工作流程:

# 24-7-assistant.yaml
name: "全天候助理工作流"
version: "1.0.0"

triggers:
  - cron: "30 8 * * 1-5"     # 工作日 8:30 晨间播报
  - cron: "0 18 * * 1-5"     # 工作日 18:00 日报提醒
  - heartbeat: true           # 每 30 分钟巡检
  - webhook: "/webhooks/github"  # GitHub 事件

steps:
  - name: "判断触发来源"
    tool: condition
    params:
      if: "{{trigger.type}} == 'cron' && {{trigger.schedule}} == '30 8 * * 1-5'"
      then: run_morning_routine
      else: check_other

  - name: "晨间播报"
    id: run_morning_routine
    tool: taskflow
    params:
      name: "morning-brief"
      
  - name: "日报提醒"
    tool: prompt
    params:
      message: "到写日报的时间了!"

Heartbeat 巡检配置

# HEARTBEAT.md - 当当助手的心跳清单

## 每轮检查(约 30 分钟)
1. 📧 检查收件箱 - 是否有标记为"紧急"的邮件
2. 📅 检查日历 - 未来 1 小时内是否有会议
3. ⚠️ 检查服务器 - 监控指标是否正常

## 特别规则
- 深夜 23:00-08:00 安静模式,除非是服务器挂了
- 同样的问题不要重复提醒超过 3 次
- 发现"老板"的邮件立即通知

Cron 定时任务

cron:
  jobs:
    - name: "晨间播报"
      schedule: "30 8 * * 1-5"
      taskflow: "morning-brief.yaml"
      notify: push

    - name: "午间提醒"
      schedule: "0 12 * * 1-5"
      action: "prompt"
      message: "下午有什么安排?我帮你记一下"

    - name: "日报提醒"
      schedule: "0 18 * * 1-5"
      action: "prompt"
      message: "该写日报了!今天做了什么?"

    - name: "周报准备"
      schedule: "0 16 * * 5"
      taskflow: "week-summary.yaml"

[截图:Cron 定时任务配置完成后的状态页面]

23.5 配置通知和节点

把手机也配置好,让 AI 能推送到手机上:

通知配置

notifications:
  push:
    - channel: "phone"        # 推送到手机
      events:
        - "taskflow.completed"  # 任务完成
        - "taskflow.failed"     # 任务失败
        - "alert.cpu_high"      # CPU 过高告警
        - "email.important"     # 重要邮件

手机节点

确保你的手机已经按照第 18 章的方法配好,并上线。

23.6 安全配置

别忘了安全:

tools:
  exec:
    mode: "allowlist"
    allowlist:
      - "ls"
      - "cat"
      - "pwd"
      - "ps aux"
      - "df -h"
      - "date"
      - "echo"
      - "git status"

sandbox: "require"

fileAccess:
  allowedPaths:
    - "/Users/wubin/Documents"
    - "/Users/wubin/Desktop"
  deniedPaths:
    - "/Users/wubin/.ssh"
    - "/Users/wubin/Documents/secrets"

23.7 上线运行

最终检查清单

□ OpenClaw 已启动并正常运行
□ WebChat 可以访问 (http://127.0.0.1:18789)
□ 模型配置正确,AI 能回答问题
□ TaskFlow 创建并测试通过
□ Cron 定时任务已配置
□ Heartbeat 已启用
□ 手机节点已配对
□ 安全设置已完成
□ 远程访问已配置(Tailscale 等)
□ 日志正常,没有报错

第一次运行

# 启动 OpenClaw
openclaw start

# 查看状态
openclaw status

# 测试 TaskFlow
openclaw taskflow run morning-brief.yaml

# 测试通知
openclaw notify test "AI 助理已上线!🎉"

观察一段时间

上线后的头 24 小时,注意观察:

  • AI 是否按计划执行任务?
  • 响应速度如何?
  • 有没有意外的行为?
  • 通知是否正常推送?

23.8 迭代优化

AI 助理不是一劳永逸的。上线后需要不断调整:

第一周

  • ✅ 检查每个自动化是否正常工作
  • ✅ 收集你不想看到的行为
  • ✅ 调整 system prompt 中的行为准则

第一个月

  • ✅ 增加新的 TaskFlow
  • ✅ 根据实际使用调整模型
  • ✅ 优化 Heartbeat 检查清单
  • ✅ 添加更多 Webhook 集成

持续迭代

  • 💡 每次觉得"这破事又要手动做"时 → 创建一个 TaskFlow
  • 💡 每次 AI 给出多余的信息时 → 精简 prompt
  • 💡 每次 AI 太啰嗦时 → 调整行为准则

23.9 本章小结

恭喜!你从一个 AI 新手变成了能搭全天候 AI 助理的"老司机":

📋 需求分析 → 🧠 选模型 → ⚙️ 配置 Agent
→ 🔄 设置自动化 → 🔐 安全配置 → 🚀 上线运行
→ 🔧 持续迭代

这个 AI 助理会 24 小时为你服务——你睡觉它在跑,你放假它在等。这就是 OpenClaw 的魅力。

下一章我们去社区看看,跟全世界的小伙伴一起玩!🌍


系统教程,帮你把工具用好,再回到任务中。 浏览任务方案 →