乐于分享
好东西不私藏

OpenClaw官方文档里的时间哲学:Cron和Heartbeat

OpenClaw官方文档里的时间哲学:Cron和Heartbeat

系列:JS 的养虾日记 · 第 20 篇

相信很多养虾人装了 OpenClaw,

就是为了跑自动任务,像什么早报,自动提醒之类。

我之前就设置十几个 cron 任务,

然后手机每分钟都在震——

「prism 处理完成」。

「link-collector 队列空」。

「X.com 无新推文」。

90% 的通知都是「今日无事」。

我就想,有什么更好的方式来管理龙虾的提醒?

于是我花了一整个下午(用🦞)读官方文档。

然后发现——这不是技术选择,是时间观的选择


藏在文档里的三种时间

OpenClaw 的自动化文档有四份。

cron-jobs.mdheartbeat.mdcron-vs-heartbeat.mdhooks.md

如果你把它们放在一起读,会发现一个隐藏的主题——时间不是只有一种形态

Cron 是这样的

「wakes the agent at the right time

关键词:right time(正确的时间)。精确、确定、可预测。

Heartbeat 是这样的

「runs periodic agent turns… without spamming you

关键词:periodic(周期的)、without spamming you(不打扰你)。灵活、有机、会自己判断。

一个是「到点必做」。

一个是「大约检查一下,没事别说话」。

它们的用法场景可以理解为是两种时间观


工业时间:Cron 的精确与噪音

Cron 是工业时间

像工厂流水线,9点做什么、10点做什么,分秒不差。

这种精确性有它的价值。数据处理、监控采集、内容同步——这些任务的「做什么」和「什么时候做」都是确定的,不需要判断。

但问题也在这儿。

它不会自己判断「今天有没有必要做」。

哪怕队列为空、哪怕没有新内容,到点它还是会跑。就像一个尽职但有点呆板的员工,严格执行命令,不管命令有没有意义。

我见过最极端的例子:有人设置了 50 个 cron 任务,每小时跑一遍。

结果是手机每分钟都在震动,但 90% 都是「今日无事」。

这就是工业时间的代价——确定性换来了噪音。


生物时间:Heartbeat 的有机与降噪

Heartbeat 是生物时间

像心脏跳动,不是精确到秒,而是按需调节。

关键区别是:它自己判断该不该说

如果一切正常,JS_CLAW 回复 HEARTBEAT_OK,我收不到任何消息。只有当有事情要汇报时,它才会推送。

文档里有一句话,我第一次读的时候跳过了:

without spamming you

第二次读才懂——这不是功能描述,是设计哲学。尊重你的注意力完整性。

工业时间把你的注意力切成碎片(「9点了,该处理任务了」)。

生物时间保护你的注意力完整性(「没事,别打扰你」)。

最妙的是那个沉默。

HEARTBEAT_OK 的静默是有信息的——「一切正常,无需打扰」。这比每分钟检查一次然后发现「没事」要高效得多。


第三种时间:Hooks 的条件反射

这是事件时间——发生某件事时,自动执行,没有延迟,没有唤醒,连判断都省了。

我启用了几个:

  • 执行 /new 时,自动保存会话记忆
  • Gateway 启动时,自动初始化
  • 有新命令时,自动记审计日志

这些都是条件反射——不需要检查,不需要汇报,发生时自动做。

如果把三种时间放在一起看:

时间形态 感觉像 适合干什么
工业时间 (Cron) 工厂流水线 确定性的机械任务
生物时间 (Heartbeat) 心脏跳动 需要判断的检查任务
事件时间 (Hooks) 条件反射 发生即做的反射任务

我的龙虾是怎么分工的

现在我的系统是这样跑的。

工业时间留给:数据处理、监控采集、内容同步

  • JS_CLAW 的 prism 自动处理:每小时一次
  • X.com 监控:每 30 分钟
  • 博客同步:每 2 小时

这些任务的「做什么」和「什么时候做」都是确定的,不需要判断。

生物时间分配给:记忆维护、状态检查

  • 每 30 分钟检查一次对话
  • 有重要内容才写回 memory
  • 没事就回复 HEARTBEAT_OK

把判断权部分移交给 AI,减少无意义的通知。

事件时间留给:自动保存、自动审计、自动初始化

  • 用户无感知,后台默默跑

三层时间各司其职,JS_CLAW 从一个「到点就响的闹钟」,变成了一个「会自己判断该不该说话的伙伴」。


最难的切换:敢不敢放手

说实话,配置不难,难的是心态

我们习惯了工业时间思维——「我得精确控制每一步」。Heartbeat 要求你接受不确定性:它不会精确到分钟唤醒,汇报也不是定时的。

一开始我会焦虑:「它真的在检查吗?」「会不会漏掉重要的事?」

但运行两周后,我发现一个反直觉的事实:心跳不规律,反而让我更安心

因为我终于不用每隔 10 分钟就想检查一下了。系统自己知道什么时候该说,什么时候该沉默。

工业时间思维 生物时间思维
「我得盯着它」 「它在处理,我看报告就行」
注意力被切碎 整块保留,按需打断
AI 是执行工具 AI 是半自主伙伴

最艰难的转变是接受「不完美」——Heartbeat 不会像 Cron 那样准时,但这是特性,不是 bug。

偶尔的空转和延迟,换来的是注意力完整性。

信任需要时间建立。

less control , more intelligence


给你的三步建议

如果你想尝试这种切换,建议分三步走。

第一步:识别你的任务

列出你每天手动检查 AI 的任务,然后分类:

  • 机械任务(做什么、什么时候做都确定)→ 工业时间
  • 检查任务(需要判断有没有异常)→ 生物时间
  • 反射任务(发生即做,无副作用)→ 事件时间

第二步:先叠加,再替换

不要直接砍掉 cron,先叠加 heartbeat。对比两种模式的体验差异,逐步把「检查型任务」迁移过去。

第三步:接受「不完美」

Heartbeat 不会精确到分钟,这是好事。偶尔的空转,换来的是注意力完整性。


时间的形态,决定共生的方式

养虾养了2个多月,我终于明白一件事:AI 不是钟表,是伙伴

工业时间让我们效率最大化,生物时间让我们共生最自然。

两种时间形态没有高下,关键是放在对的地方

最后,官方文档是个好东西,可被很多人忽视。

以上~谢谢你看我的文章,我们,下次再见。

系列:JS 的养虾日记 · 第 20 篇
2026-04-06