跑 OpenClaw 一周烧了 300 块,我是怎么砍到 180 的

66 阅读4分钟

给 OpenClaw 配了 4 个 agent,跑了一周后看账单,300 块没了。逐项扒拉才发现,默认配置有太多隐形浪费。

先说结论

改了 6 个配置项,token 消耗降了 40%。不用换模型,不用砍功能,纯粹是堵上默认配置的漏洞。

说实话之前我以为 OpenClaw 的默认配置已经够合理了。直到我用 /context detail 看了一眼单次请求的 token 构成:

Bootstrap(系统提示):  35,000 tokens  28%
Context replay(历史回放): 65,000 tokens  52%
工具结果:              18,000 tokens  15%
模型输出:               6,000 tokens   5%

52% 花在历史消息回放上。意思是,每一轮对话,OpenClaw 都把之前说的所有话重新发给模型。对话越长,这个数字越恐怖。

第一刀:给上下文加个上限

默认没有 contextTokens 限制。我用的 DeepSeek 有 200K 上下文窗口,OpenClaw 就真的往 200K 塞。

加一行配置:

"contextTokens": 100000

超过 100K 就自动压缩。其实 90% 的场景 100K 绰绰有余,之前那些超出的部分基本是无用的历史消息在占位。

省了多少:长对话场景下 input tokens 直接砍半。

第二刀:旧数据别赖着不走

contextPruning 默认保留 7 天的工具调用结果。一个 web_fetch 动辄 5000-10000 tokens,7 天下来……

"contextPruning": {
  "mode": "cache-ttl",
  "ttl": "6h",
  "keepLastAssistants": 3
}

6 小时前的 web 抓取结果你还用得上吗?大概率不会。keepLastAssistants: 3 保留最近 3 轮完整回复就够了。

第三刀:心跳别用贵的模型

这个坑我踩了好久才发现。OpenClaw 每 4 小时发一次心跳——用的是你的主模型。

我的主模型是 DeepSeek-R1,每次心跳注入完整 bootstrap(37,500 tokens)。算下来一天 6 次心跳,纯粹为了告诉系统"我还活着",每月白花 20 块。

"heartbeat": {
  "every": "4h",
  "model": "你最便宜的模型",
  "lightContext": true
}

lightContext: true 是关键——只注入 HEARTBEAT.md,跳过那些大文件。token 从 37,500 降到 3,000。

第四刀:压缩也不需要聪明脑子

上下文压缩(compaction)就是把长对话总结成摘要。默认用主模型做这事。但总结摘要真的不需要旗舰模型。

"compaction": {
  "mode": "safeguard",
  "model": "你的便宜模型"
}

第五刀:系统提示瘦身

这是最容易被忽视的。Bootstrap 文件(CLAUDE.md + 所有 skills + memory)在每一次 API 调用中重新发送。

"bootstrapMaxChars": 10000,
"bootstrapTotalMaxChars": 75000

默认是 20000/150000。我砍到一半,实际使用完全没感觉。

另外检查一下你有多少 skill 被加载了:

ls ~/.openclaw/skills/ | wc -l

我有 30+ 个 skill,其中一半几乎不用。每个 skill 至少占 24 tokens。禁掉不用的省一点是一点。

第六刀:图片分辨率调低

我的 agent 经常截图分析网页。默认 1200px,实际 800px 就够看了。

"imageMaxDimensionPx": 800

Vision token 按像素面积算,800 vs 1200 省 55%。

隐藏大招:让 agent 学会"记笔记"

以上是减少浪费。还有一个思路是避免重复——让 agent 主动存记忆。

没有记忆的 agent 每次都从零开始:读文件、搜代码、抓网页,一通操作 20000 tokens。

有记忆的 agent 直接调出上次的结论,500 tokens 搞定。

OpenClaw 的记忆就是 workspace 下的 Markdown 文件,session 启动时自动加载。关键是配好 memoryFlush

"compaction": {
  "memoryFlush": {
    "enabled": true,
    "softThresholdTokens": 4000
  }
}

这会在 session 接近压缩时提醒 agent 把重要信息写到文件里。下次新 session 自动读取,不用重新探索。

ROI:500 tokens 存一条记忆 → 省掉 10 次 × 5000 tokens 的重复探索 = 100 倍回报。

最终效果

指标优化前优化后
单次请求平均 input~124K~72K
心跳成本/月¥20¥0.03
日均 token~280 万~160 万
周费用¥300¥180

40% 的降幅,没砍任何功能。

还能再省吗?

能。最大的杠杆其实是模型选择——简单任务用便宜模型,复杂任务才上旗舰。但手动切模型太麻烦。

我现在的做法是用统一 API 网关,在一个入口里配好不同场景用不同模型。心跳用 Flash Lite,日常用 DeepSeek,复杂任务才调 Claude。网关自动路由,不用改代码。

我用的是 TheRouter,一个 key 调 30+ 模型,支持按需切换,国内直连也没问题。有类似需求的可以看看 therouter.ai。


TheRouter (therouter.ai) — 多模型统一 API 网关