用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 * * * 0 */2 * * * 30 6 * * 1-5 0 23 * * * 0 9 * * 1
|
OpenClaw 支持标准 5 位 Cron 格式。如果你想验证表达式,可以用 crontab.guru 这个网站可视化调试。
第二步:搭建你的第一个自动化任务
以「早间新闻简报」为例,完整走一遍配置流程。
任务目标
每天早上 8:00,自动搜索以下内容并整理成简报推送到 Telegram:
- AI/科技行业今日要闻(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
- 给 @userinfobot 发一条消息,它会返回你的 Chat ID(纯数字)
- 或者在 OpenClaw 的日志里查看,
received message from: <chatId>
启动任务
1 2
| openclaw task enable morning-brief openclaw task list
|
第三步:用多 Agent 协作处理复杂任务
单 Agent 只能做单线程的事,但很多复杂任务需要多个 Agent 分工。比如每周的项目进度报告,需要:
- 猎人 Agent — 搜集行业动态
- 阿特 Agent — 整理项目内部进度
- 百炼 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 从「你问它答」升级成「它主动为你服务」的关键。
核心逻辑就三条:
- 定义触发条件(Cron 表达式)
- 描述任务目标(Prompt)
- 指定推送渠道(Telegram / Email / 飞书)
把这三件事配置好,你的 AI 助手就变成了 7×24 小时全年无休的数字员工。
下一步,建议你先从「早间新闻简报」开始跑通整个流程,感受一下 AI 主动推送的体验——那是你真正感受到 AI 生产力的时刻。
有问题欢迎评论区交流,说说你在 OpenClaw 上跑过哪些有趣的任务?