<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>

第 20 章 自动化与 TaskFlow

让你的 AI 从「手动挡」升级成「自动挡」。

朋友们好呀,我是当当老师 🐾!前面我们都在跟 AI 聊天——你问一句,AI 答一句。但 OpenClaw 真正的威力在于自动化:让 AI 自己干活,你喝咖啡去。

这一章是全书最重要的一章!我们会学 TaskFlow、Heartbeat(心跳)、Cron(定时任务)、Webhook,让你的 AI 24 小时自动运转。


20.1 TaskFlow 是什么

简单说,TaskFlow 就是给 AI 写"剧本"

你平时让 AI 做事是一步一步说的。TaskFlow 则是一个可重复执行的工作流——你写一次,AI 就可以反复执行,每次执行都按剧本走。

场景对比

普通用法(手动挡)

你:帮我看一下今天的新闻
AI:好的……这是今天的新闻
你:再帮我总结一下重点
AI:好的……这是总结

TaskFlow(自动挡)

你:运行"早间简报"
AI:好的,开始执行 TaskFlow:
1. ✅ 抓取今天的热点新闻
2. ✅ 用中文总结每条新闻
3. ✅ 生成简报 PDF
4. ✅ 发送到我的邮箱
5. ✅ 在手机上推送通知通知我
全部完成!🎉

TaskFlow 自动化工作流程

TaskFlow 的核心概念

概念 说人话 说明
工作流 剧本 一系列步骤的集合
步骤 每一幕戏 每个具体操作
状态 演到哪了 记录执行进度
版本 剧本第几版 改了内容就升版本
持久化 断电也不怕 重启后能接着演

20.2 创建你的第一个 TaskFlow

方式一:用 JSON/YAML 定义

创建一个 my-workflow.yaml 文件:

name: "早间简报"
version: "1.0.0"
description: "每天早上帮我整理新闻简报"

steps:
  - name: "抓取新闻"
    tool: web_fetch
    params:
      url: "https://news.ycombinator.com/"
    output: raw_news

  - name: "翻译总结"
    tool: prompt_llm
    params:
      prompt: >
        用中文总结以下新闻,每条不超过 50 字:
        {{steps.抓取新闻.output}}
    output: summary

  - name: "生成简报"
    tool: write
    params:
      path: "/Users/wubin/Desktop/daily-brief.md"
      content: |
        # 📰 今日简报
        {{steps.翻译总结.output}}
    output: brief_path

  - name: "推送通知"
    tool: notify
    params:
      title: "早间简报已生成"
      message: "桌面上的 daily-brief.md 等你查看"

方式二:直接让 AI 帮你创建

更简单的方法——让 AI 自己写 TaskFlow:

你:帮我创建一个 TaskFlow,每天早上 8 点检查天气,
如果下雨就提醒我带伞,顺便看看有没有重要邮件

AI 会直接帮你生成一个完整的 TaskFlow 并创建好!

运行 TaskFlow

# 命令行运行
openclaw taskflow run my-workflow.yaml

# 指定变量
openclaw taskflow run my-workflow.yaml --var date=2025-06-27

或者在 WebChat 里直接说"运行早间简报"。

[截图:TaskFlow 执行过程中的进度显示]

20.3 TaskFlow 的状态和版本

执行状态

每个 TaskFlow 执行时都有明确的状态:

状态 含义
pending 等待执行
running 正在运行
step_running 正在执行某个步骤
step_completed 某个步骤完成
step_failed 某个步骤失败
completed 全部完成
failed 执行失败
cancelled 被取消
waiting_approval 等待你的批准

断点续传

TaskFlow 最厉害的是持久化执行——就算电脑重启了,任务也能恢复!

你:运行"大数据分析"
[电脑突然断电了……重启后]
你:检查任务状态
AI:「大数据分析」任务之前执行到步骤 3/7,
已自动恢复,继续执行中……✅

版本管理

每次你修改 TaskFlow,版本号会追踪变化:

name: "我的工作流"
version: "2.1.0"   # 大改/小改/修bug

你可以查看历史版本:

openclaw taskflow history my-workflow

20.4 Heartbeat(心跳机制)

