如何降低OpenClaw运行成本? 降低OpenClaw运行成本的方式有哪些?
OpenClaw迅速火爆的同时,许多人遇到一个看似反常的现象。
系统运行一切正常,但token成本却在不知不觉中不断攀升。通过分析一次真实的OpenClaw工作负载,我们发现,问题的根源并不在于用户输入或模型输出,而是被忽视的缓存前缀重放问题。
模型在每一轮调用中反复读取庞大的历史上下文,从而产生了巨量token消耗。

本文将通过具体的session数据,展示工具输出、浏览器快照、JSON日志等大型中间产物如何被不断写入历史上下文,并在Agent循环中被重复读取,最终导致成本的飙升。
并以此来看看如何降低OpenClaw运行成本的方式。
核心发现
在此次分析中,我们发现最大的成本驱动因素并不是用户消息太长,而是巨量的缓存前缀被反复重放。
数据统计
根据session数据的分析,token消耗的具体情况如下。
1、总tokens: 21,543,714
2、cacheRead: 17,105,970(占比79.40%)
3、input: 4,345,264(占比20.17%)
4、output: 92,480(占比0.43%)
可以看到,大多数调用的成本并非来自于处理新的用户意图,而是来自于反复读取巨大的历史上下文。每次调用都读取了大量稳定的前缀数据,造成了巨大的token消耗。
问题的根本原因
模式发现
我原本以为高token使用量可能来源于以下几个因素。
1、非常长的用户输入(prompt)
2、大量输出生成
3、昂贵的工具调用
然而,真正主导的模式是下面。
1、input:几百到几千tokens
2、cacheRead:每次调用17万到18万tokens
模型在每一轮调用中反复读取同一个巨大的历史上下文数据,而这些数据并没有变化,导致了巨大的重复消耗。
数据范围
我分析了两个层面的数据。
1、运行时日志(runtime logs):用于观察行为信号,如重启、报错、配置问题等。
2、会话记录(session transcripts):提供精确的token统计,来自session JSONL文件中的 usage 字段。
通过分析,我使用了以下脚本。
1、scripts/session_token_breakdown.py
2、scripts/session_duplicate_waste_analysis.py
生成的分析文件包括。
1、tmp/session_token_stats_v2.txt
2、tmp/session_token_stats_v2.json
3、tmp/session_duplicate_waste.txt
4、tmp/session_duplicate_waste.json
5、tmp/session_duplicate_waste.png
Token实际消耗的具体情况
Session集中
一个session的消耗远高于其他:
1、570587c3-dc42-47e4-9dd4-985c2a50af86:19,204,645 tokens
2、ef42abbb-d8a1-48d8-9924-2f869dea6d4a:1,505,038 tokens
3、ea880b13-f97f-4d45-ba8c-a236cf6f2bb5:649,584 tokens
可以看到,某些session的token消耗非常集中,而其余session的消耗相对较低。
行为集中
从token消耗的来源来看,主要集中在:
1、toolUse: 16,372,294 tokens
2、stop: 5,171,420 tokens
这表明问题主要出在工具调用链循环,而不是普通的聊天。
时间集中
token峰值集中在几个特定的时间段:
1、2026-03-08 16:00:4,105,105 tokens
2、2026-03-08 09:00:4,036,070 tokens
3、2026-03-08 07:00:2,793,648 tokens
这些时间段的token消耗明显高于其他时段,反映了系统在某些时间段的负载更高。
巨大的缓存前缀
缓存前缀并不是用户对话内容,而是主要由大型中间产物构成:
1、巨大的toolResult数据块
2、很长的推理过程(reasoning traces)
3、大型JSON快照
4、文件列表
5、浏览器抓取数据
6、子Agent的对话记录
在最大session中,字符量的具体情况如下:
1、toolResult:text: 366,469字符
2、assistant:thinking: 331,494字符
3、assistant:toolCall: 53,039字符
这些内容一旦被保留在历史上下文中,后续的每次调用都会通过缓存前缀重新读取它们,导致token的重复消耗。
解决方案
控制大型工具输出
对于超大工具输出,建议:
1、只保留摘要和引用路径/ID
2、将原始数据写入文件artifact
3、不要将完整原文保留在chat history中
应优先限制以下内容:
1、大型JSON
2、长目录列表
3、浏览器完整快照
4、子Agent完整对话记录
保证compaction机制生效
在数据中,多次出现了配置兼容性问题,导致compaction机制未能正常触发。正确的做法是:
1、只使用版本兼容配置
2、验证并启动compaction:使用命令 openclaw doctor --fix,并检查启动日志确认compaction被接受。
减少推理文本的持久化
尽量避免长推理文本的重复读取。生产环境中,应保存简短的推理摘要,而不是完整的推理过程。
改进prompt缓存设计
优化的目标是减少每次调用中对缓存的依赖,只使用紧凑、稳定且高价值的前缀:
1、将稳定的规则放进system prompt
2、不要将不稳定的数据放入稳定前缀中
3、避免每轮调用都注入大量debug数据
实操止损方案
如果需要立刻处理这个问题,可以:
1、找出cacheRead占比最高的session
2、对runaway session执行 /compact
3、对工具输出进行截断和artifact化
4、每次修改后重新跑token统计
重点关注以下四个KPI:
1、cacheRead / totalTokens
2、toolUse avgTotal/call
3、大于等于100k token的调用次数
4、最大session占比
成功的信号
如果优化生效,你应该看到以下变化:
1、100k+ token调用明显减少
2、cacheRead 占比下降
3、toolUse 调用权重下降
4、单个session的主导程度降低
如果这些指标没有变化,说明上下文策略仍然过于宽松,需要进一步优化。
如果你的OpenClaw看起来一切正常,但成本却在持续上升,不妨检查一下问题的根源:你付费的是新的推理,还是在大规模重放旧上下文?在我的案例中,绝大部分成本其实来自于上下文重放。一旦意识到这一点,解决方案也就非常明确:严格控制进入长期上下文的数据。






