Caveman Skill:让 AI 编程 Agent 砍掉 65% Token 的穴居人说话法
总结
Caveman 是一个让 AI 编程 Agent 用”穴居人”风格说话的 Skill + Token 压缩代理。它把冗长的输出废话砍掉,同时在读取端压缩日志、测试输出、JSON 等内容。4 月以玩笑起家,一周破 4,000 Star,现已突破 100,000 Star,获 Adobe Research 论文背书、JetBrains 实测验证、被 The Primeagen 专门做视频reaction,是今年 AI 开发者工具里传播最广的病毒式项目之一。
功能与原则
Caveman 包含三个层次的能力:
Skill(小型石子):一条规则文件,装进任何支持 Skill 的 AI 编程 Agent(Claude Code、Codex、Cursor、Windsurf 等 30+),让 Agent 的输出从”商务邮件体”变成”洞穴壁刻体”,只说该说的。
Proxy(大型石子):运行在本地机器上的代理,拦截 Agent 与 AI 服务商之间的通信,将日志、测试输出、JSON、diff 等内容在传给模型之前做压缩,原始内容存在本地 SQLite,模型可随时拉回。
Middleware(中间层):一行代码包装已有的 LangChain / Vercel AI SDK / OpenAI / Anthropic 调用,对工具输出做同样压缩。
核心原则:永远保留原始内容的精确还原能力;从不压缩代码、命令、文件路径和报错信息;只压缩”围绕它们的废话”。
认可度
- GitHub Star:截至 2026-10-02 突破 100,000+(README 原文:”Now past 100,000″)
- 传播轨迹:2026 年 4 月一个周五的玩笑项目 → 一周破 4,000 Star → 被 The Primeagen 做视频reaction → Adobe Research 发论文(CAVEWOMAN,arXiv 2606.24083)→ JetBrains 官方实验室做 86 组对照实测
- 第三方验证:
- Adobe Research:caveman 风格压缩各模型输出,节省 1.4–3× 实现成本
- JetBrains:Skill 单独使用减少 8.5% 输出 Token,代码质量无显著变化(p=0.82)
- 本_repo 自测:Skill 模式下中位输出 Token 减少 50%
- Proxy 模式:18/18 答案正确,输入 Token 减少 33.2%(95% CI: 14.6%–48.5%)
链接
GitHub:https://github.com/JuliusBrussee/caveman
原作者
JuliusBrussee(GitHub 个人开发者)。项目始于一个周五下午的玩笑,但数据跑出来之后认真做了工程化,目前维护者态度严谨——README 里主动标注”HTML 压缩那行是红的,它就是红的”,不隐藏失败数据。
介绍
大多数 AI 编程 Agent 的输出像封面信,读取像消防水带。每个 Token 都是钱,但 Agent 每天在日志、测试结果、diff、搜索结果上花掉的 Token 比在代码上还多。
Caveman 从两个方向同时压缩:
输出端:一条规则文件,把 Agent 的废话删掉,只留核心信息。例如解释 React 重新渲染问题,正常 Agent 用 69 Token,caveman 模式 19 Token,说的是同一件事。
输入端:本地 Proxy,在内容到达 AI 提供商之前先行压缩。本_repo 对 18 个真实工作场景做了 54 次测评,每次答案都对照已知正确答案验证,最终结果:输入 Token 减少 33.2%,18/18 答案正确。
Adobe Research 的论文还发现了一个有趣的边界:把人类提示词也压缩成 caveman 风格反而让模型答得更长更差——所以 Caveman 的规则只改 Agent 的嘴,不改你的输入。
特点
- Token 节省效果有第三方背书:Adobe Research 论文 + JetBrains 实验室 86 组实测,非自说自话
- 完整可逆:压缩后原始内容存在本地 SQLite,Agent 可随时拉回,零信息损失
- 30+ Agent 兼容:Claude Code、Codex、Cursor、Windsurf、Cline、Copilot、Gemini CLI、Qwen Code 等,一个 Skill 文件全搞定
- 隐私优先:Proxy 运行在本地,不上传原始内容;Skill 本身不上传任何数据
- 工具链透明:README 里把自己和 RTK、Headroom、context-mode、pxpipe 放在同一张表里比,诚实列出自己的红行(HTML 压缩那一格)
使用方法
Skill(小型石子,最快上手):
npx skills add JuliusBrussee/caveman -g
之后在 Agent 里说 /caveman 激活,stop caveman 恢复正常。另有 /caveman lite、/caveman ultra 强度可调。
Proxy(大型石子,深度压缩):
npm install -g @caveman-ai/cli && caveman setup --install
caveman claude # 或 codex / gemini / aider / opencode / pi 等
自己的 App 里用 Middleware:
npm install @caveman-ai/middleware @caveman-ai/sdk
# TypeScript + Vercel AI SDK 示例
# pip install 'caveman-middleware[langchain]' caveman-sdk # Python
import { wrapModel } from '@caveman-ai/middleware'
const model = wrapModel(openai('gpt-4o'), { provider: 'openai' })
完整安装脚本(支持全平台):
# macOS/Linux
curl -fsSL https://raw.githubusercontent.com/JuliusBrussee/caveman/v3.0.0/install.sh | bash
# Windows
irm https://raw.githubusercontent.com/JuliusBrussee/caveman/v3.0.0/install.ps1 | iex
使用场景与人群
适用场景:长期运行 AI 编程 Agent 的开发者;Token 费用敏感的个人开发者或小团队;需要高频调用 Agent 的 CI/CD 流水线。
目标用户:用 Claude Code/Windsurf/Cursor 等工具做日常开发的工程师;构建 AI 编程 Agent 产品的团队;关注 AI 成本优化的技术决策者。
输入与输出案例
案例 1:输出压缩
输入(Agent 被问”为什么 React 组件会重新渲染”):
正常 Agent(69 Token):”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 Agent(19 Token):”New object ref each render. Inline object prop = new ref = re-render. Wrap in useMemo.”
案例 2:Proxy 输入压缩
在 CSV 异常值查找场景(原始日志文件):
- 直接 Claude Code 输入:165,823 Token
- 通过 Caveman Proxy 压缩后:74,484 Token(减少 55.1%)
- 18 个场景综合:减少 33.2%,答案质量不变(18/18 正确)
附:Adobe Research 论文 CAVEWOMAN(arXiv 2606.24083)显示,caveman 风格在 8 个模型、5 个数据集上节省 1.4–3× 实现成本;JetBrains 实验室 2026 年 7 月实测 Skill 单独使用减少 8.5% 输出 Token,代码质量无显著差异。
评论区
登录后可评论。