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