Caveman Skill:让 Claude Code 输出砍 65% Token 的病毒级省钱神器

在所有 Claude Code 插件里,能把「话痨」问题一刀切掉、再叠加 33% 输入压缩代理的,就是 JuliusBrussee/caveman。它用一个极简 SKILL.md 把 Agent 的「客套话」削掉,号称平均砍掉 65% 输出 token;又用 Caveman Proxy 在请求侧再砍 33.2% 输入 token,合计可以让单次会话成本逼近对折。从 HN 一夜爆红到 Product Hunt Featured,从 0 到 80k+ 星只用了几个月,现在是 GitHub 趋势榜、skills.sh 注册表的双料顶流。

功能与原则

Caveman 2 由两条独立可叠加的节省路径组成:Skill 模式让 Agent 在不损失技术准确度的前提下,用「穴居人」语法回答——砍掉冠词、客套、铺垫,但代码块、错误信息、技术名词原样保留;Proxy 模式则是一台本地 HTTP 代理,先识别 JSON、日志、代码、Diff、搜索结果等不同 payload 类型,再用对应的压缩机在送往 LLM 前进行字节级可逆压缩。设计原则是「让模型别再表演『我很乐于助人』」:输出侧砍客套、输入侧砍冗余,但绝不以牺牲正确率为代价——其官方基准显示所有 18 个Exact-Answer 检查仍然 100% 通过。

认可度

  • GitHub Star:截至 2026-08-28 约 80,700+(增长曲线显示近期日均 +900 星,仍在陡峭上扬期)
  • trending 经历:多次登陆 GitHub Trending 日榜/周榜;Product Hunt 获 Featured Badge;trendshift.io 与 skills.sh 双重收录
  • 社媒讨论量:Hacker News 上引发「AI Yap」主题共鸣,Reddit r/ClaudeAI 多帖置顶;中文社区在 CSDN/掘金/搜狐多篇万阅读文章解读
  • 生态兼容:官方宣称支持 30+ AI Agent,覆盖 Claude Code、Codex、Cursor、Windsurf、Cline、Gemini CLI、OpenClaw、Hermes 等

链接

  • 仓库:https://github.com/JuliusBrussee/caveman
  • 文档:https://github.com/JuliusBrussee/caveman/blob/main/docs/README.md
  • 安装指南:https://github.com/JuliusBrussee/caveman/blob/main/INSTALL.md
  • 基准:https://github.com/JuliusBrussee/caveman/blob/main/docs/WRAP-BENCHMARK.md

原作者

Julius Brussee(GitHub: @JuliusBrussee)。来自荷兰的开发者,专注 Agent 工程化与 Token 经济,最初只是想解决自己 Claude Code 的「过度礼貌输出」,没想到这个简单想法迅速演化为一个由 Skill + Proxy + Engine + MCP Server 组成的完整 token 优化栈,并衍生出独立的 caveman-ai CLI 工具

介绍

Caveman 不是把 Agent 变笨,而是把 Agent 工作中真正烧钱的部分砍掉。Skill 部分只改写「表达层」——它在 SKILL.md 中明确定义「Drop articles(a/an/the)、Drop filler(just/really/basically)、Drop pleasantries(sure/certainly/happy to)」,并提供 6 档强度(lite / full / ultra / wenyan-lite / wenyan-full / wenyan-ultra),其中 wenyan-full 让 Agent 用文言文回答,利用「文言文是信息密度最高的人类语言之一」进一步压缩。

Proxy 部分则严肃得多。它是 BSL-1.1 协议下的本地代理(CLI 为 MIT),能识别 6 种 payload 类型——JSON、日志、代码、Diff、搜索结果、文本/HTML——并对每种类型用专门算法压缩:JSON 保留 keys/structure/error-message 子树并折叠重复数组(节省 70–90%)、日志只留 errors/stack/首尾行(节省 85–95%)、代码保留 imports/signatures/types 而 elide 函数体(节省 40–70%)。contextwindow.Pack() 还会用 BM25 + recency + error signal 把候选 context 装进 token budget,但仍按原始顺序返回,保留时序语义。最关键的承诺:所有压缩字节级可逆mem recover <handle> 能拿回原文。

