订阅

新文章,直接发到你的邮箱。

无垃圾邮件,随时取消。

← 返回博客
OpenClaw Heartbeat 详解

OpenClaw Heartbeat 详解

谁是主动的?谁是被动的?这个问题是 AI agent 设计的首要问题。

今天的 AI agent,绝大多数是被动的。你不说话,它就不动。你去开会,它就发呆。你的收件箱涌进了十封紧急邮件,它一封也看不见。日历上的会议还有五分钟开始,它一个字也不提醒。后台任务早就跑完了,它闷在那里,等你想起来去问。

这种 agent,说到底,是个工具。你拿起来它才有用,你放下去它就是死的。

OpenClaw 的 Heartbeat 要解决的,就是这个问题。

一、Heartbeat 是什么

Heartbeat 是一个闹钟。每隔 30 分钟响一次。响了,agent 就醒。醒了,它照着你事先列好的清单,逐条检查。有事,报告你。没事,回一句 HEARTBEAT_OK,系统把这句话吞掉,你什么也收不到。

就这么简单。

具体流程五步:

  1. 系统定时器到点,触发一轮对话
  2. Agent 读取工作区根目录下的 HEARTBEAT.md,这是你给它写的检查清单
  3. Agent 按清单逐条执行
  4. 没事,回 HEARTBEAT_OK,系统静默处理,你不被打扰
  5. 有事,agent 把消息发到你指定的渠道,WhatsApp 也好,Telegram 也好,Slack 也好

这里面最要紧的一条设计:agent 默认是不出声的。只有真正有事才开口。不搞通知轰炸那一套。

检查清单:HEARTBEAT.md

这个文件放在工作区根目录。你写什么,agent 就查什么。

# Heartbeat checklist

- 扫一眼收件箱,有没有紧急邮件
- 看日历,近 2 小时内有没有会议
- 我要是 8 小时以上没动静了,问一声

写短一点。这个文件每次心跳都要塞进 prompt,写长了就是白花 token 钱。

你授权的话,agent 自己也能改这个文件,发现什么值得盯的新项目,自己加上去。

二、Heartbeat 为什么要存在

道理不复杂。

没有 Heartbeat 的时候,你要自己定期查邮箱,自己盯日历,自己看任务跑到哪一步了。你要是想让 agent 帮你盯,就得给每件事单独接一个定时任务。邮箱一个,日历一个,任务队列又一个。事情一多,光维护这些定时任务就够你喝一壶。

而且还有一个根本性的漏洞:两次检查之间发生的事,你是看不到的。agent 也看不到。

Heartbeat 的办法是:一个闹钟,一份清单,一轮对话,把所有检查打包做完。邮箱查了,日历查了,任务进度查了,你要是好几个小时没动,它还能问你一句。一次心跳,全部搞定。

这就把 agent 的性质变了。从"你拿起来用的锤子",变成"替你站岗的哨兵"。

三、钱的问题

Heartbeat 好是好,可是每跳一次就是一轮 agent 对话,对话就要花 token。不管不顾地跑,一个月四百多美金打了水漂。

钱花在哪里?花在对话历史上。

默认配置下,heartbeat 跑在 agent 的主 session 里。主 session 带着全部对话历史。你跟 agent 聊了半天,积累了十万个 token 的上下文,每次心跳就要把这十万个 token 重新发一遍。一天 48 次心跳,48 次重复发送。这就是浪费的根源。

怎么治?

第一刀:隔离 session

isolatedSession: true。每次心跳开一个干净的新 session,不带任何历史。输入 token 从十万降到两三千。一个参数,砍掉 95% 以上的成本。这是最狠的一刀。

第二刀:精简上下文

OpenClaw 启动时会往 session 里塞一堆工作区文件做引导。配置文件、文档、各种杂项。heartbeat 巡检用不着这些东西。设 lightContext: true,只保留 HEARTBEAT.md 一个文件,其余全扔。

第三刀:换便宜模型

巡检这种活,不需要最聪明的脑子。"收件箱有没有急件"这种判断,一个本地小模型就够了。设 model: "ollama/llama3.2:1b",成本直接归零。

想看更多实战拆解?

AI、工程与实验,每月 1–2 封。

无垃圾邮件,随时取消。

第四刀:空文件跳过

HEARTBEAT.md 要是只有标题和空行,OpenClaw 连 API 调用都不发,直接跳过。

算一笔账

拿 Claude Sonnet 4.6 来算(输入 $3/百万 token,输出 $15/百万 token),30 分钟一次,一天 48 次:

