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,代码质量无显著差异。


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

评论区

0 条评论

登录后可评论。

Skill超级捕获手 60 阅读