围绕 Engine 又衍生出一组 CLI 工具:caveman learn 扫描真实会话历史打出 Cave Score 并排序 token sink;caveman trial 做 A/B 实测对比;caveman browse 用本地 Chrome 跑压缩后的 a11y 树(同样查询 121 tokens,比 Playwright ARIA baseline 小 129.8×);caveman toon 提供 TOON 编码器独立使用;甚至还有 MCP Server 暴露 caveman_compress / retrieve / stats / toon_encode / toon_decode 5 个工具给任意 MCP Host 调用。

特点

  • 双向节省叠加:输出端 Skill 砍 65%(实测范围 22–87%),输入端 Proxy 再砍 33.2%,综合下来单位成本接近腰斩
  • 逐类型识别压缩:不是一刀切的「全文本摘要」,而是 JSON/日志/代码/Diff/搜索结果各自一套保留策略,关键字段不丢
  • 字节级可逆mem recover 拿回原文,工程师调试、审计、合规场景零风险
  • 零代码侵入:Proxy 模式不改一行 agent 代码、不依赖 caveman 后端;Claude Pro/Max OAuth 凭证原样透传给 Anthropic
  • 30+ Agent 矩阵:Claude Code、Codex、Cursor、Windsurf、Cline、Gemini CLI、OpenClaw、Hermes、aider 等都支持,开箱即用
  • 方言自由度:6 档强度外加 3 档文言文模式(wenyan-lite / wenyan-full / wenyan-ultra),重度 token 经济用户可直接上文言文

使用方法

一行命令安装 Skill(最常用)

npx skills add JuliusBrussee/caveman

完整安装器(含 Hooks + Statusline + 自动检测所有 Agent)

# macOS / Linux(Node.js 18+)
curl -fsSL https://raw.githubusercontent.com/JuliusBrussee/caveman/v2.3.1/install.sh | bash

# Windows PowerShell 5.1+
irm https://raw.githubusercontent.com/JuliusBrussee/caveman/v2.3.1/install.ps1 | iex

启用 Proxy(输入侧压缩)

npm install -g @caveman-ai/cli
caveman setup --install
caveman claude   # 也可 codex / gemini / aider / opencode / hermes / openclaw

强度切换(会话内随时切换):

/caveman lite        # 不砍冠词,但去客套,专业紧凑
/caveman full        # 砍冠词,允许片段,经典穴居人
/caveman ultra       # 全缩写,箭头表因果
/caveman wenyan-full # 文言文回答,最高压缩
normal               # 退出 caveman 模式

使用场景与人群

  • 重度 Claude Code / Codex 用户:日均消费几十万 token 的个人/小团队开发者,能直接降低月度 API 账单
  • Agent 集群运维方:批量跑 Agent 的工作室/MCP 服务方,输入侧 Proxy 收益会指数放大
  • 教育/演示场景:wenyan-full 文言文模式适合做演讲彩蛋、博客内容素材
  • 不愿碰模型层又想省钱的人:不需要 fine-tune、不需要换模型、不需要改 prompt 体系,直接挂代理就能见效
  • 不适合:极度依赖 Agent 输出「长段叙述、礼仪性回复」的内容创作者(caveman 会让语气变冷)

输入与输出案例

案例 1:技术问答压缩(output 端 Skill)

输入 prompt:

“Why does my React component re-render?”

Normal 模式输出(69 tokens):

“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.”

Caveman full 模式输出(19 tokens):

“New object ref each render. Inline object prop = new ref = re-render. Wrap in useMemo.”

案例 2:工具日志压缩(input 端 Proxy)

原始 pnpm test 失败日志(约 1,400 tokens,包含大量 INFO / progress / verbose stack frames):

经过 Proxy 检测为 log 类型 → 仅保留 errors、stack trace 首尾行、最终失败 assertion → 输出 180 tokens,恢复原文可用 mem recover

实际收益对比(Caveman 官方基准):在同一 Claude Code session 跑同样 10 个任务,未启用 Proxy 时 provider-reported input tokens 为 X;启用 Proxy 后降至 0.668 × X(即 33.2% 节省),18 个 Exact-Answer 检查全部通过。


GitHub: https://github.com/JuliusBrussee/caveman

评论区

0 条评论

登录后可评论。

Skill超级捕获手 13 阅读