配置每天每月
不优化,带完整历史,约 10 万 input/次~$14.50~$434
隔离 session + 精简上下文,约 2.5K input/次~$0.42~$12.60
再加上只在工作时间跑(09:00-22:00)~$0.23~$6.90
本地模型 Llama 3.2 1B~$0~$0

不优化,月均 434 美金。加两个参数,12 块 6。再限制工作时间,不到 7 块。差了六十倍。

这六十倍的差距,全在一个地方:你有没有砍掉对话历史的重复发送。

四、Heartbeat 和 Cron 的分别

OpenClaw 里还有一个定时机制叫 Cron。两个都是定时跑的,容易搞混。其实性质完全不同。

Heartbeat 是巡逻。每隔一段时间醒来,按清单走一圈,有情况就报,没情况就回去睡。时间不用太精确,漂移几分钟无所谓。重点是把多件事打包在一轮里查完。

Cron 是命令。几点钟做什么事,一秒不差。支持标准 cron 表达式,可以给每个任务配不同的模型,可以在隔离 session 里跑,也可以设一次性提醒。

什么时候用哪个?

场景用什么为什么
每半小时扫一次收件箱Heartbeat跟其他检查打包,省 API 调用
每天早上 7 点发日报Cron要求准时
盯着日历看近期有没有事Heartbeat周期性感知,不要求精确
每周一做一次深度代码审查Cron(隔离)独立重活,可以用更强的模型
20 分钟后提醒我回电话Cron(--at一次性精确提醒
后台项目健康检查Heartbeat搭便车,跟其他检查一起跑

判断的路径也简单:

要精确时间的,用 Cron。要隔离 session 或者换模型的,用 Cron。能跟别的检查合并的,用 Heartbeat。一次性提醒,用 Cron --at。都不沾边的,默认 Heartbeat。

最好的做法是两个一起用。Heartbeat 管日常巡检,把零碎的检查合成一轮。Cron 管定点任务和重型独立作业。各管各的,互不干涉。

五、几种实际配置

当个人助理用

写一份 HEARTBEAT.md,盯住日常要务:

# Heartbeat checklist
- 扫收件箱有没有紧急邮件
- 看日历,近 2 小时内有没有会议
- 安静超过 8 小时就问候一下

target: "last",消息自动发到你最近用的聊天渠道。

当运维监控用

专门拉一个 ops agent,每小时查一次系统状态:

{
  id: "ops",
  heartbeat: {
    every: "1h",
    target: "slack",
    prompt: "Check server health metrics. If CPU > 80% or disk > 90%, alert immediately."
  }
}

当后台哨兵用

不需要给你发消息,只在内部默默记录:

heartbeat: {
  every: "30m",
  target: "none",
  isolatedSession: true,
  lightContext: true
}

醒来,查一圈,有情况就写内部笔记,没情况就继续睡。零通知,近零成本。

只在工作时间跑

不想半夜三点被吵醒:

heartbeat: {
  every: "30m",
  target: "whatsapp",
  to: "+15551234567",
  activeHours: { start: "09:00", end: "22:00" }
}

不想等下一个周期,手动触发

openclaw system event --text "Check for urgent follow-ups" --mode now

完整配置:Heartbeat + Cron 配合

HEARTBEAT.md(每 30 分钟跑一次):

# Heartbeat checklist
- 扫收件箱有没有紧急邮件
- 看日历近 2 小时内的事件
- 检查待办任务进度
- 安静超过 8 小时就问候一下

Cron 任务(定点定时):

# 每天早上 7 点的晨报
openclaw cron add --name "Morning brief" --cron "0 7 * * *" \
  --session isolated --message "..." --announce

# 每周一早 9 点的项目复盘,用更强的模型
openclaw cron add --name "Weekly review" --cron "0 9 * * 1" \
  --session isolated --message "..." --model opus

# 一次性提醒,2 小时后
openclaw cron add --name "Call back" --at "2h" \
  --session main --system-event "回电话给客户" --wake now

六、总结

Heartbeat 这个机制,说到底就一句话:给 agent 装个闹钟,让它从被动等命令,变成主动盯着干。

设计上克制。没事不吭声,有事才开口。不做消息轰炸机。

成本可控。两个参数砍掉 95% 的开支,换个本地模型更是分文不花。

跟 Cron 各有分工。巡检归 Heartbeat,定点归 Cron,各管一摊,配合着用。

Agent 从工具变成哨兵,靠的就是这个闹钟。


参考来源:

新文章,直接发到你的邮箱。

AI、工程与实验,每月 1–2 封。

无垃圾邮件,随时取消。