你已经能用 OpenClaw 对话、跑工具,下一步往往是:能不能按固定间隔自动巡检收件箱、拉取状态、写一条摘要到频道? 在 2026 年的 OpenClaw 体系里,这类「无人值守但可预期」的节奏常与 Heartbeat 与 HEARTBEAT.md 挂钩。本文与站内《任务发出却无回复排查》不重复:那篇讲静默失败时怎么按 doctor → 日志排障;本篇讲如何把 Heartbeat 当作可控的定时自动化——适用边界、风险清单、最小模板、与 launchd 常驻的衔接、远程 Mac 上睡眠/断线/权限的注意点,以及在 VNC 里核对 Gateway 控制台与日志的可勾选表。需要十条报错速查请看《常见报错》;需要反代暴露请看《Gateway 公网访问》。
① 导语摘要:谁会需要 Heartbeat
适合读者画像:已跑通安装与首次对话,希望把「每隔 N 分钟看一眼队列/日历/监控摘要」这类低频率、可幂等的工作从人肉里挪走。不适合:把 Heartbeat 当无限制爬虫、在未经审计的环境对生产库直接写操作、或在未做额度与模型路由的情况下用高价模型做高频轮询。远程 Mac 场景下,你还要同时考虑会话是否常驻、节点是否会睡眠、网关是否只绑 localhost——这些在纯 SSH 里常被低估,在 VNC 里反而能一次看清。
② 痛点拆解:边界、成本与「以为在跑」
- 边界模糊:Heartbeat 触发的是「周期性代理回合」,不是操作系统级 cron 的全部替代;重活仍应交给 CI 或批处理队列。
- 模型与 thinking:与《无回复排查》一致——某些模型/思考链配置下,回合可能消耗预算却不向频道输出可见文本,看起来像「没跑」。自动化场景更要显式约定输出渠道与失败告警。
- 环境漂移:交互式 shell 里 export 的变量不会自动出现在 launchd 子进程;Heartbeat 与手动对话可能不是同一套 env。
- 远程 Mac 睡眠与断开:租赁节点若按策略休眠,网关进程与定时节奏会一起停摆;需要电源策略 + 守护进程拉起策略双管齐下。
- 可观测性缺口:没有「最后成功心跳时间」心智模型时,团队会把偶发静默当成模型问题,而不是配置问题。
③ 决策矩阵:场景 × 推荐组合
| 场景 | 推荐底座 | Heartbeat 角色 | 主要风险 |
|---|---|---|---|
| 个人提醒 / 收件摘要 | Gateway + 单实例 | 低频摘要写入频道 | 模型成本、频道刷屏 |
| 小团队值班巡检 | launchd 常驻 + 日志轮转 | 定时健康检查与汇总 | 权限弹窗阻塞(需 VNC) |
| 多项目同机 | 分目录/分端口(见多项目隔离文) | 每实例独立 HEARTBEAT | 串台、密钥混用 |
| 外网回调 | 反代 + TLS(见 Gateway 文) | 仍建议限制频率 | 暴露面与滥用 |
矩阵是经验型落地建议,具体字段名与默认值仍以你当前 OpenClaw 版本与 openclaw doctor 输出为准;大版本升级后务必重读发行说明并按《v2026.4.5 升级实战》做 canonical 路径核对。
④ 落地步骤:从最小 HEARTBEAT.md 到验证(7 步)
下面是一段示意性最小结构(伪 YAML/Front matter 风格,仅表达层次;请按你版本文档填充真实键名与注释):
# HEARTBEAT.md(示例骨架 — 请按官方文档替换为有效字段)
# goal: 每 30 分钟检查一次队列深度并发送到指定频道(示意)
interval_minutes: 30
channel: <your-channel-id>
on_tick:
- summarize_inbox_depth
- if_depth_gt: 10
then: notify_ops
fail_open: false
冻结版本与配置根目录
执行 openclaw --version 与 openclaw doctor,把 canonical 工作目录写入团队 Wiki,避免「改错一份 HEARTBEAT」。
从「只读巡检」开始写第一条心跳
先不要自动写生产;先拉状态、计数、健康检查结果,确认输出格式稳定。
为 Heartbeat 单独指定模型/路由(若支持)
避免与交互会话抢同一高价模型;cheap 模型做巡检、贵模型留给人工触发。
显式约定输出与失败可见性
失败时至少写一条「heartbeat_failed + 原因摘要」到同一频道或日志,避免静默。
用 launchd 拉起 Gateway(见守护进程文)
确保登录会话重启后仍能 bootstrap;对比 tmux/前台跑的差异,统一团队标准。
在 VNC 会话中打开控制台 URL 做对照
核对监听地址、端口、本机浏览器能否访问;与《无回复排查》中的「绑在 127.0.0.1」类误判对冲。
建立日志巡检表
字段建议:时间、间隔、是否 outbound、错误码、关联 commit/配置版本;每周回顾一次。
⑤ 可引用信息与参数清单
- ✅ doctor 无阻塞项后再启用 Heartbeat
- ✅ 频道里能看到最近一次 tick 的时间戳
- ✅ launchd 与手动重启后各验一次
- ✅ 多实例时分端口/分工作目录已核对
⑥ 强相关 CTA 与站内入口
静默与 thinking 组合详见《任务发出却无回复排查》;常驻与 plist 思路见《守护进程与 launchd》;反代见《Gateway 公网访问》;通排错见《常见报错 10 解》。
⑦ VNC 可视化核对表与 FAQ
- 本机浏览器能否打开控制台地址(与 SSH 端口转发区分)。
- 菜单栏/系统设置里是否有未点掉的隐私弹窗。
- 钥匙串或证书授权是否在图形会话里完成。
- 节点电源与锁屏策略是否会让 GPU/网络栈休眠过度。
- 与供应商文档核对:是否允许长期守护与对外端口。
页首 JSON-LD 含两条 FAQ;更细日志参数以你当前版本 CLI 为准。
结语:Heartbeat 是「节奏」,稳定 Mac 运行环境是「舞台」
在 Windows 或普通 Linux VPS 上硬跑图形化审批与 macOS 工具链,往往会卡在权限、渲染与链路完整性上;纯 SSH 又很难覆盖钥匙串与浏览器控制台验证。把 OpenClaw 放在真实 macOS 桌面环境里,再用 VNC 把「看得见的状态」对齐,Heartbeat 这类定时自动化才不容易变成黑盒。若你不想为几周的心跳实验购置整机,又希望获得可预期补丁级、随时可连的节点,租赁 VNCMac 的远程 Mac,配合帮助页连接说明与站内 launchd / 无回复 / Gateway 系列文章,通常是更省试错成本的路径。