Headroom 是什么?
Headroom 是一个开源的 LLM token 压缩层,专门用于压缩 AI Agent 读取的所有内容——工具输出、日志、RAG 检索结果、文件和对话历史——在发送给 LLM 之前进行智能压缩。
核心价值:同样的答案,只用 5-40% 的 token。对于每天大量使用 AI 编程助手(Claude Code、Cursor、Codex 等)的开发者来说,这意味着 API 成本直接降低 60-95%。
为什么需要 Headroom?
现代 AI 编程助手的工作流程通常是这样的:
用户提问 → Agent 搜索代码库 → 返回 100+ 文件片段 →
Agent 整理所有上下文 → 发送给 LLM → LLM 回答
问题在于:Agent 发送的上下文中,大部分是冗余的。比如:
- 搜索结果返回 100 个代码片段,但真正相关的只有 5-10 个
- 日志文件包含大量无关的时间戳和调试信息
- RAG 检索的文档块有很多重复的前缀
Headroom 通过三层架构解决这个问题:
- ContentRouter — 检测内容类型(JSON、代码、纯文本),自动选择最佳压缩器
- 智能压缩器 — SmartCrusher(JSON)、CodeCompressor(AST 感知)、Kompress-base(HF 模型)
- CCR(可逆压缩) — 原始数据存储在本地,LLM 需要时可以按需检索
Headroom vs 其他方案
| 特性 | Headroom | 原生 Provider 压缩 | 手动精简 prompt |
|---|---|---|---|
| Token 节省 | 60-95% | 20-40% | 取决于人工 |
| 跨 Agent 共享记忆 | ✅ | ❌ | ❌ |
| 可逆压缩(CCR) | ✅ | ❌ | N/A |
| 零代码接入(Proxy) | ✅ | ❌ | N/A |
| 本地运行 | ✅ | ❌(云端) | ✅ |
| 支持多语言 | Python + TS | 仅限 SDK | N/A |
安装 Headroom
Headroom 支持 Python 和 Node.js,推荐使用 pip 安装全功能版本。
Python 安装
# 安装完整版本(包含 proxy、MCP、ML 等所有功能)
pip install "headroom-ai[all]"
# 或者按需安装子模块
pip install "headroom-ai[proxy]" # 仅代理模式
pip install "headroom-ai[mcp]" # 仅 MCP 服务器
pip install "headroom-ai[ml]" # 机器学习压缩模型
要求:Python 3.10+
Node.js / TypeScript 安装
npm install headroom-ai
验证安装
# 检查版本和功能
headroom --version
# 运行性能测试,查看当前环境的压缩效果
headroom perf
快速上手:三种使用模式
Headroom 提供三种接入方式,从易到难:
模式一:Wrap 命令(最简单,零配置)
如果你已经在使用某个 AI 编程助手,只需一条命令即可启用 Headroom:
# 包装 Claude Code
headroom wrap claude
# 包装 Codex
headroom wrap codex
# 包装 Cursor
headroom wrap cursor
# 包装 Aider
headroom wrap aider
# 包装 GitHub Copilot CLI
headroom wrap copilot
执行后,Headroom 会自动: 1. 启动本地代理服务(默认端口 8787) 2. 修改对应 Agent 的配置,将请求路由到代理 3. 打印配置说明,告诉你如何验证是否生效
示例:包装 Claude Code
$ headroom wrap claude
✅ Headroom proxy started on port 8787
✅ Claude Code config updated
To verify, run:
claude "What is 2+2?"
You should see compression stats in the output.
之后每次使用 claude 命令时,请求都会先经过 Headroom 压缩,再发送给 Anthropic API。
模式二:Proxy 代理模式(零代码改动,适合任何语言)
如果你不想修改现有代码,或者使用的是不支持 wrap 的工具,可以单独启动代理服务:
# 启动代理,监听 8787 端口
headroom proxy --port 8787
然后修改你的应用或 Agent 配置,将 API 端点指向 http://localhost:8787 而不是原始的 Anthropic/OpenAI 端点。
示例:OpenAI 兼容客户端
from openai import OpenAI
# 原本的配置
# client = OpenAI(api_key="sk-...")
# 改为通过 Headroom 代理
client = OpenAI(
api_key="sk-...",
base_url="http://localhost:8787/v1" # 指向 Headroom 代理
)
response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "解释这段代码"}]
)
所有经过代理的请求都会被自动压缩,无需修改业务逻辑。
模式三:Library 库模式(最灵活,嵌入应用)
如果你正在开发自己的 AI 应用,可以直接调用 Headroom 的压缩函数:
Python 示例
from headroom import compress
messages = [
{"role": "user", "content": "分析这个日志文件"},
{"role": "assistant", "content": "请提供日志内容"},
{"role": "user", "content": "[... 10000 行日志 ...]"}
]
# 压缩消息
compressed = compress(messages, model="claude-3-sonnet")
print(f"原始 token: {compressed.original_tokens}")
print(f"压缩后 token: {compressed.compressed_tokens}")
print(f"节省: {compression.savings_percent}%")
# 发送给 LLM
response = anthropic_client.messages.create(
model="claude-3-sonnet-20240229",
max_tokens=1024,
messages=compressed.messages # 使用压缩后的消息
)
TypeScript 示例
import { compress } from 'headroom-ai';
const messages = [
{ role: 'user', content: 'Analyze this codebase' },
{ role: 'assistant', content: 'Please provide the files' },
{ role: 'user', content: '[... 50 files ...]' }
];
const compressed = await compress(messages, { model: 'gpt-4' });
console.log(`Saved ${compressed.savingsPercent}% tokens`);
核心功能详解
1. 智能压缩算法
Headroom 内置了多种压缩算法,根据内容类型自动选择:
SmartCrusher — JSON 压缩
专门处理结构化数据(API 响应、配置文件、数据库查询结果):
from headroom import SmartCrusher
data = {
"users": [
{"id": 1, "name": "Alice", "email": "alice@example.com", "created_at": "2024-01-01"},
{"id": 2, "name": "Bob", "email": "bob@example.com", "created_at": "2024-01-02"},
# ... 1000+ records
]
}
crusher = SmartCrusher()
compressed = crusher.compress(data)
# 保留关键字段,移除冗余元数据
# 原始: 50,000 tokens → 压缩后: 5,000 tokens (90% 节省)
CodeCompressor — AST 感知代码压缩
理解代码语法树,只保留关键结构:
from headroom import CodeCompressor
code = """
def calculate_total(items):
'''Calculate total price with tax'''
total = 0
for item in items:
if item.active:
total += item.price * item.quantity
tax = total * 0.08
return total + tax
"""
compressor = CodeCompressor(language="python")
compressed = compressor.compress(code)
# 保留函数签名、控制流、关键变量
# 移除注释、空白、非关键实现细节
支持的语言:Python、JavaScript、Go、Rust、Java、C++
Kompress-base — 通用文本压缩
基于 HuggingFace 训练的专用模型,处理自然语言、文档、日志等:
# 首次使用时会自动下载模型(约 500MB)
headroom proxy
# 模型缓存位置: ~/.cache/headroom/kompress-base
2. CCR 可逆压缩
CCR(Compress-Cache-Retrieve) 是 Headroom 的核心创新:压缩后的数据发送给 LLM,但原始数据仍然保存在本地。如果 LLM 需要查看完整内容,可以调用 headroom_retrieve 工具获取。
工作流程:
1. Headroom 压缩内容 → 发送给 LLM
2. LLM 发现需要更多细节 → 调用 headroom_retrieve(chunk_id)
3. Headroom 从本地缓存返回原始数据
4. LLM 获得完整信息,继续推理
优势: - LLM 首次接收的是压缩版,token 用量少 - 只在必要时才检索完整内容,避免一次性发送大量数据 - 原始数据永远不会丢失
3. 跨 Agent 共享记忆
如果你同时使用多个 AI 助手(比如 Claude Code + Codex + Cursor),Headroom 可以让它们共享压缩后的上下文:
# 启用共享记忆
headroom wrap claude --memory
headroom wrap codex --memory
现在,Claude Code 处理过的代码库索引会被缓存,Codex 可以直接复用,无需重新扫描。这对于大型项目特别有用。
4. MCP 服务器集成
Headroom 可以作为 MCP(Model Context Protocol)服务器运行,任何支持 MCP 的客户端都可以调用:
# 安装 MCP 服务器
headroom mcp install
# 可用的 MCP 工具:
# - headroom_compress: 压缩任意内容
# - headroom_retrieve: 检索原始数据
# - headroom_stats: 查看压缩统计
示例:在 Claude Desktop 中使用
// claude_desktop_config.json
{
"mcpServers": {
"headroom": {
"command": "headroom",
"args": ["mcp", "serve"]
}
}
}
实战案例
案例一:代码库搜索优化
场景: 让 AI 助手在一个 10 万行代码的项目中查找某个功能的实现。
不使用 Headroom:
Agent 搜索 → 返回 100 个相关文件 → 全部发送给 LLM →
Token 用量: 17,765 → 成本高,响应慢
使用 Headroom:
headroom wrap claude
claude "找到用户认证模块的实现"
Agent 搜索 → Headroom 压缩 100 个文件 →
Token 用量: 1,408 → 节省 92%
实际测试数据:
| 工作负载 | 压缩前 | 压缩后 | 节省 |
|---|---|---|---|
| 代码搜索(100 个结果) | 17,765 | 1,408 | 92% |
| SRE 事故调试 | 65,694 | 5,118 | 92% |
| GitHub Issue 分类 | 54,174 | 14,761 | 73% |
| 代码库探索 | 78,502 | 41,254 | 47% |
案例二:多 Agent 协作
场景: 用 Claude Code 做代码审查,用 Codex 生成单元测试,用 Cursor 重构代码。
传统方式: 每个 Agent 都要独立扫描代码库,重复消耗 token。
使用 Headroom 共享记忆:
# 第一步:Claude Code 扫描并缓存
headroom wrap claude --memory
claude "审查 src/auth/ 目录的代码质量"
# 第二步:Codex 复用缓存
headroom wrap codex --memory
codex "为 src/auth/ 生成单元测试"
# Codex 直接使用 Claude 缓存的索引,无需重新扫描
# 第三步:Cursor 继续复用
headroom wrap cursor --memory
cursor "重构 src/auth/ 的错误处理"
节省效果: 第二次及后续的 Agent 可以节省 40-60% 的初始扫描 token。
案例三:日志文件分析
场景: 调试生产环境问题时,需要让 AI 分析 10,000 行的日志文件。
from headroom import compress
import anthropic
# 读取日志
with open("production.log") as f:
logs = f.read()
messages = [
{"role": "user", "content": f"分析这个日志,找出错误原因:\n{logs}"}
]
# 压缩
compressed = compress(messages, model="claude-3-sonnet")
print(f"原始: {compressed.original_tokens} tokens")
print(f"压缩后: {compressed.compressed_tokens} tokens")
print(f"节省: {compressed.savings_percent}%")
# 发送
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-3-sonnet-20240229",
max_tokens=2048,
messages=compressed.messages
)
print(response.content[0].text)
典型效果: 65,694 tokens → 5,118 tokens(节省 92%),而且关键错误信息不会丢失。
性能基准测试
Headroom 在标准基准测试上保持了准确性:
| 基准测试 | 类别 | 样本数 | 基线准确率 | Headroom 准确率 | 差异 |
|---|---|---|---|---|---|
| GSM8K | 数学 | 100 | 0.870 | 0.870 | ±0.000 |
| TruthfulQA | 事实性 | 100 | 0.530 | 0.560 | +0.030 |
| SQuAD v2 | QA | 100 | — | 97% | 19% 压缩率 |
| BFCL | 工具调用 | 100 | — | 97% | 32% 压缩率 |
结论: Headroom 在保持准确性的同时,实现了显著的 token 节省。
复现基准测试:
python -m headroom.evals suite --tier 1
高级配置
CacheAligner — 提升 Provider KV 缓存命中率
CacheAligner 会稳定 prompt 的前缀,使得 Anthropic/OpenAI 的 KV 缓存能够命中,进一步降低成本:
from headroom import CompressionMiddleware
# 在 ASGI 应用中添加中间件
app.add_middleware(CompressionMiddleware)
headroom learn — 从失败中学习
Headroom 可以挖掘失败的会话,自动将修正写入 CLAUDE.md 或 AGENTS.md:
# 启用学习模式
headroom wrap claude --learn
# 当 Claude Code 给出错误答案时,Headroom 会:
# 1. 分析失败原因
# 2. 生成修正提示
# 3. 写入项目的 CLAUDE.md
# 4. 下次会话自动应用修正
自定义压缩策略
你可以通过 Pipeline 扩展自定义压缩行为:
from headroom import PipelineExtension
class MyCustomCompressor(PipelineExtension):
def on_input_received(self, event):
# 在接收输入时执行自定义逻辑
print(f"Received {len(event.content)} bytes")
def on_input_compressed(self, event):
# 在压缩完成后执行
print(f"Compressed to {event.compressed_size} bytes")
# 注册扩展
pipeline.register(MyCustomCompressor())
常见问题
Q1: Headroom 会影响回答质量吗?
答: 不会。基准测试显示准确率保持不变(GSM8K: 0.870 → 0.870)。CCR 可逆压缩确保 LLM 可以随时检索完整内容。
Q2: 数据安全性如何?
答: Headroom 完全本地运行,所有压缩、缓存、存储都在你的机器上完成。原始数据不会发送到任何外部服务器。
Q3: 支持哪些 LLM Provider?
答: 理论上支持所有 Provider,因为 Headroom 工作在 prompt 层面。已验证支持的包括: - Anthropic (Claude) - OpenAI (GPT-4, GPT-3.5) - AWS Bedrock - Google Gemini - 任何 OpenAI 兼容 API
Q4: 压缩会增加延迟吗?
答: 本地压缩通常在 10-50ms 内完成,相比网络请求(几百 ms 到几秒)可以忽略不计。而且由于发送的 token 更少,整体响应时间通常会更快。
Q5: 适合个人开发者还是团队?
答: 两者都适合。 - 个人开发者:每天使用 AI 助手,节省 API 费用 - 团队:跨 Agent 共享记忆,避免重复扫描代码库;统一压缩策略,便于成本控制
总结
Headroom 是一个解决实际问题的高质量开源工具。对于重度使用 AI 编程助手的开发者来说,它可以:
✅ 降低 60-95% 的 token 成本 — 直接省钱
✅ 零代码接入 — headroom wrap claude 一条命令搞定
✅ 跨 Agent 共享记忆 — Claude、Codex、Cursor 共用缓存
✅ 可逆压缩(CCR) — 原始数据不丢失,LLM 可按需检索
✅ 本地运行 — 数据安全,无隐私泄露风险
如果你的团队每月在 LLM API 上的支出超过 $100,Headroom 几乎肯定能帮你省下一大笔钱。
立即开始:
pip install "headroom-ai[all]"
headroom wrap claude # 或你使用的任何 Agent
headroom perf # 查看节省效果
项目地址: https://github.com/chopratejas/headroom
文档: https://headroom-docs.vercel.app/docs