← 查看文章

Agent 工具

给 AI 装上刹车:少说废话的压缩框架 caveman

深拆 JuliusBrussee/caveman:它不是让 AI 装可爱,而是把“少说废话”写成规则、边界、安装适配和统计。

给 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.

翻成人话就是:技术内容留下,废话删掉。

它会删这些东西:

  • 客气话,比如 Surehappy to
  • 填充词,比如 reallybasicallyactually
  • 过度委婉,比如 you might want to consider
  • 没必要的过程汇报,比如“我现在将检查这个文件”。

但它也明确写了保护区:

  • 代码块不改。
  • 命令不改。
  • API 名不改。
  • 文件路径不改。
  • 报错原文不改。
  • 技术术语不乱翻。

这就不是一句“请简洁回答”能做到的。

很多压缩类提示词会犯一个错:只要求短,不告诉 AI 什么不能碰。结果它可能把错误信息改写掉,把命令参数省掉,或者为了显得更短,造一些没人用的缩写。

caveman 反而在这里很细。它甚至提醒不要把 config 硬缩成 cfg,因为 tokenizer 未必省 token,读者还要多解码一次。

这条规则很朴素,也很值钱:短不是目的,少解码才是目的。

3. 它怎么实现:规则、安装适配、统计脚本三层

看源码时,我会把 caveman 拆成三层。

第一层是表达规则。

skills/caveman/SKILL.md 写了触发条件、压缩强度、保留对象和退出方式。用户说 /cavemantalk like cavemanless tokens,它就进入压缩模式;用户说 normal mode,它就退出。

它还分了几个强度:

  • lite:去掉客气话和废话,句子还比较正常。
  • full:默认模式,允许短句和片段。
  • ultra:更狠,能一个词说清就不写一句。
  • wenyan 系列:用偏文言的方式进一步压缩中文表达。

第二层是安装适配。

仓库里有 INSTALL.mdbin/install.jsbin/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”靠谱多了。数字不靠聊天里的自我感觉。

caveman 的技术实现:SKILL.md 负责压缩规则,installer 负责适配不同 Agent,hooks 和子 Skill 负责统计、压缩文件和专用场景

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 回答,尽量短,但不要改代码、命令和错误原文。

我会建议先从 litefull 开始。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 就很容易把有用信息一起压没。

如果自己实现一个压缩表达 Skill,重点是先写保护区,再写压缩规则,最后加退出和统计

8. 我的判断:短不是目的,少解码才是

caveman 看起来像玩笑,源码里却有不少认真东西。

它没有停在“请简洁回答”。它把简洁拆成了规则、等级、保护区、退出条件、安装适配和统计脚本。

我不一定会长期用默认的 full 模式。中文里如果每行都压成碎句,读久了也像另一种 AI 味。但它的设计思路很值得抄。

好 Skill 不是把一句提示词写长。

好 Skill 会告诉 AI:什么可以省,什么不能省,什么时候这套规则应该让位。

如果你只是想用,把 https://github.com/JuliusBrussee/caveman 给 AI,让它帮你安装,然后先试 /caveman lite

如果你想学着写,别只写“回答简洁一点”。先写清楚三件事:删什么,保留什么,什么时候暂停压缩。

AI 越会执行,人的判断越要往前放。caveman 留下来的真正启发,不是让 AI 说话更短,而是把“短到哪里才不伤信息”这件事写成规则。