Token 烧钱?OpenClaw 这几个配置让我省了一半开销
<h2 id="前言">前言</h2><p>AI agent 好用,但跑起来 token 消耗真的肉疼。笔者用 OpenClaw 跑了一段时间之后,摸索出了几个实际有效的省 token 姿势,拿出来给老哥们参考——不是什么玄学调优,都是能直接落地的配置改动。</p>
<hr>
<h2 id="memorymd-越短越好">MEMORY.md 越短越好</h2>
<p>这是最容易被忽视的地方。OpenClaw 每次 memory recall 都要扫描 MEMORY.md,文件越长,token 消耗越高。</p>
<p>笔者踩过的坑:早期把所有对话结论、临时备忘、甚至聊天记录片段都往里塞,一个月后 MEMORY.md 涨到 300 行,每次对话光 recall 就多烧几百 token。</p>
<p>正确做法:</p>
<ul>
<li><strong>MEMORY.md 只存结论</strong>,不存过程</li>
<li>日志流水放 <code>memory/YYYY-MM-DD.md</code>,按需读取</li>
<li>定期清理过期条目,没用的直接删</li>
</ul>
<p>对比示意:</p>
<table>
<thead>
<tr>
<th>写法</th>
<th>token 开销</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>老大喜欢简洁回答</code></td>
<td>低</td>
</tr>
<tr>
<td><code>2025年1月3日,跟老大聊了很久,他说他比较倾向于不那么冗长的回答风格...</code></td>
<td>高</td>
</tr>
</tbody>
</table>
<hr>
<h2 id="memory_search--memory_get-组合拳">memory_search + memory_get 组合拳</h2>
<p>OpenClaw 提供了两个内存工具,很多人只用了 memory_search 就结束了——其实只做到一半。</p>
<p>正确流程:</p>
<pre><code>1. memory_search("查询关键词") → 返回相关片段 + 行号
2. memory_get(path, from=行号, lines=N)→ 精准取那几行
</code></pre>
<p>这个组合的好处是:agent 不需要把整个文件加载进 context,只取真正需要的片段。笔者实测,recall 相关内容的 token 消耗能降 <strong>70%~80%</strong>。</p>
<p>如果让 agent 直接读整个 MEMORY.md,一次就是几百 token 打水漂。</p>
<hr>
<h2 id="heartbeatmd-保持轻量">HEARTBEAT.md 保持轻量</h2>
<p>心跳机制本身没问题,问题出在 HEARTBEAT.md 里堆了太多内容。每次心跳触发,这个文件的内容都会注入 context。</p>
<p>笔者的策略:</p>
<ul>
<li>只放<strong>当前还没完成的检查项</strong></li>
<li>完成一条删一条,不留历史</li>
<li>不需要定期检查的时候,文件保持空(只留注释行)</li>
</ul>
<pre><code class="language-markdown"># HEARTBEAT.md
# 保持空 = 跳过心跳 API 调用,直接回 HEARTBEAT_OK
</code></pre>
<p>长期周期性任务(比如「每天早上 9 点检查邮件」)改用 cron job,和主 session context 完全隔离。</p>
<hr>
<h2 id="复杂任务扔给-subagent">复杂任务扔给 subagent</h2>
<p>主 session 的 context 随着对话越来越长,每一轮的 token 消耗都在涨。对于一次性的重活(分析长文档、批量处理数据、跑代码),用 <code>sessions_spawn</code> 起一个独立 subagent:</p>
<pre><code>sessions_spawn(
task="分析这份报告,提取关键结论",
runtime="subagent"
)
</code></pre>
<p>subagent 有干净的 context,任务完成即销毁。主 session 只需要收一个结果摘要,来回开销大幅减少。</p>
<p>举个实际场景:让 agent 分析一份 50 页 PDF。直接在主 session 跑,整份内容进 context,光 input token 就爆了;扔给 subagent 处理,主 session 只拿摘要,省下的 token 可能有 <strong>10 倍差距</strong>。</p>
<hr>
<h2 id="工具调用一步到位">工具调用一步到位</h2>
<p>每次工具调用都有 overhead,agent 来回确认、分步操作会快速累积消耗。</p>
<p>几个实用原则:</p>
<ul>
<li><strong>批量 > 循环</strong>:Feishu Bitable 写 100 条记录,一次批量写 vs 循环 100 次,token 差距巨大</li>
<li><strong>明确指令,减少确认</strong>:prompt 里写清楚「直接执行,不需要确认」,避免 agent 来回问</li>
<li><strong>并行工具调用</strong>:互相不依赖的查询,让 agent 在同一轮同时调用,而不是串行等结果</li>
</ul>
<hr>
<h2 id="按任务选模型">按任务选模型</h2>
<p>OpenClaw 的 cron job 支持 <code>model</code> 字段,不同任务没必要都用最贵的模型:</p>
<table>
<thead>
<tr>
<th>任务类型</th>
<th>推荐模型</th>
</tr>
</thead>
<tbody>
<tr>
<td>心跳检查、格式转换、简单问答</td>
<td>doubao-seed-2.0-pro</td>
</tr>
<tr>
<td>代码生成、复杂推理、写文章</td>
<td>claude-sonnet / gpt-5.4</td>
</tr>
</tbody>
</table>
<p>cron job 配置示例:</p>
<pre><code class="language-json">{
"payload": {
"kind": "agentTurn",
"message": "检查今天有没有重要邮件",
"model": "litellm/doubao-seed-2.0-pro"
}
}
</code></pre>
<hr>
<h2 id="总结">总结</h2>
<p>省 token 的核心思路就一句话:<strong>减少无效信息进入 context</strong>。MEMORY.md 精简、recall 按需取片段、HEARTBEAT 保持空、复杂任务隔离到 subagent、工具调用批量化、按任务匹配模型——这几板斧组合下来,笔者的月度 token 消耗大概降了一半左右。AI agent 不是越跑越贵,是配置没做好才贵。</p>
<h2 id="联系我">联系我</h2>
<ul>
<li>联系我,做深入的交流</li>
</ul>
<p><img alt="" width="500" height="200" loading="lazy" src="https://img2024.cnblogs.com/blog/1416773/202411/1416773-20241121135740959-1907948957.png#" class="lazyload"></p>
<p>至此,本文结束</p>
<p>在下才疏学浅,有撒汤漏水的,请各位不吝赐教...</p>
</div>
<div id="MySignature" role="contentinfo">
<p>本文来自博客园,作者:it排球君,转载请注明原文链接:https://www.cnblogs.com/MrVolleyball/p/19745294</p>
<div>本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。 </div><br><br>
来源:https://www.cnblogs.com/MrVolleyball/p/19745294
頁:
[1]