乐于分享
好东西不私藏

OpenClaw定时任务实战| 【AI实战派】

OpenClaw定时任务实战| 【AI实战派】

OpenClaw定时任务实战:Heartbeat vs Cron选型指南与避坑手册

当你用OpenClaw完成了第一个自动化任务,兴奋感还没消退,新的问题就来了:"怎么让它每天自动跑?"

这不是你一个人的困惑。从3月初我们开始用OpenClaw运营公众号,到现在每天早上6:52自动推送"晨间AI咖啡"、每天0:14自动整理协作档案,中间踩过不少坑。这篇文章把我们在实战中总结的Heartbeat和Cron选型经验分享给你。

━━━━━━━━━━━━━━

一、背景与问题:为什么传统自动化工具不够用

1.1 传统定时任务的三大痛点

如果你用过Linux的Crontab或Windows的计划任务,一定有这种体验:

痛点一:只管触发,不管上下文Cron到点就执行脚本,但脚本不知道"今天发生了什么"。比如你想让AI每天根据昨天的运营数据生成简报,传统Cron只能触发脚本,数据分析、内容生成、格式排版全得你自己写代码。

痛点二:黑盒运行,难以调试任务失败了?看日志吧。日志看不懂?慢慢排查。传统定时任务就像一个黑盒,跑通了还好,出问题就头疼。

痛点三:多任务管理混乱有5个定时任务,就得写5个脚本、配5条Cron表达式、管理5份日志。任务之间有依赖关系?自己写状态机吧。

1.2 OpenClaw的解法:把AI变成"有时间观念的助手"

OpenClaw给AI加上了"时间感知"能力,不只是"到点触发",而是:

  • 理解任务上下文(知道"今天"和"昨天"的区别)
  • 自主决策(判断"有没有重要事项需要汇报")
  • 自然交互(用对话的方式告诉你结果,而不是丢一份日志)

实现这个能力的核心机制,就是HeartbeatCron

━━━━━━━━━━━━━━

二、案例/方案详解:Heartbeat与Cron的核心区别

2.1 一句话记住两者的区别

机制
核心比喻
本质
Heartbeat
小区保安巡逻
周期性检查,按需提醒
Cron
手机闹钟
精确到点,准时执行

关键差异:

  • Heartbeat关注的是"有没有事",没事就静默;
  • Cron关注的是"到点了",到点必须执行。

2.2 Heartbeat详解:适合"批量巡检+智能判断"

工作原理:Heartbeat在主会话中以固定间隔运行(默认30分钟),每次运行时会:

  1. 读取工作区的HEARTBEAT.md文件(如果存在)
  2. 执行模型推理,判断是否有关键事项
  3. 如果响应包含HEARTBEAT_OK,则静默不打扰;否则发送通知

典型适用场景:

  • 每30分钟检查一次邮箱+日历+通知,批量处理
  • 判断"未来2小时内是否有会议",有则提醒
  • 监控项目状态,只在异常时报警

我们的实战案例:公众号运营巡检

我们的HEARTBEAT.md配置:

# 心跳检查清单- 检查今天晨间AI咖啡是否已发布- 查看是否有高优先级用户消息- 如果8小时以上未交互,发送轻量问候

每天早上,Heartbeat会自动检查"今天的文章发了没"。如果没发(比如6:52的Cron任务失败了),它会提醒我们手动补发;如果已发布,就静默返回HEARTBEAT_OK

Heartbeat的三大优势:

  1. 上下文感知:Agent拥有完整的主会话上下文,能智能判断优先级
  2. 批量处理:一次心跳可以检查邮件、日历、通知、项目状态,替代多个Cron任务
  3. 成本优化:单次运行只消耗一次Agent轮次,比多个独立Cron任务更便宜

2.3 Cron详解:适合"精确调度+独立任务"

工作原理:Cron在Gateway网关内部运行(而非模型内部),支持三种调度类型:

类型一:at — 一次性定时

{"schedule": { "kind""at""at""2026-03-17T16:00:00+08:00"  }}

适合:20分钟后提醒我、今天下午3点开会

类型二:every — 固定间隔循环