Heartbeat 就像是 AI 的"定时闹钟"——每隔一段时间 AI 就会"醒来"看看有没有事要做。

为什么需要 Heartbeat?

有些任务不是定时触发的,而是周期性检查。比如:

  • 每 30 分钟检查一下邮箱有没有重要邮件
  • 每小时看看服务器状态
  • 每 15 分钟检查下日历有没有快到时间的会议

配置 Heartbeat

HEARTBEAT.md 文件中写检查清单:

# HEARTBEAT.md - 心跳检查清单

## 每轮检查
1. 📧 检查邮箱是否有重要邮件(只看标题,不下载附件)
2. 📅 检查未来 1 小时内的日历事件
3. ⚠️ 检查服务器 CPU > 90%

## 规则
- 深夜 23:00-08:00 除非紧急不要打扰我
- 如果我连续说"别烦我",安静 2 小时
- 3 次重复检查同一条新闻不提醒

Heartbeat 的执行周期

默认情况下,Heartbeat 每 30 分钟左右触发一次。每次触发时,AI 会:

  1. 读取 HEARTBEAT.md 的检查清单
  2. 逐项检查
  3. 如果有重要发现,主动通知你
  4. 如果没什么事,安静执行 HEARTBEAT_OK

心跳状态记录

OpenClaw 会用类似这样的文件记录检查历史:

{
  "lastChecks": {
    "email": 1750953600,
    "calendar": 1750951800,
    "weather": 1750948200,
    "server": 1750953000
  }
}

这样 AI 知道自己上次检查了哪些,避免重复检查。

自定义心跳频率

# openclaw.yaml
heartbeat:
  interval: 15      # 每 15 分钟检查一次(默认 30)
  quietHours:
    start: "23:00"
    end: "08:00"
  maxNotifications: 3   # 每轮最多主动提醒 3 次

[截图:Heartbeat 配置示例]

20.5 Cron(定时任务)

Cron 是比 Heartbeat 更精确的定时机制。如果你想"每天上午 9 点整执行某个任务",就用 Cron。

Cron 和 Heartbeat 的区别

特性 Heartbeat Cron
精度 约 30 分钟一次 精确到分钟
用途 周期性检查 精确定时执行
配置 HEARTBEAT.md openclaw.yaml
执行体 AI 自己判断做什么 执行指定 TaskFlow
适合 日常巡检 准点报时、定时任务

配置 Cron

# openclaw.yaml 中的定时任务
cron:
  jobs:
    - name: "晨会提醒"
      schedule: "0 9 * * 1-5"   # 工作日早上 9 点
      taskflow: "morning-brief.yaml"
      notify: push

    - name: "日报检查"
      schedule: "0 18 * * 1-5"   # 工作日下午 6 点
      taskflow: "check-report.yaml"

    - name: "周报提醒"
      schedule: "0 17 * * 5"     # 每周五下午 5 点
      action: "prompt"
      message: "该写周报了!"

    - name: "服务器备份"
      schedule: "0 3 * * 0"      # 每周日凌晨 3 点
      taskflow: "backup.yaml"

Cron 语法速查

* * * * *
┬ ┬ ┬ ┬ ┬
│ │ │ │ └── 星期 (0-7, 0=周日)
│ │ │ └──── 月份 (1-12)
│ │ └────── 日期 (1-31)
│ └──────── 小时 (0-23)
└────────── 分钟 (0-59)

常用示例:

  • */5 * * * * → 每 5 分钟
  • 0 9 * * 1-5 → 工作日早 9 点
  • 0 0 * * * → 每天午夜
  • 0 0 1 * * → 每月 1 号

[截图:Cron 定时任务的配置界面]

20.6 Webhook

Webhook 是"翻转的 API"——不是你去问 AI,而是别的服务来通知 AI。

典型场景

  • 📨 Gmail 收到邮件 → 通知 AI 处理
  • 🚀 GitHub 有新的 PR → 通知 AI 审查代码
  • 💬 Slack 有人 @你 → 让 AI 先回复
  • 📊 监控告警 → AI 自动排查问题

配置 Webhook

