AI 不是只有你叫它才会动——心跳让它主动检查你的世界。

开篇:从“被动响应”到“主动感知”
到目前为止,你的 AI 一直是“被动”的:你说话,它回答;你不说,它沉默。
但真正的 AI 管家不应该这样。你的私人助理不会等你开口才去看邮件——它应该主动巡查,有情况立刻汇报,没事就安静待命。
这就是 Heartbeat(心跳机制)的价值:让 AI 每隔 30 分钟自动醒来,检查你的世界,有问题通知你,没问题安静回去睡觉。
Heartbeat vs Cron:怎么选?
上一篇学了 Cron(精确定时任务),现在学 Heartbeat(周期性巡检)。两者经常被混淆,一张表说清楚:
| 特性 | Cron | Heartbeat |
|---|---|---|
| 触发时机 | 精确时间点(如 06:00) | 周期性(如每 30 分钟) |
| 运行环境 | 独立 session(推荐)或主 session | 主 session |
| 任务类型 | 执行具体操作(采集、发布) | 检查状态(有没有新邮件) |
| 典型场景 | 发日报、定时提醒、月度报告 | 邮件巡检、日历提醒、系统健康 |
| 一次性任务 | ✅ 支持 | ❌ 不支持 |
| 资源占用 | 每次启动新 session | 复用主 session,更轻量 |
选择原则(记住这两句话):
-
要执行某个操作(采集数据、发消息、生成报告)→ 用 Cron
-
要检查某个状态(有没有新邮件、系统是否正常)→ 用 Heartbeat
💡 经验法则:能合并的检查放心跳,需要精确时间的用 Cron。不要给心跳太重的任务——它是“巡逻员”,不是“搬运工”。
Heartbeat 工作原理
时间线:
09:00 ─── 09:30 ─── 10:00 ─── 10:30 ──►
│ │ │ │
▼ ▼ ▼ ▼
Gateway Gateway Gateway Gateway
唤醒 AI 唤醒 AI 唤醒 AI 唤醒 AI
│ │ │ │
▼ ▼ ▼ ▼
读取 读取 读取 读取
HEARTBEAT.md HEARTBEAT.md HEARTBEAT.md HEARTBEAT.md
│ │ │ │
▼ ▼ ▼ ▼
执行检查 执行检查 执行检查 执行检查
│ │ │ │
▼ ▼ ▼ ▼
无异常 有异常! 无异常 无异常
│ │ │ │
▼ ▼ ▼ ▼
HEARTBEAT_OK 发送通知 HEARTBEAT_OK HEARTBEAT_OK
(静默) 到 Telegram (静默) (静默)
关键机制:
-
在主 session 中运行:心跳复用主会话上下文,AI 知道你最近在做什么
-
读取
HEARTBEAT.md:这个文件就是你的“巡检清单”,告诉 AI 每次要检查什么 -
智能静默:无异常时回复
HEARTBEAT_OK,OpenClaw 自动过滤,不会打扰你 -
空文件跳过:如果
HEARTBEAT.md只有空行和标题,OpenClaw 直接跳过本次心跳,不消耗 API 调用
HEARTBEAT.md:定义你的巡检清单
HEARTBEAT.md 是心跳机制的核心配置文件,位于:
~/.openclaw/workspace/HEARTBEAT.md
每次心跳触发时,AI 会读取这个文件,按照清单逐项检查。
基础结构
心跳巡检清单
检查项
邮件检查
- [ ] 检查未读邮件(himalaya list -s unread)
- [ ] 如果有紧急邮件(标记为 important),立即通知
- [ ] 普通邮件:只在数量 > 5 时汇总通知
日历检查
- [ ] 检查未来 2 小时内是否有会议(icalBuddy)
- [ ] 如果有,提前 15 分钟提醒
- [ ] 检查是否有冲突的会议
系统健康
- [ ] 浏览器 tab 数量 > 15 时提醒关闭
- [ ] 内存使用率 > 80% 时警告
通知规则
- 紧急:立即发送到 Telegram
- 普通:只在有变化时报告
- 无异常:回复 HEARTBEAT_OK(静默)
⚠️ 安全提醒:不要把 API Key、密码、手机号等敏感信息放进
HEARTBEAT.md——这个文件会成为每次心跳的 prompt 上下文,会被发送到 LLM 提供商。
实战示例:完整巡检清单