Caveman v4.0:从原始人说话到六件套 token 优化系统

项目:JuliusBrussee/caveman 仓库:https://github.com/JuliusBrussee/caveman 语言:Go 今日 Star:+530 HN #1

目录
  1. Caveman v4.0:从"原始人说话"到六件套 token 优化系统
  2. 一、一个被 Adobe 引用的"笑话"
  3. 二、核心洞察:模型不是在"思考",是在"翻译"
  4. 三、ASD-STE100:航空维修手册的启示
  5. 四、v4.0 的六件套:从单点工具到系统
  6. 五、Auto:让模型自己选模型
  7. 六、"Your prompts stay yours":一个反直觉的设计
  8. 七、Blocks:代码复用的正确姿势
  9. 八、为什么这件事比看起来重要

Caveman v4.0:从"原始人说话"到六件套 token 优化系统

项目:JuliusBrussee/caveman
仓库:https://github.com/JuliusBrussee/caveman
语言:Go | 今日 Star:+530 | HN #1

一、一个被 Adobe 引用的"笑话"

2026 年 4 月,一个叫 caveman 的项目冲上 Hacker News 第一。它的口号是:

"why use many token when few token do trick"

(为什么用很多 token,当少量 token 就能搞定。)

听起来像段子。但五个月后,Adobe Research 在一篇论文里引用了 caveman 的方法,实测在 8 个模型上平均省 1.4-2.4 倍成本。JetBrains 做了 A/B 测试,8.5% 输出 token 减少,答案质量无显著差异(p=0.82)。Elasticsearch Labs 基于 caveman 的方法重做了一个版本。

一个"原始人说话"的段子,为什么会被 Adobe 和 JetBrains 认真研究?

二、核心洞察:模型不是在"思考",是在"翻译"

caveman 的第一件 rock 叫 Say less。它做的事情是:把 agent 的输出从"完整英文段落"压缩成"控制英语"。

举个例子。agent 原本会输出:

"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 把它压缩成:

"New object ref each render, so React re-renders. Wrap the prop in useMemo."

63 token 变成 20 token。答案一样,修复一样。

这里有一个关键洞察:模型的大部分输出不是"思考过程",是"语言包装"。真正的信息是"新对象引用导致重渲染,用 useMemo 包裹",但模型习惯性地加上"The reason... is likely because..."、"When you pass..."、"I'd recommend..."这些连接词和客套话。

caveman 不是在"破坏语法",是在"剥离语言包装,只留信息内核"。

三、ASD-STE100:航空维修手册的启示

caveman 的设计灵感不是凭空来的。它参考了 ASD-STE100(Aerospace Specification for Simplified Technical English)——航空维修手册使用的受控英语。

航空维修手册为什么用受控英语?因为维修技师在 3 万英尺高空修飞机时,不能有歧义。"Remove the bolt" 不能被理解成 "Check the bolt"。ASD-STE100 规定了:

  • 每个词只有一个意思
  • 每句话不超过 20 个词
  • 不用被动语态
  • 不用比喻
caveman 把同样的原则应用到 AI 输出上。模型说 "I'd recommend using useMemo" 和 "useMemo" 在信息上等价,但前者多了 4 个 token。在航空维修场景,受控英语是为了安全;在 AI agent 场景,受控英语是为了 token 效率。

这是一个跨域同构:同一个原则(控制语言复杂度),在航空业解决"安全问题",在 AI 业解决"成本问题"。

四、v4.0 的六件套:从单点工具到系统

caveman v4.0 不再只是一个"压缩输出"的 skill,它变成了六件套(caveman 叫 "rocks"):

Rock做什么效果
Say less压缩输出语言63→20 token
Read less压缩输入文件(CSV/日志/YAML)28k→314 token(98.9%)
Auto自动选模型(贵模型做难题,便宜模型做简单题)54% 成本下降
Blocks复用之前的代码块397→76 token
Waste fixes识别并跳过无效修复减少空转
Browse压缩网页内容129.8x 体积减少
最值得说的是 Read less。agent 读一个 28000 行的 CSV 文件,原本要消耗 28000 token。caveman 把它压缩成 314 token 的结构化摘要(列名、类型、样本、统计量),agent 照样能回答关于这个 CSV 的问题。

