用OpenClaw+定时任务:我如何用AI自动完成每天80%的重复工作

很多人装了 OpenClaw 之后,第一件事是拿来聊天——问天气、查汇率、让它讲个笑话。这没有错,但这完全浪费了 OpenClaw 最强大的能力:定时任务 + 多 Agent 协作 + 多渠道推送

我用了三个月,把 OpenClaw 打造成了真正 7×24 小时运转的私人 AI 工作流引擎。现在每天早上我到公司,邮箱里已经有三份 AI 整理好的报告在等着我:今日新闻、市场动态、项目进度更新。

不是我在用 AI,是 AI 在替我工作。

本文是我的实战经验,手把手教你从零搭建这套系统。


为什么定时任务才是 OpenClaw 的灵魂

OpenClaw 的定时任务系统本质上是把 AI 的能力变成一个可重复触发的自动化服务

普通 ChatGPT 用法:你在电脑前 → 打开对话 → 输入问题 → 等回复 → 关闭对话。

AI 工作流用法:OpenClaw 在后台 → 定时触发 → AI 自动搜集信息 → 整理 → 推送到你的 Telegram/微信/邮箱 → 你只需要看结论。

一个是被动响应,一个是主动服务。 差距是本质性的。

我每天节省的 2 小时,来自这三个自动化任务:

任务 触发时间 节省时间
早间新闻简报 每天 08:00 30 分钟
竞品动态监控 每 2 小时 1 小时
日报/周报生成 每天 18:00 30 分钟

第一步:理解 Cron 表达式(3分钟)

定时任务的核心是 Cron 表达式,很多人一看到就头大。其实只需要记住一个公式:

1
2
3
4
5
6
7
分 时 日 月 周
┗━┛┗━┛┗━┛┗━┛
│ │ │ │ └─ 星期几(0-7,0和7都是周日)
│ │ │ └──── 月份(1-12)
│ │ └─────── 日期(1-31)
│ └────────── 小时(0-23)
└───────────── 分钟(0-59)

最常用的 5 个表达式:

1
2
3
4
5
0 8 * * *          # 每天早上8点
0 */2 * * * # 每2小时
30 6 * * 1-5 # 工作日早上6:30
0 23 * * * # 每天晚上11点
0 9 * * 1 # 每周一早上9点

OpenClaw 支持标准 5 位 Cron 格式。如果你想验证表达式,可以用 crontab.guru 这个网站可视化调试。


第二步:搭建你的第一个自动化任务

以「早间新闻简报」为例,完整走一遍配置流程。

任务目标

每天早上 8:00,自动搜索以下内容并整理成简报推送到 Telegram:

  1. AI/科技行业今日要闻(3条)
  2. 加密货币/二级市场动态
  3. 今日天气提醒

配置文件

~/.openclaw/tasks/morning-brief.json 中创建:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"name": "早间新闻简报",
"enabled": true,
"schedule": "0 8 * * *",
"model": "minimax/MiniMax-M2.7",
"prompt": "请搜索今日(当前日期)的AI科技行业重要新闻,整理成简洁的要点格式,每条不超过50字,最后附上今日天气提醒(城市:上海)。输出格式:【要闻】+ 【市场】+ 【天气】,总字数控制在300字以内。",
"delivery": {
"mode": "telegram",
"chatId": "你的Telegram_Chat_ID"
},
"retry": {
"enabled": true,
"maxAttempts": 3,
"delayMs": 60000
},
"timezone": "Asia/Shanghai"
}

获取你的 Telegram Chat ID

  1. @userinfobot 发一条消息,它会返回你的 Chat ID(纯数字)
  2. 或者在 OpenClaw 的日志里查看,received message from: <chatId>

启动任务

1
2
openclaw task enable morning-brief
openclaw task list # 查看所有任务状态

第三步:用多 Agent 协作处理复杂任务

单 Agent 只能做单线程的事,但很多复杂任务需要多个 Agent 分工。比如每周的项目进度报告,需要:

  1. 猎人 Agent — 搜集行业动态
  2. 阿特 Agent — 整理项目内部进度
  3. 百炼 Agent — 生成最终报告文本

OpenClaw 支持 Agent 间的消息传递,可以这样配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
"name": "每周项目报告",
"schedule": "0 18 * * 5",
"agents": ["hunter", "at", "baiolian"],
"pipeline": [
{
"agent": "hunter",
"task": "搜集本周AI行业3条重要动态",
"outputKey": "industry_news"
},
{
"agent": "at",
"task": "从 ~/projects/ 中读取本周代码提交记录,整理进度摘要",
"outputKey": "project_progress"
},
{
"agent": "baiolian",
"inputKeys": ["industry_news", "project_progress"],
"task": "将以上两条信息整合成一份结构清晰的周报,格式:【行业动态】+ 【项目进度】+ 【下周计划占位】",
"outputKey": "final_report"
}
],
"delivery": {
"mode": "telegram",
"chatId": "你的Chat_ID"
}
}

关键点: 每个 Agent 的 outputKey 成为下一个 Agent 的输入,形成真正的流水线。这比让一个 Agent 自己完成所有工作更高效,也更稳定。


第四步:3个真实案例,从入门到精通

案例1:加密货币价格监控(适合有持仓的人)

很多人买了币之后忍不住每隔几分钟就看一眼价格,浪费时间又影响心情。自动化之后,你只需要在价格异动时收到通知。

