微软 TokenEconomizer 开源:编码智能体成本降 30.9%

一句话结论:微软研究院与加州大学伯克利分校团队开源的 TokenEconomizer,以插件形式接入 Claude Code、Codex、GitHub Copilot CLI 与 Pi,在 277 个 SWE-Bench 任务上把编码智能体的平均成本压低 18.4% 到 30.9%,且 30 个仓库与模型组合的单元全部更便宜。

它的做法不碰模型权重,也不改智能体自身的代码,而是把智能体当成黑盒,从它已经跑过的执行轨迹里学到这个仓库的规律,再通过提示词、工具设置和事件流三个可介入的接口把规律喂回去。安装门槛也不高,Python 3.10 以上即可,Apache 2.0 协议,学到的仓库状态存在本地目录。

论文题为 TokenEconomizer: Experience-Driven Black-Box Cost Control for Coding Agents,arXiv 编号 2610.22732,第一版 2026 年 10 月 15 日挂出,作者来自加州大学伯克利分校、微软研究院与微软安全部门,第一作者 Aaron J. Li 的工作是在微软研究院实习期间完成的。

钱究竟花在哪:三类重复性浪费

团队先用 Claude Code 搭配 Opus 4.8 剖析 6 个仓库的 60 个任务,把开销拆开来看。结果指向三种反复出现的浪费模式,每一种都在真实开发里天天发生。

第一类是重复探索。任务本身是独立的,但仓库不是。同一个仓库里第二次、第三次改代码时,智能体照样要重新弄清测试命令怎么写、源码放在哪个目录、哪个环境变量必须先设好。论文的统计是,当前任务之前已经积累 5 个任务时,30% 的工具调用与更早的动作完全重复。另一组统计显示,在至少一半任务里复现过的动作,占了工具调用字节数的 12% 到 28%。

第二类是没人调用的工具。每一轮对话,智能体都会把全部工具 schema 一起塞进系统提示词。一轮加载 23 个工具 schema,其中 16 个从未被调用过,而 3 个工具就覆盖了 98% 的调用量。换个角度算,没有任何一个仓库调用超过 7 个工具。每一个用不上的 schema 都是模型每轮都要读、开发者每轮都要付的文本。

第三类是失败循环。10 次失败的运行只占任务总数的 17%,却吃掉了 32% 的总开销。进一步看,60 个被剖析任务里,51% 的花费发生在轨迹开始重复之后。这部分是纯烧钱,没有任何产出。

这三类合起来解释了为什么一个能跑通任务的编码智能体,账单依然会失控。智能体被设计成把任务做完,没有被设计成把任务做便宜。

三个可独立开关的机制

TokenEconomizer 把上述三类浪费对应到三个机制,每个都有自己的开关,可以一个一个接。全部数据都是它自己在论文里给出的口径,且成本数字已包含控制器自身的模型调用,属于净值。

机制 解决的问题 独立节省幅度 默认状态
工具剪枝 没人调用的工具 13.2% 到 17.7% 开启
微技能 重复探索 11.8% 到 14.3% 关闭
循环守卫 失败循环 5.4% 到 7.1% 开启

工具剪枝永远保留 shell、读、写、编辑这四个基础工具。其余工具在连续三个任务未被使用,或者被 LLM 判定为无关时会被屏蔽,每五个任务做一次全量复审把目录重新拉回来。Django 项目配 Claude Code 的实测数字最直观,第二个任务的首次请求提示词 token 从 43351 降到 16295。

这里有一个容易被忽略的工程细节。工具列表的变更不会立刻写入拒绝清单,而是等这个仓库的会话空闲满 60 分钟之后才生效。原因写在文档里:会话恢复后如果工具集合变了,历史对话就得整体重写进提示词缓存,而不是从缓存里读。换句话说,工具剪枝在省 token 和保住缓存命中率之间做了一次排序,前者让位给后者。工具剪枝还带一条恢复命令,把工具放回来之后不会再被二次移除。

微技能用一个 LLM 提案器把执行轨迹摘要压缩成一行事实,比如这个仓库的测试命令该怎么写、源码目录在哪、哪个初始化步骤其实可以跳过。每条事实附带正则检测器,后续任务里只靠正则就能验证,不必再调模型。一条事实要在三个任务上被确认过才会进入提示词,而且这三次确认必须落在编辑文件互不重叠的任务上,否则说明事实本身依赖了上下文。事实的采纳率还要维持在 0.4 以上。出现一次矛盾按五次确认计,所以错误事实淘汰得很快。微技能默认关闭,因为它需要额外的模型调用;开启 microskills=envfacts 模式则只从重复失败中学习,不产生任何模型调用。

循环守卫设定一个回合预算,取成功运行长度 90 分位数的 1.25 倍。先用规则检查发现重复失败或密集报错,再由 LLM 判定智能体是否真的卡住,判定阈值是 0.7 置信度以上。判定卡住后给一次纠偏,仍然复现就停下。守卫不会自己掐掉回合,只会打印一行提示,告诉开发者可以按 Esc 中断。它还要先观察到这个仓库里有五个回合顺利结束,才知道正常回合长什么样。另有一条不经过判定模型的路径:回合长度超过平常的 2.5 倍,同时还在反复改同样的文件、走同样的失败路径。

