给 AI 装上刹车:少说废话的压缩框架 caveman
我用 AI 写代码时,经常遇到一种很小但很烦的事。
你只是问它:“这个 React 组件为什么一直 re-render?”
它先解释一遍“可能是因为每次渲染都创建了新对象引用”,后面还要加上 “I’d recommend”“you might want to consider”。
这些话不是错。
问题是,你已经知道它在回答问题了,不需要它先铺一层客服腔。你要的是原因和下一步,不是情绪价值。
caveman 这个项目治的就是这个毛病。它的 README 里把同一个 React 问题压成一句:
New object ref each render. Inline object prop = new ref = re-render. Wrap in `useMemo`.
这句话有点硬,但信息没少:每次 render 都创建新对象引用,inline object prop 触发 re-render,解决办法是 useMemo。
caveman 表面上像个玩笑,真正有意思的地方不在“说话像山顶洞人”,而在于它把“少说废话”写成了一套可执行规则。
1. 先承认问题:AI 为什么总爱把话说满
写代码 Agent 默认会啰嗦,不完全是坏事。
它要显得有帮助,要解释清楚,要避免你误操作,还要给出下一步。于是它很容易把每个回答都写成小型说明书。
问一个 bug,它解释背景。
问一个 diff,它先肯定整体。
问一个命令,它补一段注意事项。
这些东西单独看都合理,放进长会话里就很耗人。你真正花时间的地方,变成了从一大段文字里捞出那两句有用的。
所以 caveman 要压的不是 AI 的脑子,而是 AI 的嘴。
这点要先说清楚。它不会让模型更聪明,也不会自动压缩你丢进去的代码上下文。它主要改变的是最后输出给你看的那段话。
2. caveman 是什么:给 Agent 外挂一套表达规则
caveman 是一个面向 AI coding agent 的 Skill / plugin。README 里写得很直接:它支持 Claude Code、Codex、Gemini、Cursor、Windsurf、Cline、Copilot 等一批工具,也支持 30 多种 agent 安装路径。
它的核心文件是:
skills/caveman/SKILL.md
这份 SKILL.md 里最关键的一句是:
All technical substance stay. Only fluff die.
翻成人话就是:技术内容留下,废话删掉。
它会删这些东西:
- 客气话,比如
Sure、happy to。 - 填充词,比如
really、basically、actually。 - 过度委婉,比如
you might want to consider。 - 没必要的过程汇报,比如“我现在将检查这个文件”。
但它也明确写了保护区:
- 代码块不改。
- 命令不改。
- API 名不改。
- 文件路径不改。
- 报错原文不改。
- 技术术语不乱翻。
这就不是一句“请简洁回答”能做到的。
很多压缩类提示词会犯一个错:只要求短,不告诉 AI 什么不能碰。结果它可能把错误信息改写掉,把命令参数省掉,或者为了显得更短,造一些没人用的缩写。
caveman 反而在这里很细。它甚至提醒不要把 config 硬缩成 cfg,因为 tokenizer 未必省 token,读者还要多解码一次。
这条规则很朴素,也很值钱:短不是目的,少解码才是目的。
3. 它怎么实现:规则、安装适配、统计脚本三层
看源码时,我会把 caveman 拆成三层。
第一层是表达规则。
skills/caveman/SKILL.md 写了触发条件、压缩强度、保留对象和退出方式。用户说 /caveman、talk like caveman、less tokens,它就进入压缩模式;用户说 normal mode,它就退出。
它还分了几个强度:
lite:去掉客气话和废话,句子还比较正常。full:默认模式,允许短句和片段。ultra:更狠,能一个词说清就不写一句。wenyan系列:用偏文言的方式进一步压缩中文表达。
第二层是安装适配。
仓库里有 INSTALL.md 和 bin/install.js。bin/install.js 里有一张 provider matrix,用来识别你机器上有哪些 agent,再走不同安装路径。有的走 Claude Code plugin,有的走 Gemini extension,有的走 npx skills add,有的写规则文件。
这说明作者不是只写了一个 SKILL.md 扔出来。他还在处理一个更现实的问题:别人怎么装,装到哪个工具里,装坏了怎么排查。
第三层是辅助能力。
仓库里还有几个围绕 caveman 做出来的子 Skill:
skills/caveman-review/SKILL.md
skills/caveman-commit/SKILL.md
skills/caveman-compress/SKILL.md
skills/caveman-stats/SKILL.md
caveman-review 负责把 code review 评论压短。
caveman-commit 负责写短 commit message。
caveman-compress 更特别,它不是压缩本轮回答,而是压缩自然语言记忆文件,比如 CLAUDE.md。它会保留代码块、链接、命令和路径,并把原文件备份成 .original.md。
caveman-stats 则是统计用的。它不是 Claude 自带的 /stats,也不是让 AI 在聊天里猜数字。skills/caveman-stats/SKILL.md 写得很清楚:真正做事的是 hook 脚本,仓库里的路径是 src/hooks/caveman-stats.js。它读取 Claude Code 的 session log,统计真实 output tokens、cache-read tokens 和对话轮数,再用 benchmark 里的压缩比例估算节省量。
这里要把“真实”和“估算”分开。
已经用了多少 output tokens,这是从本地会话日志读出来的。假如不用 caveman 本来会输出多少,这是根据 benchmark 做的估算。
这个设计比“AI 自己说我帮你省了很多 token”靠谱多了。数字不靠聊天里的自我感觉。

