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

An image to describe post


开篇:从“被动响应”到“主动感知”

到目前为止,你的 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  (静默)    (静默)

关键机制:

  1. 在主 session 中运行:心跳复用主会话上下文,AI 知道你最近在做什么

  2. 读取 HEARTBEAT.md:这个文件就是你的“巡检清单”,告诉 AI 每次要检查什么

  3. 智能静默:无异常时回复 HEARTBEAT_OK,OpenClaw 自动过滤,不会打扰你

  4. 空文件跳过:如果 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 提供商。

实战示例:完整巡检清单