OpenClaw 实战(五):自动化与定时任务
真正的智能助手,不是等指令才动,而是知道什么时候该主动。
前几篇聊了 OpenClaw 的核心操作、Skills 系统、多 Agent 编排和记忆系统。有人问:”这些都挺好,但 AI 还是得我来唤醒。怎么能让它自己主动干活?”
这篇聊聊 OpenClaw 的自动化机制——让 AI 从”问答工具”变成”推进事情的助手”。
两个核心机制
OpenClaw 的自动化依赖两个机制:
- Heartbeat(心跳)
——定期巡检,看情况提醒 - Cron(定时任务)
——到点就执行,准时触发
用一个比喻区分:
Heartbeat = 巡逻员(定期巡检,没事不吵你)Cron = 闹钟(到点就响,不判断)
两者的区别在于是否需要”判断”:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这两种自动化任务的设置,可以直接编辑配置文件(HEARTBEAT.md、openclaw.json),或者也可以跟 OpenClaw 对话,让它代劳。
Heartbeat 配置示例
Heartbeat 适合需要”判断局势”的场景。比如:有紧急邮件才提醒、数据波动超 20% 才通知。没事就不打扰。
场景 1:运营人员——数据巡检
用户:工作时间每小时帮我检查核心数据DAU、转化率、GMV这三个指标, 如果波动超过 20% 就提醒。OpenClaw:已配置 Heartbeat 巡检:✅ 每小时检查核心数据指标(DAU、转化率、GMV)✅ 对比昨日同期,波动超过 20% 则提醒工作时间(9:00-18:00)生效。
OpenClaw 写入的 HEARTBEAT.md:
# 运营巡检## 每小时检查(工作时间 9:00-18:00)- 检查核心数据指标(DAU、转化率、GMV)- 对比昨日同期,波动超过 20% 则提醒- 检查活动页面是否正常访问
Heartbeat 每小时触发一次,AI 读取这个文件执行检查。数据正常就不通知,异常才提醒。
场景 2:通用——邮箱监控
用户:帮我盯着邮箱,有紧急邮件就提醒我。 另外如果 2 小时内有会议,也提前说一下。OpenClaw:已配置 Heartbeat 巡检: ✅ 检查邮箱,仅标记紧急邮件 ✅ 检查日历,2 小时内有会议则提醒 每 30 分钟巡检一次,有事才通知。
写入的 HEARTBEAT.md:
# HEARTBEAT.md## 每次检查- 检查邮箱,仅标记紧急邮件- 检查日历,2 小时内有会议则提醒
Cron 配置示例
Cron 适合”到点就执行”的场景。比如:每天早上提醒今日计划、每周五生成周报。不需要判断,到点就响。
场景 3:程序员——周报自动化
周五下午 5 点,别人还在回忆这周干了啥,周报已经躺在文件夹里了。
用户:每周五下午 5 点帮我生成周报, 内容基于本周在 GitLab 和 Jira 上的工作记录。OpenClaw:已创建定时任务: 17:00(每周五)- 生成周工作报告 ✅ 自动访问 GitLab 查询本周提交记录 ✅ 自动访问 Jira 查询本周任务状态 ✅ 汇总后输出到 workspace/reports/weekly-YYYY-MM-DD.md
OpenClaw 后台做了什么:
在做上述的对话后,OpenClaw会在openclaw.json中添加一条Cron任务
Cron 任务触发后,OpenClaw 会执行以下步骤:
- 访问 GitLab API
——查询本周的 commit 记录、PR 状态、代码审查情况 - 访问 Jira API
——查询本周完成的任务、进行中的任务、阻塞项 - 汇总分析
——将 Git 提交和 Jira 任务关联,生成结构化周报
生成的周报内容示例:
# 周工作报告 - 2026-04-20## 本周完成### 代码提交(GitLab)- feat: 用户登录模块重构(3 个 commit,review 已通过)- fix: 支付接口超时问题(1 个 commit,已合并到 main)- docs: API 文档更新(2 个 commit)### 任务完成(Jira)- PROJ-1234: 完成用户认证模块开发 ✅- PROJ-1235: 修复支付接口超时问题 ✅- PROJ-1236: 代码审查 2 个 PR## 进行中- PROJ-1237: 订单系统重构(进度 60%,预计下周三完成)## 阻塞项- 无## 下周计划- 完成订单系统重构- 参与 PROJ-1240 需求评审
OpenClaw 可以通过接口直接访问 GitLab 和 Jira,自动汇总本周的工作情况。只需要在第一次配置时授权访问这些工具。
Cron 任务能执行多步骤操作吗? 能。Cron 触发后,Agent 收到 --message 的内容,会自己决定怎么一步步完成–访问 API、读取文件、写入结果,都不需要额外创建 Skill。Agent 本身就是一个能调用工具的 AI,多步骤任务它自己就能拆解执行。只有当流程复杂到需要重复使用时,才建议封装成 Skill。
场景 4:产品经理——需求评审提醒
产品经理的日常:上午拉需求评审会,下午和开发对细节,晚上才想起来——评审纪要还没发,待办事项也没跟进。
用户:每天早上 9 点帮我检查当天的会议安排, 列出每个会议的会前准备事项, 每天下午 5 点检查本周待办事项有没有快到截止日期的。OpenClaw:已创建 2 个定时任务: ✅ 09:00(每天)- 今日会议提醒 ✅ 17:00(每天)- 待办事项检查
OpenClaw 后台做了什么:
# 任务 1:每日会议提醒openclaw cron add \ --name "今日会议提醒" \ --cron "0 9 * * 1-5" \ --tz "Asia/Shanghai" \ --session main \ --message "检查今天日历中的需求评审会,列出每个会议的时间、参与人和需要准备的材料。"# 任务 2:待办检查openclaw cron add \ --name "待办检查" \ --cron "0 17 * * 1-5" \ --tz "Asia/Shanghai" \ --session main \ --message "提醒:检查本周待办事项,标记快到截止日期的。"
实际运行流程:
每天早上 9:00,OpenClaw 会执行以下步骤:
- 读取日历
——检查今天有哪些需求评审会,获取会议时间和参与人 - 输出提醒列表
——告诉你今天有哪些会议,需要准备什么
示例输出:
今日会议提醒(4 月 24 日 周五):📋 10:00 需求评审会(张三、李四) 需要准备:PRD v2.3、用户故事、原型图📋 14:00 客户需求讨论(王五) 需要准备:需求文档、历史反馈记录共 2 个会议。
读取日历的工作可以通过skills或插件完成,提前设置好授权,openclaw会自行调用工具。
场景 5:实施工程师——项目进度日报
实施工程师手里同时有好几个项目在推进。A 客户部署到 UAT 阶段,B 客户在做数据迁移,C 客户刚签完合同准备进场。平时就可以用openclaw来协助处理各个项目上的问题,给出处理意见以及记录进展,然后就可以通过其记录的项目情况进行总结。
用户:每天早上 9 点帮我汇总手头所有项目的当前进度, 标记有阻塞项的项目, 每周五下午 4 点生成项目周报。OpenClaw:已创建 2 个定时任务: ✅ 09:00(每天)- 今日项目进度汇总 ✅ 16:00(每周五)- 项目周报生成
OpenClaw 后台做了什么:
# 任务 1:每日项目进度汇总openclaw cron add \ --name "项目进度汇总" \ --cron "0 9 * * 1-5" \ --tz "Asia/Shanghai" \ --session main \ --message "检查 workspace/projects/ 下的项目状态文件,汇总各项目的当前阶段、进度百分比、阻塞项,输出今日项目进度列表。"# 任务 2:项目周报openclaw cron add \ --name "项目周报" \ --cron "0 16 * * 5" \ --tz "Asia/Shanghai" \ --session isolated \ --message "汇总本周各项目的实施进度、本周完成事项、下周计划、风险项,输出到 workspace/reports/project-weekly.md"
实际运行流程:
每天早上 9:00,OpenClaw 会:
- 读取项目状态文件
——从 workspace/projects/ 读取每个项目的进度记录 - 汇总当前状态
——列出各项目的阶段、进度、阻塞项 - 标记风险
——有阻塞项的项目会特别标注
示例输出:
今日项目进度(4 月 24 日 周五):📋 A 客户 - UAT 阶段(进度 75%) 当前:用户验收测试中 阻塞:客户侧测试环境不稳定📋 B 客户 - 数据迁移(进度 40%) 当前:历史数据清洗中 阻塞:无📋 C 客户 - 项目启动(进度 15%) 当前:需求调研已完成,准备进场 阻塞:无⚠️ 1 个项目有阻塞项(A 客户)
调整配置
设置好后,想改时间或取消任务,直接说就行:
用户:把周报时间改到周五下午 4 点OpenClaw:已将"周报生成"任务从 17:00 调整为 16:00。用户:取消会议纪要提醒OpenClaw:已删除"会议纪要提醒"任务。用户:查看我有哪些定时任务OpenClaw:当前有 3 个定时任务: ✅ 09:00- 今日客户日程提醒(已启用) ✅ 16:00- 客户实施周报(已启用) ✅ 17:45- 下班收尾(已启用)
Cron参数说明: –message 和 –system-event 的区别
创建 Cron 任务时,有两个常用参数:--message 和 --system-event。它们有什么区别?
–message
AI 会像处理用户消息一样处理它。可以执行复杂操作:读取文件、调用 API、生成报告等。
openclaw cron add \ --name "周报生成" \ --cron "0 17 * * 5" \ --session isolated \ --message "根据本周 workspace/daily-log.md 的内容,生成一份周报。"
适用场景: 需要 AI 执行操作(读取数据、生成内容、调用工具)。
–system-event
系统提醒类通知。AI 直接输出预设的提醒文本,不执行复杂操作。
openclaw cron add \ --name "日报提醒" \ --cron "0 18 * * 1-5" \ --session main \ --system-event "提醒:现在是 18:00,请提交今日工作日报。"
适用场景: 简单的提醒通知,不需要 AI 读取数据或执行操作。
选择建议
|
|
|
|
|---|---|---|
|
|
--message |
|
|
|
--message |
|
|
|
--message |
|
|
|
--system-event |
|
简单原则: 需要 AI “干活”用 --message,只需要 AI “喊你”用 --system-event。显然 “干活” 需要消耗更多的token。
Heartbeat 的 token 消耗
Heartbeat 是定期巡检机制,每次触发都会消耗 token。配置不当,成本会很高。
一组参考数据:
|
|
|
|
|
|---|---|---|---|
|
|
|
800 token |
|
|
|
|
800 token |
|
|
|
|
800 token |
|
77,000 token 接近很多大模型的上下文窗口上限。一天跑下来,光 Heartbeat 就能消耗大量 token。
节约 token 的几个要点
1. 频率间隔别太低
30 分钟是推荐的默认值。除非需要实时监控服务器,否则别设 15 分钟。
2. HEARTBEAT.md 要精简
HEARTBEAT.md 是每次巡检的指令,越长消耗越多。
❌ 太长:
# HEARTBEAT.md## 每次检查- 检查邮件(列出所有未读邮件,按优先级排序,标记重要邮件,摘要内容)- 检查日历(列出今天所有会议,包括会议标题、时间、参与人、需要准备的材料)- 检查待办(列出所有未完成待办,按截止日期排序,标记即将到期的)
✅ 精简:
# HEARTBEAT.md## 每次检查- 检查邮箱,仅标记紧急邮件- 检查日历,2 小时内有会议则提醒
指令短,消耗少。AI 判断没事就回 HEARTBEAT_OK,不消耗额外 token。
3. 重巡检用 Cron 替代
有明确固定时间的任务,能用 Cron 就不要用 Heartbeat ,可以节约 token:
用户:每天下午 6 点帮我生成日报OpenClaw:已创建定时任务: ✅ 18:00 - 生成今日工作日报
这样不需要 Heartbeat 反复检查”现在是不是 18:00″。
4. 非工作时间关闭
HEARTBEAT.md 里设置非工作时间不检查:
# HEARTBEAT.md## 工作时间(周一至周五 9:00-18:00)- 检查邮箱,仅标记紧急邮件- 检查日历,2 小时内有会议则提醒## 非工作时间- 直接回复 HEARTBEAT_OK
晚上和周末几乎不消耗 token。
成本对比
|
|
|
|
|---|---|---|
|
|
150,000 |
|
|
|
15,000 |
|
|
|
7,500 |
|
|
|
3,000 |
|
Heartbeat 不是越勤越好。30 分钟 + 精简 HEARTBEAT.md + 非工作时间关闭,是大多数人的最优配置。
避坑指南:自动化配置的常见问题
问题一:Heartbeat 负载过重
现象: 每次巡检都执行大量检查项,token 消耗高、通知频繁。
原因: 把所有任务都塞给 Heartbeat,包括重任务(如生成报告、数据分析)。
解决: 重任务用 Cron,轻巡检用 Heartbeat。Heartbeat 只负责”看情况、抓异常”。
问题二:Cron 任务过密
现象: 频繁收到通知,被打断工作节奏。
原因: Cron 设得过密,任务设置的太多太频繁。
解决: 从每天 1-2 个工作关键节点开始,有必要再逐步增加。
问题三:时区配置错误
现象: “早上 9 点”的任务在北京时间 17 点才执行。
原因: Cron 默认使用 UTC 时间,未配置时区。
解决: 对话时说明时区,OpenClaw 会自动加上 --tz "Asia/Shanghai"。
最后
Heartbeat 解决的是”主动发现”的问题,Cron 解决的是”准时执行”的问题。
两者配合好,AI 助手就能从”被动应答”变成”主动推进”——设置一次,受益很久。
自动化不是让 AI 做更多的事,而是让正确的事在正确的时间自动发生。
夜雨聆风