TokenEconomizer 降低编程 Agent 开销
微软研究院与加州大学伯克利分校发布开源插件 TokenEconomizer,通过历史会话学习减少编程 Agent 的 Token 成本。据摘要,其在 SWE-Bench 上降低成本 18.4% 至 30.9%,无需修改 Agent 本身。
AI 深度解读
TokenEconomizer 想省的,是 AI 编程过程中反复摸索仓库、携带闲置工具、陷入失败循环的开销。Microsoft Research 与 UC Berkeley 的研究团队给出的方案,是在 Agent 外面加一个会积累仓库经验的控制器,不改模型权重,也不改 Agent 代码。
据原文报告,它在 277 个 SWE-Bench 任务、5 种 Agent 与模型组合中,把平均成本降低了 18.4% 至 30.9%。对经常在同一项目里使用 AI 编程的开发者,更有参考价值的是:哪些上下文值得保留,哪些调用可以提前省掉。
钱为什么花在了重复劳动上
作者先用 Claude Code 搭配 Opus 4.8,分析了 6 个仓库中的 60 个 SWE-Bench 任务,找到三类浪费。
第一类是重复探索。当前任务之前已经完成 5 个任务时,30% 的工具调用重复了先前的操作。测试命令、目录位置等信息,Agent 可能每次都重新寻找。
第二类是闲置工具。每轮加载的 23 个工具描述中,16 个从未被调用,实际 98% 的调用集中在 3 个工具上。工具描述也占上下文,即使没用,携带它仍有成本。
第三类是失败循环。10 次失败运行只占任务的 17%,却消耗了总支出的 32%。反复执行失败命令、围绕同一错误打转,会持续拉长历史。
原文把成本归因于每轮携带系统提示、工具描述和完整历史。不过,实际账单还取决于缓存及计费方式,不能把所有输入 token 都理解成按同一价格收费。
它怎样决定该记住什么、删掉什么
TokenEconomizer 把 Agent 当作黑盒,为每个仓库保存独立状态,从已完成的执行轨迹中学习,再通过提示词、工具设置和事件流调整后续任务。它有三种可切换机制。
微技能(micro-skills)负责积累短事实。LLM proposer 把轨迹摘要提炼成一行信息,例如可用的测试命令,并附带正则检测器,让后续验证不用再次调用模型。
一条事实需要在修改文件互不重叠的任务中获得 3 次确认,需求率还要保持在 0.4 及以上,才会进入提示词。反证的权重相当于 5 次确认,帮助错误事实尽快退出。原文没有展开需求率的计算方式,落地时还需要查看具体实现。
工具裁剪负责缩小工具目录。Shell、读取、写入、编辑工具始终保留;其他工具连续 3 个任务未使用,或者被 LLM judge 判定无关,就会被屏蔽。每隔 5 个任务恢复完整目录,重新审查。Django 配合 Claude Code 的实验中,第 2 个任务首次请求的 prompt tokens 从 43,351 降到了 16,295。
失败循环干预则先学习回合预算:成功运行长度的第 90 百分位数乘以 1.25。廉价规则发现重复失败或密集错误后,再交给 LLM judge 判断;置信度达到 0.7 才介入。卡住的 Agent 先获得 1 次方向纠正,再次陷入循环便停止。
这套机制的关键,是给经验设置验证和淘汰条件,也给删工具保留重新检查的机会。
省下的钱有没有换来更多失败
原文引用 arXiv 2610.22732 的 Table 1,每种设置运行 3 个随机种子,成本包含控制器自身的全部模型调用。
| Agent 与模型 | 平均成本变化 | Pass@1:默认→启用后 |
|---|---|---|
| Claude Code + Sonnet 5 | -23.6% | 74.7→76.0 |
| Claude Code + Opus 4.8 | -30.9% | 74.0→73.0 |
| Codex + GPT-5.6 Terra | -24.7% | 73.8→74.7 |
| Codex + GPT-5.6 Sol | -26.1% | 80.1→81.7 |
| Copilot CLI + Sonnet 5 | -18.4% | 75.0→77.6 |
Pass@1 可以理解为一次尝试解决任务的比例。5 组中有 4 组上升,但 Opus 4.8 下降了 1.0 个百分点。作为对照,降低推理强度虽然也省钱,却让 Pass@1 下降了 1.8 至 10.3 个百分点。
收益需要积累。多数仓库起初成本更高,到第 6 个任务时全部变得更便宜。在 Claude Code 上单独启用各机制,工具裁剪节省 13.2% 至 17.7%,微技能节省 11.8% 至 14.3%,循环保护节省 5.4% 至 7.1%。这些区间不能直接相加。
其他评测也有收益:Web-Bench 降低 16.0% 至 21.2%,CredData 降低 16.5% 至 19.6%;ReposVul 审计只有 6.4% 至 9.3%,作者解释为运行更短,可削减的空间更少。
我的判断
我更认可它按仓库调整策略的思路。测试入口和工具需求通常有项目差异,固定塞入一套上下文,未必适合所有仓库。
原文中的对照也支持这种谨慎:RTK 压缩 Shell 输出,Serena 提供符号级代码工具,Aider RepoMap 把排序后的仓库符号地图放进提示词。三者在前期分析中都降低了 Django 的成本,却提高了 SymPy 的成本。
主评测中,RTK 的平均成本变化为 -8.9% 至 +4.5%,RepoMap 为 -6.1% 至 +6.5%;在 30 个仓库与设置组合中,分别有 12 个和 15 个成本上升,TokenEconomizer 则全部下降。Serena 没有进入主评测,原文只说它在前期分析中提高了汇总成本,不能据此认定它普遍无效。
TokenEconomizer 与 RTK 组合,在 Claude Code + Opus 4.8 上达到 33.2% 的降本,也说明这些方法可以互补。
但「最多省 30.9%」仍是特定评测结果。一次性仓库任务、短任务,以及频繁变化的项目,未必能充分摊薄学习成本。原文也没有提供国内团队长期使用的对照数据,不能把这个数字当作预算承诺。
能拿来做什么
- 在反复维护的前端或 Node 仓库里,先统计重复查找测试命令、目录和配置的次数,再决定是否需要积累仓库经验,避免凭感觉堆提示词。
- 优先试工具裁剪和循环保护。两者默认开启;微技能默认关闭,因为 proposer 会增加模型调用,适合在任务量足够时另行比较收益。
- 试用需要 Python 3.10+,支持 Claude Code、Codex、GitHub Copilot CLI 和 Pi,无需 GPU,也不需要插件自己的 API key。Claude Code 的安装流程是克隆仓库、添加 marketplace,再执行
claude plugin install tokeneconomizer@tokeneconomizer;学习数据保存在~/.tokeneconomizer。 - 对照同类任务的总成本与成功率,并把学习初期的支出算进去。尤其关注提前停止是否误伤复杂任务,不能只比较 token 数量。