1
2
3
4
5
6
7
8
9
10
{
"name": "币价异动告警",
"schedule": "*/15 6-23 * * *",
"prompt": "查询BTC、ETH当前价格,与15分钟前对比。如果涨跌幅超过3%,输出【急涨/急跌】+ 当前价格 + 24h涨跌幅。如果涨跌幅在1%-3%之间,输出【温和波动】。涨跌幅在1%以内则不输出任何内容(静默)。",
"delivery": {
"mode": "telegram",
"chatId": "你的Chat_ID",
"onlyWhen": "significant_change"
}
}

onlyWhen: "significant_change" 是关键:这个配置告诉 OpenClaw,只有当任务有实际输出时才推送,避免每天收到大量无意义的”价格稳定”消息。

案例2:竞品动态监控(适合创业者/产品经理)

1
2
3
4
5
6
7
8
9
{
"name": "竞品监控",
"schedule": "0 10,14,17 * * *",
"prompt": "搜索以下关键词的最新信息:1) [竞品A名称] 更新 2) [竞品B名称] 新闻 3) [行业关键词] 知乎/微博。整理每条竞品的最新动态,不超过5条,超时自动截断。",
"delivery": {
"mode": "telegram",
"chatId": "你的Chat_ID"
}
}

每天三个时间点推送,竞品一有新动作你就知道,比手动搜索快 3 个小时。

案例3:每日代码质量报告(适合技术负责人)

1
2
3
4
5
6
7
8
9
{
"name": "代码质量日报",
"schedule": "0 9 * * *",
"prompt": "读取 ~/projects/ 目录下的 git log(昨日至今),统计:1) 提交数量 2) 新增/删除代码行数 3) 提交最多的人 4) 有无 merge request。如有测试失败,标注【测试告警】。输出markdown格式。",
"delivery": {
"mode": "telegram",
"chatId": "你的Chat_ID"
}
}

进阶技巧:让AI主动判断何时推送

默认的定时任务是”时间触发”,但还有一种更智能的模式:条件触发

例如,我设置了一个任务每小时检查我的 GitHub Actions 状态,只有在 CI 失败时才推送告警:

1
2
3
4
5
6
7
8
9
10
{
"name": "CI监控",
"schedule": "0 * * * *",
"prompt": "调用 GitHub API 检查你的仓库 [用户名/仓库名] 的最新 Actions 运行状态。如果状态是 failure,输出【CI告警】+ 工作流名称 + 失败原因链接。如果状态是 success,则静默。",
"delivery": {
"mode": "telegram",
"chatId": "你的Chat_ID",
"onlyWhen": "has_output"
}
}

这样你不会每小时收到”CI正常”的骚扰,只有真正出问题的时候才被叫醒。


常见坑与避坑指南

坑1:Chat ID 写错了,推送石沉大海

Telegram Bot 只能给已激活对话的用户发消息。如果你的 Bot 没有和用户建立过对话,sendMessage 会静默失败。

解决: 在正式使用前,先手动给 Bot 发一条消息建立连接,然后运行:

1
openclaw debug telegram --chatId 你的ID --message "test"

确认能收到消息后再配置正式任务。

坑2:Cron 时间是 UTC,不是本地时间

OpenClaw 默认使用 UTC 时区。如果你在中国(UTC+8),0 8 * * * 实际上是北京时间 16:00

解决: 在任务配置里加上 "timezone": "Asia/Shanghai",或者把小时减 8。

坑3:任务输出太长被截断

如果 AI 输出超过 Telegram 消息限制(4096 字符),内容会被截断。

解决: 在 prompt 里明确加一句约束:「输出总字数不超过800字,超长自动截断」。

坑4:模型响应超时,任务直接失败

网络波动或模型负载高时,API 可能超时,任务就丢了。

解决: 开启重试机制:

1
2
3
4
5
"retry": {
"enabled": true,
"maxAttempts": 3,
"delayMs": 30000
}

我的完整工作流配置参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
"tasks": {
"morning_brief": {
"schedule": "0 8 * * *",
"timezone": "Asia/Shanghai",
"model": "minimax/MiniMax-M2.7",
"prompt": "...",
"delivery": { "mode": "telegram", "chatId": "xxx" }
},
"ci_monitor": {
"schedule": "0 * * * *",
"timezone": "Asia/Shanghai",
"model": "minimax/MiniMax-M2.7",
"prompt": "...",
"delivery": { "mode": "telegram", "chatId": "xxx" },
"onlyWhen": "has_output"
},
"weekly_report": {
"schedule": "0 18 * * 5",
"timezone": "Asia/Shanghai",
"agents": ["hunter", "at", "baiolian"],
"pipeline": [...]
}
}
}

完整配置放在 GitHub Gist,链接在评论区。


总结

OpenClaw 的定时任务系统,是把 AI 从「你问它答」升级成「它主动为你服务」的关键。

核心逻辑就三条:

  1. 定义触发条件(Cron 表达式)
  2. 描述任务目标(Prompt)
  3. 指定推送渠道(Telegram / Email / 飞书)

把这三件事配置好,你的 AI 助手就变成了 7×24 小时全年无休的数字员工。

下一步,建议你先从「早间新闻简报」开始跑通整个流程,感受一下 AI 主动推送的体验——那是你真正感受到 AI 生产力的时刻。


有问题欢迎评论区交流,说说你在 OpenClaw 上跑过哪些有趣的任务?