節省 60-95% token,回答品質不變——這不是行銷口號,而是經過 GSM8K、TruthfulQA、SQuAD 等多個基準測試驗證的結果。

如果你每天使用 AI 程式設計工具(例如 Claude Code、Codex、Cursor、Aider),你可能已經體會到 token 成本膨脹的痛苦。第一次對話只要幾百個 token,但到了第 10 輪,工具輸出、RAG 結果、日誌檔案堆積起來,每次呼叫可能達到數萬甚至十幾萬 token。按 Anthropic 的 API 定價,10 萬 token 一次的成本大約是 $0.30 到 $3.00(取決於模型等級)。如果你一天呼叫幾十次,日帳單輕鬆破百美元。

Headroom 就是為了解決這個問題而生。它由 Chopratejas 開發(Apache 2.0 開源),發布不到 4 個月就在 GitHub 上獲得了 15,000+ stars。它的運作方式是在你的 AI Agent 傳送資料給 LLM 之前,先對資料做智慧壓縮——識別內容類型、路由到最適合的壓縮演算法、用本機模型處理文字、甚至可以逆轉壓縮(CCR 技術)讓 LLM 按需檢索原始資料。

本文將從安裝開始,一步步帶你上手 Headroom,並展示如何在 Claude Code、Codex 等主流 AI 程式設計工具中使用它來降低 token 成本。

為什麼 AI Agent 需要上下文壓縮?

在理解 Headroom 的價值之前,我們先來看一個典型的 AI Agent 使用情境。

假設你使用 Claude Code 協助排查一個生產問題。工作流程是這樣的:

  1. 你描述問題 → Agent 讀取日誌檔案(5k token)
  2. Agent 搜尋程式碼庫 → 回傳 10 個相關檔案內容(15k token)
  3. 執行偵測指令 → 收集工具輸出(8k token)
  4. 檢視系統狀態 → 執行 ps auxdf -hdmesg(10k token)
  5. 檢視最近的 Git 提交 → git log 輸出(3k token)

到第 5 步,上下文已經膨脹到 40k+ token。而且每次互動都會把之前的內容全部帶上。到第 10 輪互動時,上下文輕鬆達到 10 萬 token 以上

這就帶來了三個問題: - 成本爆炸:按 Anthropic Claude 3.5 Sonnet 的 $3.00/百萬輸入 token 計算,100k token 的輸入每次 $0.30,50 次/天就是 $15 - 速度下降:LLM 處理更長上下文的時間線性增加 - 精度受損:長上下文中,LLM 容易「迷失」在中間的細節裡

傳統的解決方案(截斷、滑動視窗)要麼遺失重要資訊,要麼需要複雜的自訂邏輯。Headroom 的方案是智慧壓縮:不同類型的上下文採用不同的壓縮策略,並且可逆。

Headroom 的壓縮原理

Headroom 的核心是一個多層處理管道:

你的 AI Agent → Headroom(本機執行) → LLM 提供方
                     │
                     ├─ CacheAligner:穩定前綴,提高 KV 快取命中率
                     ├─ ContentRouter:識別內容類型,路由到最佳壓縮器
                     ├─ SmartCrusher:壓縮 JSON/結構化資料
                     ├─ CodeCompressor:AST 感知的程式碼壓縮
                     └─ Kompress-base:基於 HuggingFace 模型的自然語言壓縮

每個元件各司其職:

元件 功能 適用場景
CacheAligner 穩定輸入前綴,讓 Anthropic/OpenAI 的 KV 快取真正命中 所有場景
ContentRouter 自動偵測內容類型(JSON/程式碼/文字/日誌)並路由 所有場景
SmartCrusher 壓縮 JSON 陣列、巢狀物件、混合類型結構 工具輸出、API 回應
CodeCompressor AST 感知壓縮,保留語意結構 Python/JS/Go/Rust/Java/C++
Kompress-base 訓練在 agentic 軌跡上的 HuggingFace 文字壓縮模型 自然語言、日誌、RAG