{"schedule": { "kind""every""everyMs"3600000// 1小时 = 3600000毫秒  }}

常用换算:5分钟=300000、30分钟=1800000、1小时=3600000

类型三:cron — Cron表达式(最灵活)

{"schedule": { "kind""cron""expr""0 9 * * *",  // 每天早上9点"tz""Asia/Shanghai"// 必须设置时区!  }}

⚠️ 最常见的坑:忘记设置tz字段如果不设时区,默认使用UTC。你配置的"早上9点"会变成北京时间下午5点。

典型适用场景:

  • 每天早上7:00准时发送日报
  • 每周一早上9:00生成周报
  • 每隔4小时检查一次竞品网站

我们的实战案例:晨间AI咖啡定时发布

我们的Cron任务配置(简化版):

{"name""晨间AI咖啡","schedule": {"kind""cron","expr""52 6 * * *",  // 每天早上6:52(避开整点)"tz""Asia/Shanghai"  },"sessionTarget""isolated","payload": {"kind""agentTurn","message""执行晨间AI咖啡发布任务...","thinking""high"  }}

选择sessionTarget: isolated的原因:

  1. 晨间AI咖啡是独立任务,不需要主会话上下文
  2. 隔离会话可以用不同的模型配置(比如用更强的模型处理复杂任务)
  3. 不会污染主会话的历史记录

Cron的三大优势:

  1. 精确定时:支持分钟级精度的Cron表达式
  2. 会话隔离:独立运行,不影响主会话
  3. 模型覆盖:可按任务指定不同模型(简单任务用便宜模型,复杂任务用强模型)

2.4 Heartbeat vs Cron 选型决策表

使用场景
推荐方案
原因
每30分钟检查邮箱+日历+通知
Heartbeat
批量合并,上下文感知
每天早上6:52准时发文章
Cron (isolated)
需要精确时间点
监控未来2小时的会议
Heartbeat
自然适合周期性检查
每周深度分析报告
Cron (isolated)
独立任务,可用更强模型
20分钟后提醒我
Cron (main, at)
一次性精确提醒
项目健康检查
Heartbeat
复用现有心跳周期

━━━━━━━━━━━━━━

三、效果与数据:我们的实战效果

3.1 晨间AI咖啡:从手动到全自动

执行数据(2026-03-05至今):

  • 总执行次数:13次
  • 成功率:76.9%(10次成功,3次失败)
  • 失败原因:2次API限流(7:00早高峰)、1次配图脚本错误
  • 平均执行时长:5-8分钟
  • Token消耗:约6-8万tokens/次

容错机制:我们设置了3层保障:

  1. 主任务:6:52执行
  2. 重试备份:7:52检查,如未生成则补发
  3. 最终重试:8:52检查,如仍未生成则人工介入

这种多层保障机制确保了即使单点故障,也不会漏发文章。

3.2 协作档案整理:Heartbeat批量检查+Cron定时触发

执行数据:

  • 执行频率:每天0:14
  • 执行时长:约3-5分钟
  • Token消耗:约3-4万tokens/次

效率提升:

  • 过去人工整理:每天约30分钟
  • 现在自动化:每天0分钟(完全自动)
  • 累计节省时间:3月5日至今约10小时

3.3 成本对比:Heartbeat vs Cron (isolated)

方案
单次Token消耗
10次/天成本
适用场景
Heartbeat
~3-5万tokens
$0.3-0.5
批量检查
Cron (isolated)
~6-8万tokens
$0.6-0.8
独立任务
5个独立Cron
~15-25万tokens
$1.5-2.5
多任务拆分

关键洞察: Heartbeat的批量处理能力,可以显著降低多任务场景下的总体成本。

━━━━━━━━━━━━━━

四、可复制经验:5分钟搭建你的第一个定时任务

4.1 第一步:明确你的需求

在配置之前,先回答三个问题:

  1. 需要精确时间吗? → 是:用Cron;否:考虑Heartbeat
  2. 需要主会话上下文吗? → 是:用Heartbeat或Cron(main);否:用Cron(isolated)
  3. 是单一任务还是批量检查? → 单一:用Cron;批量:用Heartbeat

4.2 第二步:配置Heartbeat(适合批量检查)

Step 1:创建HEARTBEAT.md文件

路径:~/.openclaw/workspace/HEARTBEAT.md

内容示例:

# 心跳检查清单## 每30分钟检查检查邮箱是否有紧急邮件(来自VIP联系人)查看未来2小时是否有日历事件检查待处理任务列表## 每日检查(8:00-22:00之间)如果超过8小时未交互,发送轻量问候检查项目关键指标是否正常

Step 2:配置心跳参数(可选)

openclaw.json中:

{"agents": {"defaults": {"heartbeat": {"intervalMinutes"30,"activeHours": {"start""08:00","end""23:00"        },"lightContext"true      }    }  }}

4.3 第三步:配置Cron(适合精确调度)

方式一:通过对话创建(推荐新手)

直接告诉你的Agent:

"创建一个cron任务,每天早上7点生成今日简报,检查邮件、日历和AI新闻,然后发送给我。"

Agent会自动解析意图,选择合适的调度类型,创建任务并确认。

方式二:通过CLI创建(适合精确控制)

# 每日晨报openclaw cron add \  --name "Morning brief" \  --cron "0 7 * * *" \  --tz "Asia/Shanghai" \  --session isolated \  --message "生成今日简报:检查邮件、日历、AI新闻" \  --announce# 一次性提醒(30分钟后)openclaw cron add \  --name "Reminder" \  --at "30m" \  --session main \  --system-event "提醒:会议即将开始" \  --wake now \  --delete-after-run# 每周深度分析(使用更强的模型)openclaw cron add \  --name "Weekly analysis" \  --cron "0 9 * * 1" \  --session isolated \  --message "生成本周深度分析报告" \  --model opus \  --thinking high \  --announce

4.4 第四步:测试与验证

测试Cron任务:

# 立即手动运行(不等待调度时间)openclaw cron run <job-id># 查看执行历史openclaw cron runs --id <job-id>

测试Heartbeat:直接发送HEARTBEAT_OK测试消息,观察Agent是否按预期响应。

4.5 第五步:避坑指南

坑点
现象
解决方案
忘记设置时区
"早上9点"变成"下午5点"
必须添加"tz": "Asia/Shanghai"
任务并发冲突
多个任务同时执行导致限流
错峰调度:6:52、7:52、8:52
上下文溢出
主会话历史太长,影响性能
复杂任务用session: isolated
成本失控
高频任务导致Token消耗过大
简单任务用便宜模型,或用Heartbeat批量处理
任务丢失
重启Gateway后任务消失
OpenClaw Cron会自动持久化,但建议定期openclaw cron list检查

━━━━━━━━━━━━━━

五、总结与展望:从"反应式"到"主动式"的AI自动化

5.1 核心心法

Heartbeat = 巡逻员:周期性感知,智能判断,按需提醒Cron = 闹钟:精确调度,准时执行,雷打不动

最高效的配置是两者结合

  • Heartbeat处理常规监控(批量检查、上下文感知)
  • Cron处理精确调度(定时报告、一次性提醒)

5.2 我们的演进路径

阶段一:反应式(3月初)

  • 每天早上手动问Agent:"今天有什么AI新闻?"
  • 每天晚上手动问:"今天完成了哪些任务?"

阶段二:半自动(3月中旬)

  • 用Cron设置早上7点自动推送晨报
  • 但内容质量不稳定,有时需要手动调整

阶段三:主动式(现在)

  • Heartbeat每30分钟巡检,确保任务正常执行
  • Cron精确调度晨间AI咖啡、协作档案整理等固定任务
  • 多层容错机制,单点故障不影响整体

5.3 趋势预判

随着OpenClaw等AI Agent框架的普及,"AI自动化"正在从"定时触发脚本"进化为"有时间观念的AI助手"。

2026年趋势:

  1. **从"人到AI"到"AI到人"**:不再是人主动问AI,而是AI主动在合适的时间推送合适的信息
  2. **从"单一任务"到"工作流编排"**:多个定时任务协同,形成完整的自动化工作流
  3. **从"固定时间"到"智能时机"**:AI不仅按时间表执行,还能根据上下文判断"现在是不是提醒的好时机"

给读者的建议:如果你刚开始用OpenClaw,建议从简单的Cron任务入手(比如"每天早上生成简报"),逐步加入Heartbeat进行批量检查。当两者配合顺畅后,你会发现:AI不再是一个"等你提问的工具",而是一个"主动帮你推进事情的助手"。

━━━━━━━━━━━━━━

数据来源清单

数据/事实
来源
日期
Heartbeat与Cron核心区别
OpenClaw官方文档
2026-02-01
Cron调度类型详解
OpenClaw官方文档
2026-03-07
Heartbeat工作原理
Comingbar实战指南
2026-03-07
实战案例:晨间AI咖啡执行数据
内部执行日志
2026-03-05至2026-03-17
实战案例:协作档案整理数据
内部执行日志
2026-03-05至2026-03-17
Cron成本优化建议
Stack Junkie自动化指南
2026-03-08
Heartbeat批量处理优势
51CTO技术文章
2026-02-27
时区设置注意事项
tbbbk进阶配置教程
2026-03-12

━━━━━━━━━━━━━━

💬 聊聊你的想法

你现在的自动化需求,更适合用Heartbeat还是Cron?如果有机会让AI帮你自动处理一项日常任务,你会选择什么?欢迎在评论区分享你的想法 👇


附:Cron表达式速查表

* * * * *│ │ │ │ ││ │ │ │ └─ 星期 (0-7, 0和7都是周日)│ │ │ └─── 月份 (1-12)│ │ └───── 日期 (1-31)│ └─────── 小时 (0-23)└───────── 分钟 (0-59)常用示例:0 9 * * *     每天早上9点0 9 * * 1     每周一早上9点0 9,18 * * *  每天9点和18点*/30 * * * *  每30分钟0 0 1 * *     每月1号零点

附:OpenClaw Cron常用命令

# 列出所有任务openclaw cron list# 立即运行某个任务(测试用)openclaw cron run <job-id># 查看任务执行历史openclaw cron runs --id <job-id># 启用/禁用任务openclaw cron enable <job-id>openclaw cron disable <job-id># 删除任务openclaw cron rm <job-id>