每隔30分钟,OpenClaw从对话框中会出这样一条信息:
Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.
When reading HEARTBEAT.md, use workspace file /home/node/.openclaw/workspace/HEARTBEAT.md (exact case). Do not read docs/heartbeat.md.
而更让人郁闷的通常还有伴生的这条信息:
API rate limit reached. Please try again later.
这一下子就中断了继续向前探索的路,为什么会这样?怎样解决?
其实这是OpenClaw的Heartbeat机制所致,其会显著消耗Token。根据最新的代码分析报告和用户反馈,每一次Heartbeat都会加载完整的会话上下文、工作区文件和系统提示词,单次请求甚至有可能消耗高达120,000 tokens。
那么为什么OpenClaw会频繁调用Heartbeat?而又是为什么会消耗大量Token呢?其实,Heartbeat并非轻量级”心跳检测”,而是一个完整的Agent轮次。每次触发都会执行诸如以下操作:
1、加载整个工作区目录和引导文件(AGENTS.md、HEARTBEAT.md等)
2、构建完整的会话上下文(包括对话历史、系统提示词)
3、调用大模型进行处理
随着会话进程的不断增加,所需要处理的信息也呈指数增长,巨大开销由此而来。关闭Heartbeat的方法可以参考以下几点:
1、通过CLI命令临时关闭。此命令会立即暂停所有心跳,但只适合临时调试,因为重启Gateway后会重新开启。
openclaw system heartbeat disable
2、修改openclaw.json或config.yaml配置,将 heartbeat.every 设置为 “0m”,即不再检测心跳。
{
"agents": {
"defaults": {
"heartbeat": {
"every": "0m" // 设置为0分钟即禁用
}
}
}
}
3、优化替代方案(如需保留Heartbeat)
(1)降低频率
"heartbeat": {
"every": "4h", // 改为4小时一次,减少87.5%消耗
"lightContext": true, // 仅加载HEARTBEAT.md,不加载完整上下文
"isolatedSession": true // 每次独立会话,不携带历史记录
}
(2)限制活动时段
"heartbeat": {
"every": "30m",
"activeHours": {
"start": "09:00",
"end": "22:00", // 仅工作时间运行
"timezone": "Asia/Shanghai"
}
}
(3)使用便宜模型
"heartbeat": {
"model": "openai/gpt-4o-mini", // 使用轻量模型处理心跳
"lightContext": true
}
手有余粮心中不慌,慢慢投喂养虾路长。更详细的介绍可以参阅官方文档。
它的心跳让你心惊肉跳—如何关闭或优化OpenClaw Heartbeat以节省Token