实测结果与代价

主实验是 277 个 SWE-Bench 任务、5 组智能体与模型组合。每个任务是独立会话,同一仓库的任务按顺序执行,学习从零开始,成本按实际计费口径计算并包含控制器自身的开销。

基准 成本下降区间 备注
SWE-Bench 18.4% 到 30.9% 最好一档为 Claude Code 加 Opus 4.8,配合 RTK 可到 33.2%
Web-Bench 16.0% 到 21.2% 顺序式网页开发任务
CredData 16.5% 到 19.6% 安全审计任务
ReposVul 6.4% 到 9.3% 执行周期短,微技能来不及积累

最差的一档出现在 ReposVul 审计,节省只有 6.4% 到 9.3%,原因是这类任务执行周期太短,重复事实还没来得及被确认成一条微技能,省钱的主要靠工具剪枝一项。团队把这解释为方法的固有边界,而不是缺陷。

任务成功率方面,5 组设置里有 4 组的 Pass at 1 提升,剩下 1 组下降 1.0 分,出现在 Opus 4.8 上。论文的归因是工具变少之后推理投入下降,这与压缩开销存在天然张力。总体上,30 个仓库与组合的单元全部更便宜,多数仓库在第六个任务之后才明显变便宜,说明省钱的收益随使用累积。

有意思的是团队同时测了三个已有的开源策略:RTK、Serena 和 Aider 的 RepoMap。结论是三者都不可能在所有仓库上都更便宜,在 Django 上都能省钱,换到 SymPy 上反而更贵。这正是经验驱动方法与固定规则方法的分界线,前者的策略跟着仓库走,后者只能预设一种最优。

怎么装,怎么用

它是一个纯标准库 Python 包加一组智能体插件,不需要 GPU,也不需要它自己的 API key。Claude Code 用户克隆仓库后作为 marketplace 添加,再执行 claude plugin install tokeneconomizer@tokeneconomizer 即可。默认开启工具剪枝与循环守卫,微技能需要手动启用,原因是它的提案机制会产生额外模型调用,这笔账要不要付由使用者自己判断。

学到的仓库状态保存在本地 ~/.tokeneconomizer 目录。论文发表后大约两周,仓库在 GitHub 上拿到约 1600 个 star,对一个学术出身的工具插件来说速度不慢。

这套思路与站内已写过的几个方向同源。GitHub Copilot Fusion 的做法是令牌减半加三档编排,AKV 缓存工程用缓存把智能体成本压下 27.7%,Drex for Search 让智能体在搜索前先做决策从而省掉六成步数,共同点都是不再靠换一个更强的模型来省钱,而是削减重复开销本身。

谁更适合用这套方案

结论很明确:如果团队反复在同一个仓库里用 Claude Code、Codex 或 Copilot CLI,TokenEconomizer 值得装。它把经验留在仓库侧,任务越做越省,这正是智能体成本控制长期缺的那一层。

如果每个任务都是一次性脚本,或者任务类型分散在大量互不相干的仓库里,收益会明显衰减,因为三条机制里有两条依赖跨任务的重复事实积累。这种场景下工具剪枝那一项仍然有效,值得单独开启。

还有一个容易被低估的坑。压缩开销与保住推理质量之间存在直接冲突,论文里唯一一次 Pass at 1 下降就出现在成本降幅最大、剪枝最狠的那组配置上。对成功率敏感的任务,建议先在短周期任务上跑一轮对比,再决定要不要全量铺开。

常见问题

TokenEconomizer 需要改模型或改智能体代码吗?不需要。它把智能体当黑盒,不动权重,也不动智能体本身的循环,只通过提示词、工具设置和智能体发出的事件流这三个接口介入。安装是纯 Python 包加插件的形式,Apache 2.0 协议。

能省多少,代价是什么?SWE-Bench 上平均成本下降 18.4% 到 30.9%,5 组设置里 4 组 Pass at 1 提升,Opus 4.8 那组下降 1.0 分。成本数字已扣除控制器自身的模型调用,属于净值。另外多数仓库要到第六个任务之后才明显变便宜。

和现有的开源省钱方案比怎么样?团队横向测了 RTK、Serena 与 Aider 的 RepoMap,三者在 Django 上都能降成本,但在 SymPy 上会升成本,没有一种固定策略能处处更优。TokenEconomizer 的差异在于策略跟着具体仓库的经验走,因此可以做到 30 个组合单元全部更便宜。

小结

编码智能体的账单失控,往往不是因为模型变贵,而是因为智能体每次都在重新学习同一个仓库。TokenEconomizer 把这件事量化了:23 个工具 schema 里 16 个从未被调用,17% 的失败任务吃掉 32% 的开销,前序任务积累到 5 个之后 30% 的工具调用在重复更早的动作。三个开关对应的机制把这类浪费逐块削掉,18.4% 到 30.9% 的平均降幅是开源方案里少见的结果,而且代码是 Apache 2.0,装上去就能试。对把编码智能体当日常生产工具的团队,这笔账值得先算一遍。

相关阅读