速评:那个省下 97% token 的运行,一个 bug 都没修。
八月二十五号,Shreyash 在 dev.to 上挂出自己的 token 优化栈复盘。五点几美元的账单、三十一个任务、一个被作者亲手拆掉的最漂亮的数字——今年我读到最诚实的一份 agent 成本记录,大概就是这个。
事情本身不复杂。他在真实工程任务里用 Claude Code,token 上限撞得太勤,预算烧得太快,于是想搭一套省 token 的栈,前提是不掉质量。为此开了两个仓库,一个放安装文档和脚本,一个专门做基准,用来验证那些工具是不是真有效。第一版塞了五个:Graphify、Serena、Headroom、LiteLLM、Caveman。最后真正进测试的是四个,Headroom 和 LiteLLM 被踢出去。
踢得对。
Headroom 的文档写着,装完之后「无需任何行为变更」。作者真去装了才发现,唯一不把 claude 整个包进额外启动器的注册方式,是执行 headroom init claude,而这只会挂一个按需调用的 MCP 工具,上下文压根不会自动压缩。他跑 headroom doctor 才确认:不另外起一个代理进程、不覆盖 ANTHROPIC_BASE_URL,就没有任何请求真的经过 Headroom。这跟「无需行为变更」之间的距离不是措辞松紧的问题,是方向反了。顺带,它那个 mcp serve 跟当时的 MCP SDK 直接崩,得锁 mcp<2 才起得来。
LiteLLM 更直白:它那个「按用量路由」是在几个服务商端点之间做负载均衡,不是按任务难度逐任务分流;而 Claude Code 整个会话钉死一个模型,你根本没法按步骤难度中途换。工具没错,是它被想象出来的那个用法不存在。
这两条才是这份复盘最该被传出去的部分。不是「我又发现一个好用的省 token 工具」,是「我扒了两个工具的文档,发现写的和做的不是一回事」。
然后说规模。作者自己设计的完整方案是十六个仓库、五个栈版本、每项重复三次,差不多四千八百次运行——这才像个基准。实际跑出来的是三十一个任务、两个栈版本、一次重复,用的是最便宜的 claude-haiku-4-5 中等推理。就这样,三十一对里也只完成了十一对,API 花了五块六。五块六后面还有 EC2、Docker 构建、在 EC2 和 Apple Silicon Mac 之间来回调的几天,都没算进去。
按同样的单次成本往外推,跑完全套,哪怕全程 Haiku,也要一千二美元往上——而这还是在任何结果可信之前。换 Sonnet,输入输出都是 Haiku 两倍的价,同一个测试直接过两千四。他停掉项目,理由就是这个:不是思路错了,是财务上跑不动。他还提了一句,早先在 Sonnet 5 高推理强度上跑过一个小规模试点,结果可用,算完成本觉得继续跑太贵。
我读到这儿卡了一下。这个圈子里「可信」正在变成一件按次付费的东西,报价比大多数人愿意相信的高一个数量级。
Haiku 那批数据本身就没法看:Java 任务上零个正确修复,还顺手破坏了基线原本已经修好的三个 Python 任务里的两个。作者拒绝把「三个里对两个」说成成功率,这点他没含糊。但他抠出来的那条才真正值得记——token 数据和正确性数据在小样本里就已经指向相反方向,而批次里最差的结果产出了最好看的数字。
这不是跑得不够的问题,是两个指标在互相打脸。那个省 97% 的运行是这样:基线用三十轮把 bug 修好,接了栈的 agent 把一份清晰的独立缺陷报告读成了有歧义,第一轮提了个澄清问题就停了,日志里记着 num_turns: 1,没有报错,也没有任何可评分产物。于是它省下了 97% 的 token。一个连正确性都没测的节省率,省的是谁的钱?
他的修正方案其实很朴素:把「每个任务的成本」换成「每个已解决任务的成本」。按这个算法,那个省 97% 的运行解决了零个任务,单位成本是无穷大。他还补了一条几乎零成本的检查项——轮次数。基线三十轮、某次运行一轮,这种落差就摆在同一份日志里,token 面板不会告诉你,但数据本来就在那儿。评论区 Edu Peralta 那句说得更直接:token 面板对沉默和提前退出的奖励,跟对真实压缩的奖励一模一样。这句我认同得不能再认同。
评论区里最狠的一条来自 Heinrich Neb。他给了一个可验证的假设:Graphify 和 Serena 拿符号视图替掉原始文件阅读,可能把第二个调用点或者某条数据路径藏起来了,要验证就对比基线和栈运行实际读过的文件、符号集合。作者的回复是轨迹没留——测试框架调 claude -p --output-format json 只回一个最终摘要,轮次数、token、成本、结果文本,没有逐轮工具调用。然后 Heinrich Neb 指出 stream-json 本来就能输出逐事件结果。这条等于说,缺的不是数据,是捕获设置。作者把选项加进指南了。
还有一个没查出来的:那个能干净应用、却修不过测试的补丁,日志里找不到原因,作者自己也不确定,只怀疑是行为问题而非上下文丢失,矛头指向 Caveman。
不用把这事写得多悲壮。一个独立开发者自己掏钱、自己搭基准、五个工具有两个过不了验证就踢出栈、最后坦白「项目停是因为穷,不是因为我错了」,还欢迎别人提 PR 指出他试点方案哪里写错了——这在这个圈子里已经算稀有物种。多数做法是挑一个对自己有利的样本,把 token 节省那一行截个图,发出去。
这里立个 flag。接下来半年,会有一批 agent 工具拿「token 节省 XX%」做首页大字,我赌没有一家会把 num_turns 一起放出来。等这些数字开始在选型会上被当论据用,回来翻这一条。