壓縮的可逆性(CCR - Chunked Compression & Retrieval)是 Headroom 區別於其他方案的關鍵——原始資料不會遺失,LLM 隨時可以透過 headroom_retrieve 工具取回原始內容。

安裝 Headroom

基礎安裝

Headroom 在 GitHub 上已有 15,000+ stars,支援 Python 3.10+。

# Python 完整安裝(推薦)
pip install "headroom-ai[all]"

如果你只想要核心功能:

pip install headroom-ai  # 僅基礎功能
# 按需新增額外元件
pip install "headroom-ai[proxy]"   # HTTP 代理模式
pip install "headroom-ai[ml]"      # ML 模型(Kompress-base)
pip install "headroom-ai[code]"    # AST 程式碼壓縮
pip install "headroom-ai[memory]"  # 跨 Agent 記憶
pip install "headroom-ai[mcp]"     # MCP 伺服器模式

如果你使用 pipx

pipx install --python python3.13 "headroom-ai[all]"

Node.js / TypeScript 使用者也可以直接安裝:

npm install headroom-ai

Docker 部署:

docker pull ghcr.io/chopratejas/headroom:latest

驗證安裝

安裝完成後,執行以下指令確認一切正常:

headroom --version

如果顯示版本號,說明安裝成功。

快速上手:三種使用模式

Headroom 提供了三種使用模式,你可以根據場景選擇最適合的一種。

模式一:Inline 函式庫模式(程式設計整合)

如果你在自己的 Python 應用中呼叫 LLM,可以直接將 Headroom 整合到程式碼中:

from headroom import compress

# 假設這是要傳送給 LLM 的訊息
messages = [
    {
        "role": "user",
        "content": "請幫我檢查一下這個專案的程式碼品質問題。"
    },
    {
        "role": "assistant",
        "content": "好的,讓我先看看程式碼結構..."
    },
    {
        "role": "user",
        "content": """以下是目前目錄的檔案結構:
src/
├── main.py       (1250 行)
├── utils.py      (890 行)
├── api/
│   ├── routes.py (650 行)
│   └── models.py(430 行)
└── tests/
    ├── test_main.py(320 行)
    └── test_api.py (280 行)

以下是 main.py 的全部程式碼:
...
(此處省略實際檔案內容,通常包含數千行)"""
    }
]

# 使用 Headroom 壓縮
compressed = compress(messages)

# 壓縮後的訊息
original_tokens = len(str(messages)) // 4  # 粗略估算
compressed_tokens = len(str(compressed)) // 4
print(f"原始: ~{original_tokens} tokens → 壓縮後: ~{compressed_tokens} tokens")

如果你已經在使用 OpenAI 或 Anthropic 的 SDK,可以直接包裝客戶端:

# Anthropic SDK
from headroom import withHeadroom
from anthropic import Anthropic

client = withHeadroom(Anthropic())
message = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    messages=[...]  # Headroom 會自動壓縮
)

# OpenAI SDK
from openai import OpenAI

client = withHeadroom(OpenAI())
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[...]  # Headroom 會自動壓縮
)

模式二:Proxy 代理模式(零程式碼改動)

這是最省事的方式。啟動一個本機代理伺服器,然後把你的 API 呼叫指向它,不需要改一行程式碼:

headroom proxy --port 8787

然後在你的應用中將 API base URL 改為 http://localhost:8787

# 對 Anthropic 使用 Headroom 代理
ANTHROPIC_BASE_URL=http://localhost:8787 claude

# 對 OpenAI 使用 Headroom 代理
OPENAI_BASE_URL=http://localhost:8787 openai api chat.completions.create ...

Proxy 模式會自動攔截所有 API 請求,在傳送前對輸入做壓縮。

模式三:Agent Wrap 模式(一鍵包裝)

這是最便捷的方式——Headroom 可以直接包裝主流的 AI 程式設計工具:

# 包裝 Claude Code
headroom wrap claude

# 包裝 Codex
headroom wrap codex

# 包裝 Cursor
headroom wrap cursor