# openclaw.yaml
webhooks:
  - name: "github-pr"
    path: "/webhooks/github"
    secret: "your-webhook-secret"
    taskflow: "review-pr.yaml"
    
  - name: "email-incoming"
    path: "/webhooks/email"
    taskflow: "handle-email.yaml"

对外暴露 Webhook

要让外部服务能访问 Webhook,需要让 OpenClaw 可以从外网访问。安全做法是用 Tailscale Funnel(只暴露特定路径):

tailscale:
  funnel:
    - path: "/webhooks/github"
      public: true    # 只暴露这个路径

测试 Webhook

# 本地测试
curl -X POST http://127.0.0.1:18789/webhooks/github \
  -H "Content-Type: application/json" \
  -d '{"action": "opened", "pull_request": {"title": "fix bug"}}'

20.7 实战:搭建全天候自动化系统

下面我们创建一个完整的自动化系统,24 小时自动运转:

步骤 1:创建核心 TaskFlow

早间简报 (morning-routine.yaml):

name: "晨间自动化"
steps:
  - name: "查天气"         # 看看今天要不要带伞
    tool: web_fetch
    params:
      url: "https://wttr.in/Beijing?format=3"
    
  - name: "看日历"         # 今天有什么会
    tool: calendar_check
    
  - name: "查邮件"         # 有没有紧急邮件
    tool: email_check
    params:
      check_unread: true
      
  - name: "生成简报"       # 汇总成一条消息
    tool: prompt_llm
    params:
      system: >
        你是私人助理,根据天气、日历、邮件信息
        生成一段简洁的晨间播报。

步骤 2:设置 Cron 定时

cron:
  jobs:
    - name: "晨间播报"
      schedule: "30 8 * * 1-5"    # 工作日 8:30
      taskflow: "morning-routine.yaml"
      notify: push                 # 推送到手机

步骤 3:配置 Heartbeat 日常巡检

# HEARTBEAT.md 中加入
## 工作日巡检
- 检查日历:未来 30 分钟有会议就提醒
- 检查服务器:CPU > 85% 告警
- 检查待办:有逾期事项提醒

步骤 4:添加 Webhook

GitHub 有新的 PR → 自动运行代码检查 TaskFlow
Gmail 收到发票邮件 → 自动保存到财务文件夹

最终效果

📱 工作日 8:30 → 手机收到晨间简报
🔄 每 30 分钟 → 自动检查日历和服务器
🔔 有异常 → 立即推送通知
🚀 GitHub PR 来了 → 自动审查

[截图:完整的自动化运行日志]


20.8 自动化最佳实践

TaskFlow 设计原则

  1. 小步骤,可调试:每个步骤只做一件事。出错了好排查。
  2. 早加审批:敏感操作(发邮件、删文件)加 waiting_approval 步骤。
  3. 有限权限:给 TaskFlow 专用账号,最小权限。
  4. 记录日志:关键步骤记录日志,方便复盘。

调试技巧

# 查看 TaskFlow 执行日志
openclaw taskflow logs my-workflow

# 查看特定执行的详情
openclaw taskflow inspect my-workflow --run 3

# 重新运行失败的 TaskFlow
openclaw taskflow rerun my-workflow --from-step 2

避免无限循环

⚠️ 注意:如果 TaskFlow 里有个步骤会触发 Webhook,Webhook 又触发同样的 TaskFlow,就死循环了!

解决办法:在 TaskFlow 里加个"不被重复触发"的标记:

steps:
  - name: "检查来源"
    tool: condition
    params:
      # 如果是 Webhook 触发的,跳过某些步骤
      if: "{{trigger.source}} == 'webhook'"
      then: skip_to_next

20.9 本章小结

好了,这是全书最长也最重要的一章!你现在知道:

机制 用途 什么时候用
TaskFlow 多步骤工作流 需要反复执行的复杂任务
Heartbeat 周期性巡检 每 30 分钟检查一次
Cron 精确定时任务 每天准时执行
Webhook 外部事件触发 收到通知时触发

把它们组合起来,你的 AI 就能 24 小时自动运转,帮你处理各种事情。

下一章我们把 AI 部署到服务器上,让它真正"永远在线"!🚀


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