第 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 会:
- 读取
HEARTBEAT.md的检查清单 - 逐项检查
- 如果有重要发现,主动通知你
- 如果没什么事,安静执行
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 设计原则
- 小步骤,可调试:每个步骤只做一件事。出错了好排查。
- 早加审批:敏感操作(发邮件、删文件)加
waiting_approval步骤。 - 有限权限:给 TaskFlow 专用账号,最小权限。
- 记录日志:关键步骤记录日志,方便复盘。
调试技巧
# 查看 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 部署到服务器上,让它真正"永远在线"!🚀
系统教程,帮你把工具用好,再回到任务中。 浏览任务方案 →