Heartbeat
像助理隔一会儿出来巡一圈,看看你有没有漏掉的事,或者系统有没有该提醒的地方。
Gateway 导读
Heartbeat 在主会话中定期触发一次 agent turn,让模型主动检查待办、提醒你,但不会创建后台任务记录。新手先配好间隔和 target(默认不发送消息,设 "last" 才发到最近联系人),再写一份 HEARTBEAT.md 让模型知道要做什么。最容易搞错的是:Heartbeat 和 Cron 是两回事——Cron 跑后台任务,Heartbeat 跑主会话。
先讲这一页到底在解决什么
Heartbeat 在主会话中定期触发一次 agent turn,让模型主动检查待办、提醒你,但不会创建后台任务记录。新手先配好间隔和 target(默认不发送消息,设 "last" 才发到最近联系人),再写一份 HEARTBEAT.md 让模型知道要做什么。最容易搞错的是:Heartbeat 和 Cron 是两回事——Cron 跑后台任务,Heartbeat 跑主会话。
第一眼
官方开头就把这个分野点出来了。Heartbeat 更像“看看有什么需要关注”,Cron 更像“按时去做那件固定事”。
像助理隔一会儿出来巡一圈,看看你有没有漏掉的事,或者系统有没有该提醒的地方。
像定时工人,到点就干固定活,不太讲临场判断。
Heartbeat 的默认性格是“没事就安静一点”,不是每次都必须发很长一段话。
Heartbeat 是会判断、会收敛的巡逻,不是死板的定时播报。
快速上手
这一段看着长,翻成动作后就很简单。
默认是 30 分钟一圈,某些 Anthropic 登录方式会变成 1 小时一圈。你也可以自己改。
HEARTBEAT.md像在巡逻员口袋里塞一张小清单,告诉它每次巡逻优先看什么。
target: "none" 像“巡完先记着,不主动敲门”,target: "last" 像“去找最近联系的那个人”。
这些都像给巡逻员换装备:要不要多讲一点、要不要轻装、要不要走单独巡逻本、要不要只在白天上班。
命令与配置翻译
把配置块翻成人话后,就很像一份值班表。
every: "30m"像写在值班表上的“每 30 分钟出来巡一圈”。如果写成 0m,就等于今天不排班。
target: "last"像说“如果真有事,就去找上次联系的那个人”。默认的 none 则更保守。
lightContext: true像巡逻时只带一张最关键的小抄,不把整箱旧聊天记录都背在身上。
isolatedSession: true像每次巡逻都开一本新的巡逻记录本,不把之前长长的聊天故事又整本拖进来。
最重要的口令
HEARTBEAT_OK 像“巡逻完毕,一切正常”的回执章这块很关键。因为它决定了没事的时候,系统怎么优雅地安静下来。
HEARTBEAT_OK像巡逻员回来说:“都正常。”如果只是这一句,OpenClaw 会把它当作安静确认,不再专门把它送出来吵你。
ackMaxChars像说“这张回执章后面最多还能跟多少小字”。太长就不算安静回执了。
如果是警报,就直接说警报,不要再贴 HEARTBEAT_OK 这枚“没事”章。
HEARTBEAT_OK 是安静退场口令,不是万能装饰词。
高级排班
官方把这些场景都展开了。看成排班表就很容易懂。
activeHours像规定巡逻员只在白天上班。夜里别乱敲门。
像大楼里有好几个小助理,但只有某几个需要轮流巡逻。
accountId像多账号通道时,明确说“这次让哪位值班机器人去送提醒”。
开始时间和结束时间别写成一样,不然就像排了一个宽度为零的班表,结果永远不上班。
最后总结
Heartbeat 就是 OpenClaw 的定时小巡逻:多久巡一次、巡逻时带什么小纸条、什么时候安静收工、什么时候把提醒送出来,全都靠这份排班表来定。
如果你想看“巡逻过程中留下的后台记录怎么查”,下一页可以去 /gateway/logging。