OpenClaw心跳机制默认每30分钟唤醒智能体,易因未隔离会话、未缓存系统提示、未设活动时段及响应不规范,导致本地模型OOM、Token浪费、硬件空转与冗余重试。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

OpenClaw的心跳机制默认每30分钟自动唤醒一次智能体执行检查,即使你已配置免费模型(如Ollama本地模型或Gemini Flash),仍可能因上下文膨胀、提示重复注入、会话未隔离等配置疏漏,导致每次心跳实际调用云端API或触发本地模型高负载推理,产生不可忽视的隐性Token消耗或硬件资源开销。
心跳未隔离导致上下文持续累积
默认情况下,心跳任务在主会话中运行,每次都会加载全部历史对话、SOUL.md、记忆快照和工具输出缓存。一个运行7天的智能体,会话上下文可能突破15万tokens——哪怕你用的是本地Llama3.2:1b模型,单次推理也要加载全部上下文进显存,引发OOM崩溃或强制分块处理,间接拉高GPU内存占用与响应延迟。
在openclaw.json中添加以下配置:
{"agents":{"defaults":{"heartbeat":{"isolatedSession":true,"lightContext":true}}}}
【isolatedSession:true必须开启】 否则心跳永远继承主会话膨胀体,本地模型也扛不住持续增长的context窗口。
系统提示词未缓存,每次心跳重复发送
HEARTBEAT.md内容、SOUL.md指令、默认心跳prompt(如“Read HEARTBEAT.md if it exists…”)这些固定文本,默认会在每次心跳请求中完整重传。对云端模型是纯Token浪费;对本地模型则是反复加载相同字符串进KV Cache,挤占有效推理空间。
启用提示缓存只需两步:
① 确保模型后端支持cacheSystemPrompts(llama.cpp v0.4+、Ollama 0.3.5+已支持);
② 在openclaw.json对应模型配置中加入:"cacheSystemPrompts": true, "cacheRetention": "6h"
ClawHub 安装与配置 | ClawHub setup. 帮助中文用户安装 ClawHub、配置镜像(如阿里云)、 找技能(发现/推荐)、以及技能的安装/更新/启用/禁用。 Use when: 安装 clawhub, clawhub 怎么用, 找技能/找 skill, 有什么技能可以/有什么 skill 可以...
这一步不做,哪怕用免费模型,单次心跳也会多消耗800–2000 tokens的冗余提示量。
活动时段未设限,深夜仍在空转
心跳默认全天候运行,凌晨2点系统空闲时仍每30分钟拉起一次本地模型、读取HEARTBEAT.md、执行空判断、写log——CPU白跑,SSD被频繁读写,风扇狂转,电费照涨。这不是API账单问题,而是真实物理成本。
配置活动时段可彻底规避:
{"agents":{"defaults":{"heartbeat":{"activeHours":{"start":"08:00","end":"23:00","timezone":"Asia/Shanghai"}}}}}
注意:timezone必须显式声明,否则按UTC解析,会导致国内用户实际生效时间偏移8小时。
心跳响应未规范,触发冗余重试
OpenClaw要求心跳成功响应必须以HEARTBEAT_OK开头或结尾,且剩余内容≤300字符才会自动丢弃。若自定义HEARTBEAT.md中指令模糊(例如写“检查所有邮件”而非“检查Gmail未读数>5的发件人”),模型可能生成带分析过程的长回复,导致OpenClaw判定为“需人工介入”,进而启动失败重试逻辑——3次重试=3倍本地推理开销。
方法一:严格限定HEARTBEAT.md末尾加一行# ACK_ONLY,强制模型只输出HEARTBEAT_OK或空行;
方法二:在openclaw.json中设置"ackMaxChars": 100,收紧丢弃阈值。

















