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 通过三层架构解决这个问题:

  1. ContentRouter — 检测内容类型(JSON、代码、纯文本),自动选择最佳压缩器
  2. 智能压缩器 — SmartCrusher(JSON)、CodeCompressor(AST 感知)、Kompress-base(HF 模型)
  3. 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.mdAGENTS.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