
你有没有遇到过这种情况:用 AI 编程助手写代码,工具输出动辄几万 token,账单蹭蹭往上涨,但其实大部分都是废话?
上周我在 GitHub 上翻项目,发现了一个叫 Headroom 的开源工具。看名字以为是做前端的,点进去才发现这玩意儿是专门给 AI agent 做"减肥"的。
60-95% 的 token 压缩率?我一开始不信。
于是我决定翻翻它的源码,看看这个压缩到底怎么实现的。
先看看它解决了什么问题
用 AI 编程助手的人都知道一个痛点:上下文太贵了。
你让 Claude Code 帮你搜一下代码库,它可能返回 100 条搜索结果,每条都带完整的代码片段。结果你还没开始干活,几万 token 就没了。
Headroom 的思路是:在这些内容到达 LLM 之前,先压缩一遍。
你的 Agent → Headroom(本地压缩) → LLM关键点在于:本地运行,数据不出去。这对于在意隐私的团队来说很重要。
压缩算法的选择让我意外
翻到源码后,我发现 Headroom 不是简单地截断文本。它有三套压缩方案,针对不同类型的内容:
SmartCrusher 专门处理 JSON。AI agent 返回的工具输出大多是 JSON 格式,里面一堆缩进、引号、重复的 key。SmartCrusher 直接把这些"装饰"去掉,数组里的对象只保留必要字段。
CodeCompressor 是 AST 感知压缩。它不是简单删注释或空行,而是解析成抽象语法树,然后根据语法结构压缩。支持 Python、JS、Go、Rust、Java、C++。它"懂"代码。
Kompress-base 是机器学习压缩。他们自己训练了一个 HuggingFace 模型,专门用来压缩文本。这是最硬核的部分。
一个让我印象深刻的设计:CCR
翻着翻着,我发现了一个叫 CCR(Compressed Context Retrieval)的东西。
普通压缩工具的问题是:压缩了就没了。万一 LLM 需看原始内容怎么办?
Headroom 的做法是:压缩后保留原始内容在本地,LLM 可以通过 headroom_retrieve 工具按需拉取。
这个设计很聪明。压缩是为了省钱,不是为了丢信息。
实际效果如何?
官方给了一些数据:
我特别关注准确性部分。他们在 GSM8K(数学)、TruthfulQA(事实问答)上做了测试,压缩后准确率基本没掉,TruthfulQA 甚至还有 3% 的提升。
一个有趣的细节:headroom learn
源码里有个功能叫 headroom learn。
它的作用是:挖掘失败的会话,分析原因,然后自动写入 CLAUDE.md 或 AGENTS.md。
它能从你的失败中学习,然后把教训写成规则,让 agent 下次别犯同样的错。
这个功能让我想到一个问题:我们平时遇到 agent 犯蠢,是不是都是手动改配置文件?Headroom 把这个流程自动化了。
我的判断
适合每天重度使用 AI 编程助手的人,尤其是团队里多个 agent 需要共享上下文、在意 token 成本的场景。
不太适合只用一个 provider 的原生压缩功能,或者沙箱环境跑不了本地进程的情况。
代码质量不错,架构设计有想法。特别是 CCR 和 headroom learn 这两个功能,说明作者不是在做简单的文本替换,而是在认真思考 agent 时代的上下文管理问题。
值得试试,尤其是如果你每天都在为 token 账单头疼的话。
项目地址:https://github.com/chopratejas/headroom
许可证:Apache 2.0
夜雨聆风