模型 / 数据集
JuliusBrussee/caveman avatar
JuliusBrussee/caveman

Caveman:用压缩器给 Claude Code 的上下文瘦身,省 token 但不丢答案

Caveman 将详细的命令输出重写为紧凑的格式,以便 Claude Code 可以在常规工具结果上花费更少的令牌。

105,741 个 Star6,117 个 ForkJavaScriptMIT

秒懂

它是什么?
Caveman 是一个面向 AI 编码代理的中间层,它把冗长的命令输出压成紧凑格式,号称在固定基准里省下 33.2% 的输入 token。本文拆解它的代理、技能、学习报告三个组件,并指出它的适用边界。
适合谁用?
Caveman 适合那些已经依赖 Claude Code、Codex 或 Gemini CLI 做日常编码、且被长上下文和 token 成本困扰的开发者。它的代理模式无需改代码,压缩有字节级恢复副本,风险相对可控。
能商用吗?
请先确认。这个仓库使用的许可证不在我们自动归类的范围内,商用前请阅读仓库里的 LICENSE 文件。
还在维护吗?
在维护。仓库在最近一天内有新的提交。
用什么语言写的?
主要是 JavaScript(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决的是 token 账单,不是代理智商

Caveman 的出发点很直接:AI 编码代理每次调用都要把整个上下文发给模型,而其中大部分是命令输出、日志和搜索结果。这些文本冗长且重复,模型读完才能回答问题,token 就烧掉了。Caveman 做的是在请求发往提供商之前,把输入压成紧凑格式,让代理读得更少。它的口号是“why use many token when few do trick”,这既是调侃也是定位。它不改变代理的推理能力,只改变它看到的文本。项目分两个产品:一个是 Caveman Proxy,压缩输入;另一个是 skill,让代理用简短的“caveman 语”回答。前者省的是读的 token,后者省的是写的 token。两者可以独立使用。适合的人群是重度使用 Claude Code、Codex 等代理的开发者,尤其是那些上下文窗口频繁被打满、成本按 token 计费的用户。

压缩器怎么决定保留什么:detect() 与六种类型

Caveman Engine 的核心是 `detect()` 函数,它先识别 payload 的类型,然后路由到对应的压缩器。README 里给出了六种类型和各自的保留策略。比如 `json` 类型保留键、结构和 error/message 子树,折叠重复数组,目标节省 70% 到 90%。`log` 类型只保留错误、堆栈跟踪和首尾行,丢掉 INFO 和进度噪声,目标节省 85% 到 95%。`code` 类型保留 imports、签名和类型,省略函数体,但保证语法仍然有效。`diff` 类型保留文件头和变更行,省略重复上下文。`search-result` 保留顶部和底部的命中,外加诊断和安全相关的命中。`text` 或 HTML 保留标题、开头结尾上下文和重要段落。这个设计的关键在于“压缩后答案依赖什么”。它不追求无损压缩,而是追求保留能让代理正确回答的信息。另外还有一个 `contextwindow.Pack()` 函数,它根据 BM25 相关性、最近性和错误信号,把候选上下文塞进一个 token 预算,同时保持原始顺序,让时间线不被打乱。

安装:两条路径,两种许可

安装分两条路。第一条是装代理,用于节省输入 token。命令是 `npm install -g @caveman-ai/cli && caveman setup --install`,然后运行 `caveman claude` 或 `caveman codex`、`caveman gemini` 等。代理运行时是 BSL-1.1 许可,CLI 是 MIT。第二条是装 skill,用于节省输出 token。命令是 `npx skills add JuliusBrussee/caveman`,支持 30 多个代理。还有全量安装脚本,适用于 Node.js 18+,会配置 Claude Code 的 hooks 和状态行。Windows 用户可以用 PowerShell 脚本。单代理安装也有专门命令,比如 Claude Code 用 `claude plugin marketplace add JuliusBrussee/caveman && claude plugin install caveman@caveman`,Gemini CLI 用 `gemini extensions install`。代理模式不需要改代码,也不需要 Caveman 后端,它把请求转发给你选的提供商,恢复副本存在本地磁盘。Claude Pro/Max 的 OAuth 凭证会原样传给 Anthropic。

caveman learn:先看你的 token 去哪了,再决定要不要省

Caveman 不只是压缩工具,它还带一个诊断功能。`caveman learn` 会读取你磁盘上的代理历史,支持 Claude Code、Codex、Gemini CLI 和 opencode,aider 需要设置 `CAVEMAN_AIDER_ROOT`。它只读本地,不需要账号。输出是一份报告,包含 Cave Score、按流量排序的 token 消耗点、每个消耗点的一行修复建议、每个会话深入上下文窗口的程度,以及一个回放:如果应用这些修复,过去会话能省多少。报告还给出按列表价格计算的 30 天成本。这个功能的价值在于它把优化从拍脑袋变成了数据驱动。`caveman learn implement` 会把修复计划交给你的代理,配合 `caveman-learn` skill,让代理逐个提出 diff,只有你同意才应用,然后重新测量,如果没降低每轮 token 就回滚。README 强调“Caveman never makes your agent dumber to make it cheaper”,意思是它不降低代理能力来省钱。

代理的基准数字:33.2% 是怎么来的,以及它的边界

README 引用了一个固定基准:54 次运行的 Claude Code 对比,Caveman Proxy 比直接使用 Claude Code 少了 33.2% 的提供商报告输入 token,同时通过了全部 18 个精确答案检查。这个数字来自项目自己的文档 `docs/WRAP-BENCHMARK.md`,方法是 `benchmark_counterfactual`。必须指出,这是项目自报的数字,不是第三方独立测试。33.2% 是一个平均节省,但不同负载差异很大。压缩器对 `log` 类型的目标节省是 85% 到 95%,对 `code` 只有 40% 到 70%。如果你的会话里代码占比高,节省可能远低于平均值。另一个限制是压缩是有损的,虽然恢复副本在磁盘上,但代理在压缩后的文本上推理,如果压缩器误判了关键信息,答案可能出错。比如 HTML 类型只保留标题和重要段落,如果代理需要读取页面中的某个表格细节,而它被当作噪声丢掉了,结果就会偏差。

替代方案:提示词工程与更贵的模型,思路完全不同

Caveman 不是唯一的省 token 思路。一个简单的替代是写更短的提示词,让代理少说废话,但这只影响输出,不影响输入。另一个替代是直接换用上下文窗口更大的模型,比如某些提供商的高端模型,但那是用钱换空间,没有改变浪费的本质。还有一个思路是手动精简工具输出,比如在 shell 里用 `grep` 过滤日志,或者在 CI 里只打印错误。这些方法不需要额外安装,但每次都要手动做,而且不适用于代理内部的工具调用。Caveman 的差异在于它自动化了这个过程,并且是在代理和提供商之间插入一个本地代理层,这意味着它可以动态地根据 payload 类型选择压缩策略,而不是一刀切。它还有一个恢复机制,原始字节可以找回,这一点手动 grep 做不到。但手动方法没有许可问题,也没有额外运行时。

维护与升级:版本节奏和许可的坑

仓库最近一次推送是 2026 年 8 月 23 日,同一天发布了 v2.3.1、v2.3.0 和 bin-v1.1.3,说明开发活跃。但没有提供升级路径的细节,比如是否自动更新,还是需要手动重新安装。安装脚本可以安全地重复运行,这意味着升级可能通过重跑安装脚本来完成。许可方面,CLI 是 MIT,但代理运行时是 BSL-1.1。BSL-1.1 不是 OSI 批准的开源许可,它有使用限制,通常限制生产环境使用,除非满足某些条件。这意味着如果你打算在商业项目里长期使用代理模式,需要仔细阅读 BSL-1.1 的条款。skill 部分是 MIT,可以放心。另一个维护成本是代理需要本地运行,如果你在多台机器上使用,每台都要装。`caveman learn` 依赖本地历史,如果历史文件被清理,报告就会不准确。

编辑结论

Caveman 适合那些已经依赖 Claude Code、Codex 或 Gemini CLI 做日常编码、且被长上下文和 token 成本困扰的开发者。它的代理模式无需改代码,压缩有字节级恢复副本,风险相对可控。不适合对输出格式有严格要求的场景,比如需要原始日志做审计,或者你的代理依赖完整 HTML 结构来理解页面。也不适合只想要一个纯 MIT 工具的人,因为代理运行时是 BSL-1.1 许可。在采用前,先跑 `caveman learn` 看你的历史会话里哪些 sink 最大,再决定是否启用代理。若你只想要输出风格更简洁,可以先装 skill 试试,它不改输入,风险更低。最终判断:Caveman 的价值在于它把 token 优化从提示词工程变成了一个可测量的本地层,但它的 33.2% 数字来自一个固定基准,你自己的会话可能完全不同。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记