caveman 深读:用原始人语法压缩 coding agent 的 token 账单
caveman 是一个 Go 编写的 prompt 压缩代理,把 coding agent 的啰嗦回话改写成短句,官方称能省约 65% 的输出 token。本文拆解它的压缩逻辑、输入侧优化、Auto 路由与 Blocks 机制,以及它不愿触碰的边界。
它解决的不是“回答太长”,而是按 token 付费的肉疼
114437 个 star 摆在热榜第 24 名,caveman 的火爆有一个非常具体的背景:coding agent 的上下文越来越贵。
Claude Code、Codex、Gemini CLI 这类工具在一次会话里反复读写大量文本,token 消耗直接折算成钱。
caveman 的切入点很窄:把 agent 输出的自然语言解释压成短句,代码、命令、路径等负载保持逐字不动。
README 里那个 React 重渲染的例子最能说明问题:63 个 token 的解释压到 20 个,修复方案完全一样。
它卖的不是“更聪明”,是“一样聪明,但少烧 65% 的输出 token”。
压缩发生在输出侧,而不是输入侧
很多 prompt 压缩工具的思路是改写用户输入,让模型读得更少。caveman 明确拒绝这条路。
README 提到 Adobe Research 的 CAVEWOMAN 论文:压缩用户自己的 prompt 会让答案变差。
所以 caveman 的规则第一条就是“你的 prompt 保持原样”。它只动 agent 的回复。
JetBrains 的 86 个真实编码任务测试显示,agent 会话里大部分 token 是代码和工具调用,这些内容 caveman 不动。
于是团队把压缩方向扩展到了 agent 读的东西和运行的东西上,而不只是它说的话。
这个判断值得注意:输出 token 的节省对按次付费的场景未必有意义。README 自己写了,GitHub Copilot 按请求付费,短回答省不了钱。
压缩不是乱砍,而是一套受控英语规则
caveman 的“原始人式”输出不是随便删词。它基于 ASD-STE100,也就是航空维修手册用的受控英语规范。
规则包括:先给答案,一句一个意思,单句最多 20 词,主动语态,一个术语只对应一个概念。
冠词可以删,但否定词、数字、单位必须保留。代码、命令、路径、报错信息逐字符不变。
更关键的是它知道什么时候停:安全警告、不可逆操作、用户已经困惑时,会恢复完整句子。
README 给了一组数据:在 claude-opus-5-5 上,十道开发者问题,无指令输出 6983 token,“简洁回答”压到 4334,/caveman 是 4119,/ultracave 是 2693。
也就是说,新模型本身已经吃下了“简洁”这个指令,caveman 在它之上只能再挤 3% 的中位数,而 /ultracave 能多挤 35%。
规则本身要花掉约 1160 个输入 token。如果你的计费方式不关心输出长度,这个成本就是纯亏。
输入侧压缩的收益更猛,但诚实部分也更多
Read less 这个模块在 file 层面能把 CSV、日志、YAML、测试输出、JSON 压掉 98% 以上。
但整会话维度数字就保守很多:六类文件综合下来,会话输入 token 省 33.2%。
原因是会话里还有系统提示词和工具定义,这些不参与压缩,所以整体幅度被稀释。
README 用相当大的篇幅主动暴露坏数据:HTML 没有压缩器,会话反而多花 9.9%;会话数据来自 2026 年 8 月的旧引擎;测试文件里都藏了一条目标记录,压缩器可能正好把它丢掉。
这种“红行保留”的做法在开源项目里不多见。它让数字可信,但也提醒你:你自己的仓库结构、文件噪声分布,会直接决定实际省多少。
Auto 与 Blocks 在改 agent 的工作方式,不只是改语气
Auto 模块的定位是模型路由:每个请求选一个模型和 effort 档位。
在 85 个 SWE 任务上,Auto 只靠 Claude 模型拿到 43.7% 的解决率,对比 Opus 5.5 xhigh 的 44.3%,成本从 7.83 美元降到 3.59 美元,中位耗时从 35.2 分钟砍到 15.9 分钟。
README 自己说明:这个差距在样本量下无法区分(±7),而且大部分节省来自 Auto 对简单任务降低 effort。
如果你本来就在 Opus medium 档,预期节省会更小——文档没有给出这个场景的测量。
Blocks 模块解决的是另一种浪费:agent 每次会话都重新写一遍同样的脚本,用完就丢。
Purdue 测量过这个习惯最多能占到任务成本的 9.57%。caveman 的做法是把脚本固化进仓库,agent 下次直接调用。
README 给出的数字里有一个 honest 行:grep-defs 这个 block 输给裸 grep,它还是被保留在表里。
边界与判断
caveman 的 star 数很大,但它的核心收益并不是均匀分布的。
如果你用 API 按 token 付费,输出侧压缩是实打实的省钱。如果你按请求付费,输出压缩没有意义,输入侧压缩和 Blocks 才可能有用。
HTML 场景目前是负收益,Auto 的节省主要来自降低 effort,而不是什么魔法路由。
它还要求 Node.js 22.13+,并且会接管本机多个 agent 的配置,这对不想被全局代理绑住的人是个侵入点。
我的判断:这是一个把“少说废话”工程化得很认真的项目,但它的价值高度依赖你的付费模式和 agent 工作负载。
如果你每个月的 coding agent 账单里输出 token 占大头,值得装。如果你按请求付费或者重度依赖 HTML 页面读取,先看 caveman trial 的 A/B 结果再决定。