# 包裝 Aider(自動啟動代理 + Aider)
headroom wrap aider

# 包裝 Copilot CLI
headroom wrap copilot

執行後,Headroom 會啟動一個代理伺服器,並把原工具的命令列參數自動重新導向通過代理。你什麼也不用改,繼續正常使用工具即可。

效能測試

想知道自己的工作負載能省多少 token?直接執行內建的效能測試:

headroom perf

這個指令會模擬實際 Agent 工作負載並回報壓縮率。

進階功能詳解

1. 跨 Agent 共享記憶

如果你同時在用 Claude Code 和 Codex,Headroom 可以讓他們共享壓縮後的記憶

# 開啟 Cross-Agent Memory
headroom wrap claude --memory
headroom wrap codex --memory  # 共享同一個記憶儲存

共享記憶會自動去重,確保相同的上下文不會被多次壓縮儲存。

2. MCP 伺服器模式

對於支援 MCP(Model Context Protocol)的客戶端,Headroom 可以作為 MCP 伺服器執行:

headroom mcp install

這會在 MCP 客戶端中註冊三個工具:

  • headroom_compress:壓縮輸入內容
  • headroom_retrieve:按需取回原始內容(CCR 逆向操作)
  • headroom_stats:檢視壓縮統計資訊

3. 自動學習失敗模式

這是 Headroom 的一個獨特功能——從失敗中學習

headroom learn

它會自動分析 Agent 失敗的對話,找出問題模式,然後將修正規則寫入對應工具的記憶檔案(如 CLAUDE.mdGEMINI.md)。這樣下次遇到類似問題,AI 工具就能自動避開之前踩過的坑。

實戰案例:用 Headroom 壓縮 Claude Code 的 Token 開銷

下面是一個完整的實戰範例,展示如何用 Headroom 包裝 Claude Code 並觀察實際的 token 節省效果。

場景描述

假設你正在維護一個中型 Python 專案,需要排查一個偶發的記憶體洩漏問題。典型的除錯流程包括:

  1. 閱讀錯誤日誌(~5k token)
  2. 搜尋相關程式碼檔案(~15k token)
  3. 執行效能監控指令收集輸出(~8k token)
  4. 檢視最近的 Git 提交和變更(~3k token)
  5. 檢查依賴版本和設定(~2k token)

不使用 Headroom 時,到第 5 步上下文已經達到 33k+ token。如果對話繼續深入,很容易突破 100k。

步驟一:安裝並包裝 Claude Code

# 安裝 Headroom
pip install "headroom-ai[all]"

# 包裝 Claude Code(開啟記憶共享)
headroom wrap claude --memory

執行後,Headroom 會列印類似以下資訊:

🚀 Headroom proxy started on port 8787
📊 Compression pipeline: CacheAligner → ContentRouter → SmartCrusher/Kompress-base
💾 Cross-agent memory enabled (shared with Codex)
🔗 Launching Claude Code with ANTHROPIC_BASE_URL=http://localhost:8787

此時 Claude Code 已經通過 Headroom 代理執行,所有 API 請求都會先經過壓縮再傳送給 Anthropic。

步驟二:正常開始除錯

像往常一樣使用 Claude Code:

claude

> 幫我查一下為什麼這個服務在執行 2 小時後記憶體佔用會從 200MB 漲到 2GB
> 
> 這是錯誤日誌:
> [貼上日誌內容]

Claude 會按照正常流程工作:讀取日誌、搜尋程式碼、執行指令……但背後的 token 消耗已經被 Headroom 大幅壓縮。

步驟三:檢視壓縮統計

在另一個終端視窗中,你可以隨時檢視壓縮統計:

# 檢視即時統計
headroom stats

# 或者透過 MCP 工具查詢
# (如果已安裝 MCP)
mcp call headroom_stats

輸出類似:

