每隔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
}

手有余粮心中不慌,慢慢投喂养虾路长。更详细的介绍可以参阅官方文档