caveman 调研:让 Claude Code 砍掉 65% 输出 token,挖矿模式比裸跑快 3 倍
你给 agent 一段需求,它回了一篇小作文。装上 caveman,它说 “New obj ref. Inline prop = re-render. useMemo.” —— 87% token 没了,技术准确性 100%。
写在前面
2026 年,AI coding agent 已经进了流水线。一个 ticket 跑完,Claude Code / Codex / Copilot CLI 的输出日志常常是几千 token 的 prose:开场白、复述问题、列可能性、补充 caveat、问要不要继续——真正有用的那行答案藏在第 7 段里。
更糟的是,agent 自己每轮都把自己的输出再读回去(context 回灌)。你让 agent 写一个 200 行的 React 组件,它读了 3k token 的旧回复后才动笔。token 成本乘以 token 时间,乘以 token 等待——一个能让 agent “ 少说话 ” 的工具,等同于让 agent “ 快 3 倍 ”。
caveman(https://github.com/JuliusBrussee/caveman)的解法是给 agent 装一条规则:drop filler, keep substance, use fragments。不是 prompt 调优,是 skill + hooks 强制激活。MIT 协议、30+ agent 平台、~30 秒装完、~65% 平均输出压缩(范围 22-87%)。
这篇文章就拆开看:它解决什么问题 → 4 级强度怎么选 → benchmark 真假 → 你该不该装。
一、它解决什么问题
一句话:让 agent 闭嘴,但不让 agent 变笨。
caveman 是个 Claude Code skill/plugin(也兼容 Codex / Gemini / Cursor / Windsurf / Cline / Copilot 等 30+),把 agent 的 ” 礼貌小作文 ” 压成 ” 穴居人电报 ”——技术准确性 100%,输出 token 平均砍 65%。
“The reason your React component is re-rendering is likely because you’re creating a new object reference on each render cycle. When you pass an inline object as a prop, React’s shallow comparison sees it as a different object every time, which triggers a re-render. I’d recommend using useMemo to memoize the object.”
—— 119 token“New object ref each render. Inline object prop = new ref = re-render. Wrap in useMemo.”
—— caveman,19 token
同样的答案,同样的模型。87% 没了。
项目基本面
| 字段 | 值 |
|---|---|
| 项目 | JuliusBrussee/caveman |
| 协议 | MIT |
| 部署平台 | 30+(Claude Code / Codex / Gemini / Cursor / Windsurf / Cline / Copilot 等) |
| 强度档位 | 4 级(lite / full / ultra / wenyan) |
| 平均输出压缩 | ~65%(范围 22-87%) |
| 速度提升 | ~3×(agent 自己的 context 回灌更快) |
| 技术准确性 | 100% |
| 安装命令 | curl -fsSL https://raw.githubusercontent.com/JuliusBrussee/caveman/main/install.sh \| bash(~30 秒) |
| 配套项目 | caveman-code:完整终端 coding agent,比 Codex CLI 少 ~2× tokens |
| 触发词 | /caveman 或 “talk like caveman” |
| 退出 | “normal mode” |
二、4 级压缩强度:从 ” 去填充 ” 到 ” 文言文 ”
caveman 提供 4 档强度(/caveman lite|full|ultra|wenyan),切换立即生效,到 session 结束。
| 档位 | 风格 | 典型产出 | 适用场景 |
|---|---|---|---|
| lite(去填充) | 砍 “I think / I’d recommend / Sure!” 这类礼貌套话 | “The issue is X. Use Y.” | 想保留完整句子,只删口水 |
| full(默认 穴居人) | 主谓宾 + fragments + 省略系动词 | “New obj ref each render. Inline prop = new ref. Wrap useMemo.” | 大多数日常 debugging、code review |
| ultra(电报式) | 名词堆 + 标点符号当分隔 | “Bug: auth middleware. Token expiry check < not <=. Fix.” |
复杂 stack trace / 多文件改动 / 想边读边执行 |
| wenyan(文言文) | 用最少的汉字 | 〔不典型用例,参考其他语言示例:token 省更多〕 | 中文场景 / 中文技术写作 |
几个实战片段(来源 caveman README):
Ultra 风格:"Bug in auth middleware. Token expiry check use < not <=. Fix:"
Ultra 风格:"Bug: re-render. Inline prop = new ref. useMemo."
关键设计 :caveman 压缩风格,不压缩语言。你写葡语,caveman 输出葡语;西语、法语同理。Code / command / error string / URL 字节级保留。
wenyan 这档是给中文场景开的彩蛋:同样压缩率下,汉字的信息密度比英语高,所以 token 砍得更狠。
三、benchmark 数据:10 prompts 均值 65%,最高 87%
caveman 的关键证据是 README 自带的 10 prompts 三臂对照(baseline / terse prompt / caveman skill),token 数走 Claude API 真实计数,不是估算。
主表:caveman vs 普通模式
| 任务 | Normal | Caveman | 节省 |
|---|---|---|---|
| Explain React re-render bug | 1180 | 159 | 87% |
| Fix auth middleware token expiry | 704 | 121 | 83% |
| Set up PostgreSQL connection pool | 2347 | 380 | 84% |
| Explain git rebase vs merge | 702 | 292 | 58% |
| Refactor callback to async/await | 387 | 301 | 22% |
| Architecture: microservices vs monolith | 446 | 310 | 30% |
| Review PR for security issues | 678 | 398 | 41% |
| Docker multi-stage build | 1042 | 290 | 72% |
| Debug PostgreSQL race condition | 1200 | 232 | 81% |
| Implement React error boundary | 3454 | 456 | 87% |
| Average | 1214 | 294 | 65% |
三个值得细看的事实
- debugging 类最受益(83-87%)。agent 看到 bug 后的反应是 “I think the issue might be…” —— 这部分全部是填充。砍掉后 100% 准确率不打折。
- 架构讨论类只省 22-30%。讨论 “microservices vs monolith” 本身就需要结构化论证,caveman 砍不掉论证骨架。这种场景别装 ultra,会变味。
- agent 自己的 context 回灌 让 token 节省变成速度节省。agent 每轮都把自己上一轮的输出再读一次——你让 agent 写 200 行代码,它读自己 3k token 的旧回复后才动笔。砍 65% 等于 context 读快 65%,等于 agent 整体快 ~3 倍。
学术旁证:2026-03 那篇 “Brevity Constraints” paper
arXiv 论文 “Brevity Constraints Reverse Performance Hierarchies in Language Models”(2026-03)发现:强制大模型输出简短回复,能让某些 benchmark 的准确率上升 26 个点。verbose 不一定更好,有时候 ” 少字 ” 等于 ” 多对 ”。caveman 不直接验证这篇 paper,但它的实测结果跟论文结论一致。
诚实建议:别拿 87% 当对外说辞,65% 是更可信的均值。取决于任务类型,22% 到 87% 都正常。
四、30+ 个 agent 平台 + 7 个 skill 命令
caveman 走 ” 一次规则集 + hook 强制激活 ” 路线。同一份 skills 在 30+ agent 上跑,几个主流装法:
一键安装(macOS / Linux / WSL)
curl -fsSL https://raw.githubusercontent.com/JuliusBrussee/caveman/main/install.sh | bash
~30 秒,需要 Node ≥ 18。没有的 agent 自动跳过,可重复运行。
Windows
irm https://raw.githubusercontent.com/JuliusBrussee/caveman/main/install.ps1 | iex
7 个核心 skill
| 命令 | 用途 |
|---|---|
/caveman [lite\|full\|ultra\|wenyan] |
切换强度档位,session 内持续生效 |
/caveman-commit |
Conventional Commit 格式,subject ≤ 50 字符,why over what |
/caveman-review |
PR 单行评论:L42: 🔴 bug: user null. Add guard. |
/caveman-stats |
实时 session token 用量 + lifetime 节省 + USD,可用 --share 生成可发推的图 |
| `/caveman-compress | |
| 把 CLAUDE.md / project notes 压缩成 caveman 文风,每 session 砍 ~46% 输入 token | |
caveman-shrink |
MCP 中间件,包装任意 MCP server 压缩 tool description(npm) |
cavecrew-* |
穴居人 subagent(investigator/builder/reviewer),比原生少 ~60% tokens |
Claude Code / Codex / Gemini 三个 内建 always-on——开 session 就生效,不用打 /caveman。Cursor / Windsurf / Cline / Copilot 通过 --with-init 写 always-on rule file。其他 agent 用 /caveman 命令触发。完整特性矩阵见 INSTALL.md。
状态栏徽章
装完后 Claude Code 状态栏会显示 [CAVEMAN] ⛏ 12.4k (lifetime tokens saved),每跑一次 /caveman-stats 更新。嫌吵可以 export CAVEMAN_STATUSLINE_SAVINGS=0 关掉。
五、与 ponytail 对比:砍代码 vs 砍回复
ponytail 那篇调研(ponytail-research)发出去后,读者群有个高频问题:caveman 和 ponytail 是一回事吗?——不是。两者是互补的。
| 维度 | ponytail | caveman |
|---|---|---|
| 砍的目标 | 代码行数(少写) | 回复 token(少说) |
| 核心机制 | YAGNI 阶梯 6 步决策链 | drop filler + fragments + hook 强制 |
| 平均压缩 | -54% LOC / -22% tokens | -65% output tokens / LOC 不动 |
| 多平台 | 14 个 | 30+ 个 |
| 装上后 agent 风格 | “ 这个 date picker 不需要包,用 <input type=date>“ |
“New obj ref each render. Wrap useMemo.” |
| 副作用 | 砍依赖、砍 options、砍未来扩展点 | 砍开场白、砍补充 caveat、砍 ”would you like” |
| 触发点 | 写代码前 | 写完代码后 |
| 互补? | ✅ 可以同时装 | ✅ 可以同时装 |
最佳实践:
- 装 ponytail + caveman:ponytail 让 agent 少写代码(省 LOC),caveman 让 agent 少解释代码(省 prose)。一个管 ” 产 ”,一个管 ” 说 ”。两个一起装,实测 token 比单独装 ponytail 再省 ~7-10%(来自 ponytail benchmark 对照组)。
- 只装 caveman:你要的是一个 ” 快 3 倍 + 简洁输出 ” 的 agent,原代码风格不变。
- 只装 ponytail:你的瓶颈是 review 的代码量,不是 agent 的等待时间。
- 两个都不装:你 agent 主要任务是聊天 / 写文档 / 写 PR 描述——这些场景 prose 不能砍。
ponytail benchmark 里 caveman 是对照组之一:caveman 让 LOC -20%(靠 ” 少写点解释 prose”),但 token +7%(解释被压成短句,总 token 反而略涨)。这不是矛盾——压缩的不是同一个东西。
六、实战:2 个场景跑通
场景 1:React re-render bug
任务:” 我的 React 组件每次按键都 re-render,怎么修?”
没装 caveman 的输出(典型 Claude Code 默认行为):
“Great question! A React component can re-render on every keystroke for several reasons. The most common cause is passing a fresh object or function reference as a prop on each render, which defeats React’s referential-equality bail-out and forces the child to reconcile again… I’d recommend using useMemo to memoize the prop. Here’s an example: …”
—— ~1190 token
装上 caveman full 后的输出:
“New object ref each render. Inline object prop = new ref = re-render. Wrap in useMemo.”
—— 159 token
节省 87%。同时 agent 已经把 useMemo 改进了代码——技术准确性 100%。
场景 2:Auth middleware token expiry
任务:” 我的 auth middleware 没拦截过期 token,看看代码。”
没装 caveman:
“Sure! I’d be happy to help you with that. The issue you’re experiencing is most likely caused by your authentication middleware not properly validating the token expiry. Let me take a look and suggest a fix. The current implementation uses
<instead of<=in the expiry check, which means tokens that expire exactly at the current time will not be rejected…”
—— ~704 token
装上 caveman:
“Bug in auth middleware. Token expiry check use
<not<=. Fix:”
—— 121 token
节省 83%,fix 本身完整保留。
两个场景的共同点:agent 的 ”thinking out loud” 占了 80%+ 的输出,真正的 fix 只有 1-2 句话 。caveman 把 thinking 留在 thinking tokens 里(caveman 不压缩 thinking tokens,只压缩 output tokens——这点很重要),只把 output 削到骨头。
七、决策表
| 场景 | 推荐 | 理由 |
|---|---|---|
| 你每天跑 50+ ticket,agent 输出刷屏 | 装 caveman full | 砍 65% prose + speed 3×,立竿见影 |
| 你主要写长 PR 描述 / 设计文档 / 中文技术文章 | 不装 | prose 是产品不是噪音,压缩即损伤 |
| 你已经在用 ponytail | 加装 caveman ultra | 互补(少写 + 少说),再省 7-10% |
| 你跑 Codex CLI / Cursor / Windsurf | 装 caveman | 30+ 平台全支持,~30 秒装完 |
| 你要的是一个完整终端 coding agent,不只是 skill | 装 caveman-code | https://github.com/JuliusBrussee/caveman-code,同款压缩进 agent 全栈,比 Codex 少 ~2× tokens(25 任务 gpt-5.5 实测:524k vs 1,010k,pass rate 14/25 vs 15/25) |
八、风险与坑
1. 中文支持只覆盖 wenyan 档
lite / full / ultra 三档是英文优化档,中文 agent 上用会有点怪——agent 会写出 “ 新 obj ref 每次 render” 这种中式英语。中文用户首选 /caveman wenyan,或者直接让 agent 用英文回复 + 你本地翻译。ponytail 在中文场景下没这个问题(它管代码不管 prose)。
2. 架构讨论类只省 22-30%
caveman 不适合所有任务类型。”Compare microservices vs monolith” 这种需要论证骨架的问题,砍 30% 后只剩论点堆叠,关键 caveat 容易丢。遇到长解释任务前,先 /caveman-stats 估算节省率,低于 40% 的别装。
3. thinking tokens 不压缩
caveman 只砍 output tokens。Anthropic 的 extended thinking / o1 / o3 的 internal reasoning tokens 完全不动。如果你的账单大头是 thinking(比如 o3-pro 跑代码生成),caveman 省不了多少——这种情况下看 caveman-code 那种 ” 全栈压缩 agent”。
4. caveman-shrink(MCP 压缩包)刚发布
caveman-shrink 是 MCP 中间件,能压缩任意 MCP server 的 tool description。npm 已发,但 README 把它列为 ”experimental”。生产环境的 MCP server 先测再上,别一刀切全 wrap。
5. Hook 失败回退
如果 install hook 写失败(比如 file permission),agent 会 fallback 到 “ 正常说话 ”。症状是 caveman-stats 显示 0 tokens saved。修法:cat ~/.claude/hooks/caveman.flag 看 flag 文件是否存在;不存在就 bash install.sh 重跑一遍。
九、总结
最值得装的 3 个理由:
- 65% token / 3× 速度 / 100% 准确性——三项独立指标,没有一个以牺牲其他为代价。这在 AI 工具圈极其罕见。
- 30+ 平台全支持 + ~30 秒装完——一次性投入,换所有 agent 工作流都加速。
- 跟 ponytail 互补——ponytail 砍代码,caveman 砍 prose;一起装省 token 的两个维度都不漏。
一句话建议:
先 curl | bash 装一周 auto-activate,只跑 debugging / refactor / code review 这三类任务(caveman 收益最高),一周后看 /caveman-stats 的 lifetime 节省。如果超过 50%,永久装;如果低于 30%,只在 wenyan 档位下偶尔用。
如果不想装 skill 但想要同款压缩效果,caveman-code 是把压缩写进 agent 全栈的版本——比 Codex CLI 少 ~2× tokens,pass rate 14/25 vs 15/25(25 任务 gpt-5.5 benchmark,2026-05-18)。适合想要 ” 开箱即快 2 倍 ” 的开发者。
参考
- caveman GitHub:https://github.com/JuliusBrussee/caveman
- caveman-code GitHub:https://github.com/JuliusBrussee/caveman-code
- caveman 完整安装指南:https://github.com/JuliusBrussee/caveman/blob/main/INSTALL.md
- caveman-shrink npm:https://www.npmjs.com/package/caveman-shrink
- caveman benchmarks(原始数据):https://github.com/JuliusBrussee/caveman/blob/main/benchmarks
- caveman evals(三臂对照):https://github.com/JuliusBrussee/caveman/blob/main/evals
- Brevity Constraints paper:https://arxiv.org/abs/2604.00025
- ponytail 调研(互补工具):ponytail-research
让技术被看见,让极简成为常态。