┌─────────────────────┬──────────┬──────────┬────────┐
│ Session             │ Original │ Compressed│ Savings│
├─────────────────────┼──────────┼──────────┼────────┤
│ Debug memory leak   │ 45,230   │ 3,890    │ 91%    │
│ Code review PR #142 │ 28,450   │ 2,120    │ 93%    │
│ Refactor utils.py   │ 12,800   │ 1,560    │ 88%    │
└─────────────────────┴──────────┴──────────┴────────┘
Total saved today: ~$4.20 (estimated)

步驟四:驗證回答品質

最關鍵的問題:壓縮會不會影響回答品質?

根據 Headroom 官方基準測試資料:

Benchmark 類別 N Baseline Headroom Delta
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 不僅沒有降低準確率,在某些場景下還有輕微提升(可能是由於去除了噪聲干擾)。

實際使用中,如果你發現某個問題的回答品質下降,可以透過 CCR 機制讓 LLM 取回原始內容:

# 在程式碼中呼叫 retrieve 工具
from headroom import retrieve

original_content = retrieve(compressed_chunk_id)

Headroom vs 其他方案對比

目前市面上有一些類似的上下文最佳化工具,以下是主要方案的對比:

特性 Headroom RTK lean-ctx Compresr OpenAI 原生壓縮
壓縮範圍 全部上下文(工具/RAG/日誌/檔案/歷史) CLI 指令輸出 CLI/MCP/編輯器規則 僅文字 僅對話歷史
部署方式 代理/函式庫/中介軟體/MCP CLI 封裝 CLI/MCP 託管 API 提供商內建
本機執行
可逆壓縮 ✅ (CCR)
跨 Agent 記憶
支援框架 所有主流框架 有限 有限 僅其 API 僅 OpenAI

Headroom 的優勢在於全面性可逆性——它不僅壓縮的範圍最廣,而且保證原始資料不遺失,同時支援跨多個 AI Agent 共享記憶。

常見問題

Q1: Headroom 會影響回應速度嗎?

理論上會增加少量延遲(壓縮需要時間),但在實際使用中,由於輸入 token 大幅減少,LLM 的處理時間也相應縮短。整體回應時間通常持平或更快

Q2: 壓縮後的內容人類可讀嗎?

SmartCrusher 壓縮的 JSON 和 CodeCompressor 壓縮的程式碼仍然保持一定的可讀性,但 Kompress-base 壓縮的自然語言主要是給 LLM 看的,對人類來說可能不太直觀。如果需要人工審查,可以使用 headroom_retrieve 取回原始內容。

Q3: 支援哪些程式語言?

CodeCompressor 目前支援 Python、JavaScript、Go、Rust、Java、C++ 的 AST 感知壓縮。其他語言會回退到通用文字壓縮。

Q4: 資料安全嗎?我的程式碼會被上傳嗎?

Headroom 完全在本機執行,所有壓縮操作都在你的機器上完成,不會將任何資料傳送到外部伺服器。Kompress-base 模型也是本機載入的 HuggingFace 模型。

Q5: 可以和 GitHub Copilot CLI 一起用嗎?

可以!Headroom 支援包裝 Copilot CLI:

headroom wrap copilot --subscription -- --model gpt-4o

這會讓 Headroom 攔截 Copilot CLI 的請求,套用相同的壓縮管道後再轉發到 GitHub 的 API。

總結

Headroom 是解決 AI Agent token 成本膨脹問題的優秀方案。它的核心價值在於:

  1. 顯著降低成本:60-95% 的 token 節省,對於高頻使用 AI Agent 的團隊來說,每月可節省數百到數千美元
  2. 保持回答品質:經過多個基準測試驗證,壓縮不影響準確性
  3. 零程式碼改動:Proxy 和 Wrap 模式讓你無需修改現有程式碼即可享受壓縮紅利
  4. 可逆且安全:CCR 技術保證原始資料不遺失,所有處理在本機完成
  5. 生態豐富:支援所有主流 AI 程式設計工具和框架

如果你的團隊正在大規模使用 Claude Code、Codex、Cursor 等 AI 程式設計助手,Headroom 絕對值得加入你的工具鏈。它不僅能幫你省錢,還能讓 AI Agent 在更長上下文中保持更高的回應品質。

相關連結: