Headroom とは?
Headroom は、オープンソースの LLM トークン圧縮レイヤー です。AI エージェントが読み取るすべてのコンテンツ(ツール出力、ログ、RAG 検索結果、ファイル、会話履歴など)を、LLM に送信する前にインテリジェントに圧縮します。
核心的な価値:同じ答えを得るのに、トークン使用量を 5-40% に抑えられる。毎日 AI プログラミングアシスタント(Claude Code、Cursor、Codex など)を大量に使う開発者にとって、これは API コストを直接 60-95% 削減 できることを意味します。
なぜ Headroom が必要なのか?
現代の AI プログラミングアシスタントのワークフローは通常、次のようになります:
ユーザーが質問 → エージェントがコードベースを検索 → 100+ のファイルスニペットを返す →
エージェントがすべてのコンテキストを整理 → LLM に送信 → LLM が回答
問題点は、エージェントが送信するコンテキストの大部分が冗長だということです。例えば:
- 検索結果が 100 のコードスニペットを返しても、実際に関連するのは 5〜10 個だけ
- ログファイルには無関係なタイムスタンプやデバッグ情報が大量に含まれる
- RAG で取得したドキュメントブロックには重複したプレフィックスが多い
Headroom は 3 層アーキテクチャでこの問題を解決します:
- ContentRouter — コンテンツタイプ(JSON、コード、プレーンテキスト)を検出し、最適な圧縮器を自動選択
- インテリジェント圧縮器 — SmartCrusher(JSON 用)、CodeCompressor(AST 認識型)、Kompress-base(HF モデル)
- CCR(可逆圧縮) — 生データをローカルに保存し、LLM が必要な時にオンデマンドで取得可能
Headroom vs その他のソリューション
| 機能 | Headroom | ネイティブ Provider 圧縮 | 手動プロンプト精简 |
|---|---|---|---|
| トークン節約 | 60-95% | 20-40% | 人手による |
| クロスエージェント共有メモリ | ✅ | ❌ | ❌ |
| 可逆圧縮(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
クイックスタート:3 つの使用モード
Headroom は簡単なものから難しいものまで、3 つの接入方法を提供します:
モード 1:Wrap コマンド(最も簡単、ゼロ設定)
すでに何らかの AI プログラミングアシスタントを使っている場合、コマンド 1 つで 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 に送信されます。
モード 2:Proxy プロキシモード(コード変更不要、あらゆる言語に対応)
既存のコードを変更したくない場合、または wrap がサポートされていないツールを使っている場合は、プロキシサービスを単独で起動できます:
# プロキシを起動、ポート 8787 でリッスン
headroom proxy --port 8787
そして、アプリや Agent の設定を変更し、API エンドポイントを元の Anthropic/OpenAI エンドポイントではなく http://localhost:8787 に向けます。
例: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": "このコードを説明して"}]
)
プロキシを経由するすべてのリクエストは自動的に圧縮され、ビジネスロジックを変更する必要はありません。
モード 3: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"元トークン: {compressed.original_tokens}")
print(f"圧縮後トークン: {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+ レコード
]
}
crusher = SmartCrusher()
compressed = crusher.compress(data)
# キーフィールドを保持し、冗長なメタデータを削除
# 元: 50,000 トークン → 圧縮後: 5,000 トークン (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 が最初に受け取るのは圧縮版なので、トークン使用量が少ない - 必要な時だけ完全な内容を取得し、一度に大量のデータを送信するのを避ける - 生データが失われることはない
3. クロスエージェント共有メモリ
複数の 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"]
}
}
}
実践ケース
ケース 1:コードベース検索の最適化
シナリオ: AI アシスタントに 10 万行のコードプロジェクトで特定の実装を探す。
Headroom なし:
エージェント検索 → 100 の関連ファイルを返す → すべて LLM に送信 →
トークン使用量: 17,765 → コスト高、応答遅い
Headroom 使用:
headroom wrap claude
claude "ユーザー認証モジュールの実装を見つけて"
エージェント検索 → Headroom が 100 ファイルを圧縮 →
トークン使用量: 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% |
ケース 2:マルチエージェント協業
シナリオ: Claude Code でコードレビュー、Codex でユニットテスト生成、Cursor でコードリファクタリングを行う。
従来の方法: 各エージェントが独立してコードベースをスキャンし、トークンを重複消費。
Headroom 共有メモリ使用:
# ステップ 1:Claude Code がスキャンしてキャッシュ
headroom wrap claude --memory
claude "src/auth/ ディレクトリのコード品質をレビューして"
# ステップ 2:Codex がキャッシュを再利用
headroom wrap codex --memory
codex "src/auth/ のユニットテストを生成して"
# Codex は Claude のキャッシュ済みインデックスを直接使用、再スキャン不要
# ステップ 3:Cursor が引き続き再利用
headroom wrap cursor --memory
cursor "src/auth/ のエラーハンドリングをリファクタリングして"
節約効果: 2 回目以降のエージェントは初期スキャントークンを 40-60% 節約可能。
ケース 3:ログファイル分析
シナリオ: 本番環境の問題をデバッグするため、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} トークン")
print(f"圧縮後: {compressed.compressed_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 トークン → 5,118 トークン(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 は正確性を維持しながら、顕著なトークン節約を実現しています。
ベンチマークの再現:
python -m headroom.evals suite --tier 1
高度な設定
CacheAligner — Provider KV キャッシュヒット率の向上
CacheAligner はプロンプトのプレフィックスを安定させ、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 はプロンプトレベルで動作するためです。検証済みのもの包括: - Anthropic (Claude) - OpenAI (GPT-4, GPT-3.5) - AWS Bedrock - Google Gemini - OpenAI 互換 API 全般
Q4: 圧縮は遅延を増加させますか?
答: ローカル圧縮は通常 10-50ms で完了し、ネットワークリクエスト(数百 ms から数秒)と比較すると無視できます。さらに、送信トークンが少ないため、全体の応答時間は通常 速く なります。
Q5: 個人開発者とチーム、どちらに適していますか?
答: 両方に適しています。 - 個人開発者:毎日 AI アシスタントを使い、API 費用を節約 - チーム:クロスエージェントでメモリを共有し、コードベースの重複スキャンを回避;統一された圧縮戦略でコスト管理を容易に
まとめ
Headroom は実際の問題を解決する高品質なオープンソースツールです。AI プログラミングアシスタントを重度に使用する開発者にとって、次のことができます:
✅ トークンコストを 60-95% 削減 — 直接的な節約
✅ ノーコード接入 — headroom wrap claude コマンド 1 つで完了
✅ クロスエージェント共有メモリ — 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