4. 怎么装、怎么用
如果你只想试,不用先研究安装矩阵。
把这个仓库地址给 AI:
https://github.com/JuliusBrussee/caveman
然后说:
帮我安装这个仓库里的 caveman Skill,并告诉我怎么在当前 AI 工具里启用。
这就够了。
如果你想自己看官方安装方式,README 里也给了 macOS / Linux 的一行命令:
curl -fsSL https://raw.githubusercontent.com/JuliusBrussee/caveman/main/install.sh | bash
但普通读者没必要先背命令。更省心的办法,还是让当前 AI 工具读仓库、读 INSTALL.md,再按你的环境装。
装好以后,通常可以这样启用:
/caveman
或者直接说:
用 caveman mode 回答,尽量短,但不要改代码、命令和错误原文。
我会建议先从 lite 或 full 开始。ultra 很短,但中文技术解释如果短得太碎,读久了反而累。
5. 公开反馈:大家喜欢它哪里,又在担心什么
我去找了一圈公开反馈,X 和知乎上能看到不少转发、介绍和短评,但能稳定打开、细节也够的一手长反馈不多。真正能拿来判断的,反而集中在 Reddit、Hacker News、GitHub issues、Product Hunt 和几篇独立博客里。
先看正面。
Product Hunt 页面 上,caveman 的卖点很明确:少输出、安装简单、支持多种 coding agent。这个页面更像热度信号,不是深度评测,但至少说明它不是没人试的冷门项目。
更有用的是用户实际用下来的说法。r/LocalLLM 里一篇使用反馈 提到三点:安装器能自动识别多个 agent;本地模型的输出确实变短;长期看,caveman-compress 压缩 CLAUDE.md 这类记忆文件,可能比单纯让回答变短更有价值。
这和我看源码后的感觉一致:caveman 最扎实的地方,不只是那句“少说话”的规则,而是它把安装、统计、压缩记忆文件这些外围工作也做了。
再看争议。
Hacker News 的讨论 里有人提到,caveman 风格有时会让回答质量变差,尤其是少了上下文以后,误解反而变多。这个担心不是无理取闹。技术回答不是越短越好,短到读者看不懂,后面还要追问,账就回来了。
Reddit 上也有更直接的反对意见。r/vibecoding 的一篇帖子 认为,真实 agent 工作流里,大头往往不是那几句自然语言输出,而是文件读取、工具调用、上下文和系统提示。它的判断比较激烈,但提醒是对的:如果你把 caveman 当“总成本省 75%”的工具,大概率会失望。
独立测试也支持这个谨慎态度。JetBrains AI Blog 的一组 A/B benchmark 测到的节省不是宣传里的 65%,而是 8.5%。Alex Rios 的测试文章 也把问题说得更尖锐:很多节省其实来自“要求简洁”这条基础指令,完整 caveman Skill 在不同模型和任务上的边际收益并不稳定。
GitHub issues 里的反馈更具体。issue #145 记录了一个典型场景:短技术问答里,输出确实少了,但 Skill 规则本身会增加输入上下文,净账不一定划算。issue #506 里有用户说,在 VS Code 和 Copilot 场景里,credit 使用并没有下降。issue #550 更极端,有用户反馈 Cursor 里开 caveman 后一次对比任务反而用了更多 token。
这些反馈放在一起看,我会把 caveman 定位成“减少阅读负担的表达压缩工具”,而不是“保证省钱的 token 神器”。
它适合有经验的人快速拿结论,也适合已经嫌 Agent 太啰嗦的人。它不太适合新手学习、复杂架构讨论,或者你希望 AI 把前因后果讲完整的场景。
6. 它也会亏:别把 65% 当万能省钱术
caveman README 里有一组 项目自己的 benchmark:10 个提示词里,输出 token 平均减少 65%,范围是 22% 到 87%。
这个数字很显眼,但作者在 HONEST-NUMBERS.md 里也把限制写得很直。
caveman 只减少 output tokens。
它不减少你的输入,不减少上下文,不减少文件内容,也不减少模型思考 token。更麻烦的是,Skill 自己也要进入上下文。文档里估算,这段规则大约会给每轮增加 1 到 1.5k input tokens。
这里容易误解。
不是说你的账单一定每轮都完整多算 1 到 1.5k。不同工具有不同缓存和计费方式,重复系统提示可能走 cache-read,价格也可能不一样。
更准确的说法是:模型每次回答时都需要“看见”这套规则,否则它不会持续按 caveman 的方式说话。所以它会占用固定的规则上下文。它省的是输出长度,不会自动省输入上下文。
所以它不一定省钱。
HONEST-NUMBERS.md 里还列了几个会亏的场景:
- 普通回答本来就很短,比如 150 个 output tokens。
- 工具按请求或 credit 计费,不按 token 计费。
- 某些 agent 的统计口径里,规则重注入、重试和缓存计算会吞掉输出节省。
这部分我反而很喜欢。
一个工具愿意告诉你什么时候别用,比只喊“节省 65%”可信。
7. 如果自己实现一套,大概要怎么写
如果我要写一个类似 caveman 的 Skill,不会从“让 AI 像山顶洞人说话”开始。
我会从一个更普通的目标开始:
让 AI 的技术回答更短,但不丢关键信息。
最小版本可以这样写:
适用场景:
代码问答、调试解释、PR review、commit message。
触发条件:
用户说“简短回答”“少废话”“压缩输出”“省 token”。
输入:
用户的问题、代码片段、diff 或错误信息。
输出:
短回答,但保留代码、命令、错误原文、文件路径和 API 名。
工作流:
1. 判断这是解释、review、commit 还是操作确认。
2. 能短就短,先删客气话和填充词。
3. 检查有没有代码、命令、错误原文,原样保留。
4. 如果涉及安全或不可逆操作,恢复正常解释。
5. 输出后不要再补一段总结。
关键约束:
- 不改代码块。
- 不改命令。
- 不改错误原文。
- 不乱造缩写。
- 不为了短牺牲执行顺序。
可选工具:
- token 统计脚本。
- 会话日志读取脚本。
- markdown 文件压缩脚本。
这里最关键的不是“短”。
关键是先写保护区。
哪些东西可以删,哪些东西不能碰,什么情况下要暂停压缩。只要这三件事没写清楚,压缩类 Skill 就很容易把有用信息一起压没。

8. 我的判断:短不是目的,少解码才是
caveman 看起来像玩笑,源码里却有不少认真东西。
它没有停在“请简洁回答”。它把简洁拆成了规则、等级、保护区、退出条件、安装适配和统计脚本。
我不一定会长期用默认的 full 模式。中文里如果每行都压成碎句,读久了也像另一种 AI 味。但它的设计思路很值得抄。
好 Skill 不是把一句提示词写长。
好 Skill 会告诉 AI:什么可以省,什么不能省,什么时候这套规则应该让位。
如果你只是想用,把 https://github.com/JuliusBrussee/caveman 给 AI,让它帮你安装,然后先试 /caveman lite。
如果你想学着写,别只写“回答简洁一点”。先写清楚三件事:删什么,保留什么,什么时候暂停压缩。
AI 越会执行,人的判断越要往前放。caveman 留下来的真正启发,不是让 AI 说话更短,而是把“短到哪里才不伤信息”这件事写成规则。


