记录一下我最近折腾 OpenClaw 的过程,给有同样困扰的朋友参考。
起因:让它写文档,写着写着就没消息了
最近让 OpenClaw 写一套文档,15 个模块、几十个章节。任务发出去,它开始干,然后……就没有然后了。

过了很久我去问,它说"已完成前三个模块"。我再推一次,它又写几章,然后又消失。
一开始以为是 bug,后来才明白:OpenClaw 默认是反应式的——你不推,它不动。而且每次对话结束,它就"忘了"自己在做什么。下次会话是全新的,没人告诉它"你上次做到哪了"。但我记得它是有心跳机制可以自主运行的,应该是我哪里配置不对?
试过的弯路
最开始我也试过口头交代:"你先把第一章写完,然后第二章……"结果写到第三章就断了,下次问它,说忘了写到哪了😅
后来意识到:把任务状态写到 HEARTBEAT 和 TODO.md 文件里,让它每次醒来能"看见"进度。

我的方案:TODO Manager + Heartbeat
TODO Manager(任务看板)
就是弄了个 TODO.md,把所有任务写清楚,并且制作成 SKILL,避免遗忘技能:
优先级(P0/P1/P2) 状态(⏳待开始 / 🟡进行中 / ✅已完成) 产出位置
Heartbeat(定时唤醒)
配了个 HEARTBEAT.md,让它每 15 分钟自己醒来:
读 TODO.md,看还有多少 pending 任务 执行下一个任务 更新状态,汇报进度 没事就回 HEARTBEAT_OK,彻底静默
关键:todo-execution-state.json
这个状态文件记录"是否已汇报":
pending > 0 → 执行任务 → 汇报 pending = 0 且已汇报 → HEARTBEAT_OK(静默,不打扰) pending = 0 且未汇报 → 发汇总报告 → 标记已汇报
效果就是:任务完成后它自己就安静了,不会反复发消息。只有新任务加入时,才会再次激活。

为什么有效
我自己的体会是:模型没有跨 session 的记忆,但文件系统有。把任务进度从"模型的脑子"移到"文件里",它每次醒来都能准确知道做到哪了。
现在这套方案跑下来,它能自己花几小时把几十个章节写完,全程不用我盯着。

顺手再一句话上传到夸克网盘,生成分享链接(原来创建好的 SKILL)

踩过的坑,顺便记录一下
HEARTBEAT.md 别写太长,每次都会塞进 prompt 一次只加一条任务,跑通再加下一条 明确写"没事回 HEARTBEAT_OK",不然它可能空转也发消息 间隔别设太短,我用的 15 分钟,再短它容易"无聊地跟自己对话"
补充一下:我用的是阿里百炼的 Coding Plan,所以不是很在乎 token 消耗。如果你用的是按量计费的 API,可能需要注意下 HEARTBEAT.md 的长度和唤醒频率,尽量精简。
一点心得
Heartbeat 适合那种需要"主动发现"的事——比如长任务推进、收件箱监控、服务器状态检查。
如果你会主动去问的事,或者一次性任务,用 Cron 更合适。
我自己用下来的感受:它让 Agent 从"你推一下它动一下"变成"自己盯着,有进展才叫你"。配合任务文件做外部记忆,确实能像 Manus 一样持续工作。
有同样折腾经历的朋友,欢迎交流更好的方案~
夜雨聆风