这解决了一个根本问题:agent 不需要读全文件,它需要的是文件的"结构"。你问"这个 CSV 里有没有 null 值",agent 不需要看每一行,它需要看 schema 和 null 统计。caveman 的 Read less 就是把"全文件"变成"结构摘要"。

五、Auto:让模型自己选模型

Auto 是 v4.0 最有意思的设计。它做的事情是:根据任务难度,自动选择模型。

  • 简单任务(比如格式化 JSON)→ 用 Haiku(便宜)
  • 中等任务(比如写一个 React 组件)→ 用 Sonnet(中等)
  • 困难任务(比如调试并发问题)→ 用 Opus(贵但强)
caveman 官方测了 85 个编码任务,Auto 模式比固定用 Opus 便宜 54%,答案质量一样。

这背后的洞察是:不是所有任务都需要最贵的模型。大多数编码任务的难度分布是长尾的——80% 是简单任务,20% 是困难任务。固定用最贵模型,等于为 80% 的简单任务付了冤枉钱。

Auto 做的事情像一个好的项目经理:简单活派给初级工程师,难活派给高级工程师,不是所有活都让技术总监干。

六、"Your prompts stay yours":一个反直觉的设计

caveman 有一个原则叫 "Your prompts stay yours"(你的 prompt 还是你的)。

什么意思?caveman 不会压缩你的输入 prompt,只压缩 agent 的输出。如果你把 prompt 也压缩成 caveman 风格,agent 的回答质量会下降。

为什么?因为模型是在"完整 prompt"上训练的。你给它 caveman 风格的 prompt,它就离开了训练分布,回答质量下降。但模型的输出不需要完整——输出是模型"生成"的,不是"理解"的,压缩输出不影响理解。

这是一个精妙的区分:输入要完整(匹配训练分布),输出要精简(只留信息)。很多 token 优化工具搞错了这一点,把输入也压缩了,结果答案质量下降。caveman 的设计是:只在输出端做压缩,输入端保持原样。

七、Blocks:代码复用的正确姿势

Blocks 解决的是另一个问题:agent 反复生成相同的代码块。

比如 agent 在调试时跑了 5 次测试,每次都输出完整的测试代码。这 5 次的代码 90% 是一样的,只有几行不同。caveman 的 Blocks 会识别这种情况:第一次输出完整代码,后续只输出 diff。

397 token 变成 76 token。这不是"压缩",是"去重"。

这像 git 的设计哲学:第一次 commit 存完整文件,后续 commit 只存 diff。caveman 把同样的原则应用到 agent 输出上。

八、为什么这件事比看起来重要

caveman 表面上是一个"省 token 的工具",实际上揭示了一个更深的洞察:

AI agent 的输出有大量"结构性冗余"。

不是模型在"思考"时浪费 token,是模型在"翻译思考结果为自然语言"时浪费 token。模型的思考过程是高效的(内部是向量运算),但输出过程是低效的(要生成符合语法的自然语言)。

caveman 的六件套分别针对六种不同的冗余:

  • Say less → 输出语言的冗余
  • Read less → 输入文件的冗余
  • Auto → 模型选择的冗余
  • Blocks → 重复输出的冗余
  • Waste fixes → 无效尝试的冗余
  • Browse → 网页内容的冗余
每一种冗余都对应一种不同的"压缩策略"。这不是一个"压缩工具",是一个"token 冗余分类学"。

Adobe 和 JetBrains 认真研究 caveman 的原因就在这里:它不是在"省 token",是在"揭示 AI 输出的冗余结构"。当你说清冗余在哪里,压缩就是自然而然的结果。


链接

  • 仓库:https://github.com/JuliusBrussee/caveman
  • 主页:https://caveman.so
  • Adobe Research 引用:见 caveman 主页
暂无表态

想参与讨论或点赞?登录后使用完整功能

讨论回复(0)

暂无回复,登录后可参与讨论
合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens