chopratejas/headroom 是一個給 AI Agent 做上下文壓縮的工具。它解決的問題很現實:Agent 一邊跑命令、一邊讀日誌、一邊搜尋程式碼、一邊塞 RAG 片段,很快就會把上下文視窗填滿,成本和延遲一起上來。
Headroom 的想法是:在內容進入 LLM 之前,先把工具輸出、日誌、檔案、RAG 片段和會話歷史壓縮一次。 README 裡寫的目標很直接:減少 60-95% token,同時盡量保持回答品質。
它解決什麼問題
現在很多 Agent 工具不是模型不夠聰明,而是上下文太髒:
grep、rg、日誌查詢一次回傳幾百上千行;- RAG 檢索片段重複、冗餘、格式混亂;
- JSON、stack trace、SQL 結果裡有大量低價值欄位;
- 多輪調試後,舊輸出佔上下文不走;
- Claude Code、Codex、Cursor、Aider 等工具各自維護上下文,難以共享記憶。
Headroom 做的是「進入模型前的清潔工」。它不取代 LLM,也不取代 RAG,而是在 LLM 前面加上一層壓縮、路由、快取和可回溯檢索。
核心能力
從 README 看,Headroom 主要有幾種使用型態:
- Library:在 Python 或 TypeScript 裡直接呼叫
compress(messages); - Proxy:透過
headroom proxy --port 8787做 OpenAI-compatible 代理程式; - Agent wrap:用
headroom wrap claude|codex|cursor|aider|copilot包一層現有 Agent; - MCP Server:提供
headroom_compress、headroom_retrieve、headroom_stats給 MCP 用戶端使用; - Cross-agent memory:讓 Claude、Codex、Gemini 等工具分享本地記憶並自動去重;
headroom learn:從失敗會話挖礦經驗,寫入CLAUDE.md或AGENTS.md;- Reversible compression:原文不刪除,需要時可透過檢索工具取回。
這幾個形態很關鍵。它不是只能嵌入程式碼裡的 SDK,也不是只能當代理。你可以從最輕的 wrap 模式開始試,再決定要不要接到自己的應用程式。
它怎麼壓縮
Headroom 的架構有幾個關鍵字:
- ContentRouter:識別內容類型,選擇對應壓縮器;
- SmartCrusher:偏向處理 JSON 等結構化內容;
- CodeCompressor:偏向處理程式碼和 AST;
- Kompress-base:用於文字壓縮;
- CacheAligner:讓 prompt 前綴更穩定,提高提供者 KV cache 命中率;
- CCR:儲存原文,需要時再透過 retrieve 找回來。
換成人話說,它不是把所有內容都粗暴摘要成一段話,而是先判斷內容類型,再選不同壓縮策略。程式碼、JSON、普通文字、日誌和 RAG 片段,壓縮方式不應該一樣。
快速安裝
README 給出的安裝方式很直接:
|
|
Python 側需要 Python 3.10+。安裝後可以先試試這幾個指令:
|
|
如果你用的是 MCP 客戶端,可以走:
|
|
如果你只是想驗證效果,最簡單的是先跑 headroom perf,看它對典型工作負載能省多少 token。確認可用後,再把它接到 Claude Code、Codex、Cursor 或自己的 OpenAI-compatible 用戶端。
和普通摘要有什麼區別
普通摘要最大的問題是不可逆。日誌被總結成“資料庫連線失敗”,你就看不到原始錯誤碼、時間戳記、呼叫棧和上下文了。 Agent 後面如果需要細節,只能重新檢查。
Headroom 的一個重點是 reversible:原始內容保存在本地,壓縮後傳給模型;如果模型需要原文,再透過 headroom_retrieve 取回。這個設計更適合調試、程式碼搜尋和生產日誌分析,因為這些場景經常需要回到細節。
當然,這也意味著你要管理本地儲存和隱私邊界。雖然 README 強調 local-first,但只要你把壓縮後的內容發給雲端模型,還是要依照自己的資料安全要求處理。
適合哪些場景
我覺得 Headroom 最適合這些場景:
- Claude Code、Codex、Cursor 常常因為工具輸出太長而變慢;
- 用 Agent 分析大倉庫,搜尋結果和文件片段很容易爆上下文;
- SRE 排障時要把日誌、trace、設定和指令輸出交給模型看;
- 做 RAG 應用,檢索結果冗餘嚴重;
- 想在多個 Agent 工具之間分享本地記憶;
- 想把 MCP 工具連接到已有 AI 工作流程。
如果你只是偶爾問幾句聊天,或者 prompt 很短,就不一定需要它。 Headroom 的價值主要在「Agent 真正在工作」的時候出現。
使用時要注意什麼
上下文壓縮不是魔法。它能省 token,但也可能帶來新問題:
- 壓縮策略不合適時,模型可能拿不到關鍵細節;
- 程式碼和日誌場景要測試 retrieve 是否可靠;
- 接代理模式時,要確認請求到底經過哪些本地端和雲端環節;
- 團隊使用時,要定義好本機快取、會話記錄和敏感資料保留策略;
- 不要只看 token savings,也要看任務完成率和誤判率。
我的建議是用真實任務測試,而不是只看 demo。例如拿一組歷史 bug、CI 日誌、RAG 查詢和程式碼搜尋任務,分別比較「直接餵模型」和「經過 Headroom」後的成本、速度和答案品質。
小結
Headroom 是一個很典型的「上下文工程」工具。它不追求再造一個 Agent,而是站在 Agent 和 LLM 中間,把進入模型的內容壓乾淨、壓短,並保留取回原文的能力。
它適合已經在使用 Claude Code、Codex、Cursor、Aider、Copilot CLI 或 MCP 工具的人。如果你的痛點是“模型上下文經常被日誌和工具輸出撐爆”,Headroom 值得試;如果你的問題只是模型能力不夠,單純壓縮上下文就不一定能解決。