Claude Code のソースコードから、会話が長くなったときのコンテキスト圧縮方法が5種類あることが明らかになった。コンテキストウィンドウの管理は AI コーディングエージェントにおける中心課題であり、Anthropic のエンジニアがかなりの時間をかけて取り組んでいる領域だ。
5つの圧縮戦略 1. Microcompact — 古いツール結果の時間ベース消去 時間経過に応じて古いツール実行結果(ファイル読み取り、grep 結果、bash 出力など)を自動的に消去する戦略。API 呼び出しを発生させず、キャッシュされたコンテンツをローカルで直接編集する軽量な処理だ。
ツール結果は会話中で最も大きなトークンを占めるが、時間が経つにつれて重要度は下がる。この戦略により、最新のやり取りに集中しつつトークン消費を抑えられる。
2. Context Collapse — 会話の部分要約 会話の特定の範囲を要約で置き換える戦略。長い対話セクションを圧縮された要約に変換し、セマンティックな意味を保持しながらトークン消費を削減する。
全体を要約するのではなく「部分的に」要約するため、直近の文脈はそのまま保持される点がポイントだ。
3. Session Memory — 重要な文脈のファイル抽出 重要な情報を別ファイルに永続化する戦略。完了した作業、進行中の作業、関連ファイル、次のステップなどの重要な詳細を抽出し、会話の全履歴をアクティブメモリに保持せずに参照できるようにする。
Claude Code の /compact コマンドを手動で実行した際にも、この仕組みが活用される。要約には以下の情報が保持される:
何が完了したか 現在進行中の作業 関連するファイル 次のステップ ユーザーの重要なリクエストや制約 4. Full Compact — 履歴全体の要約 会話履歴全体を包括的に要約する戦略。コンテキストウィンドウが限界に近づき、大量の対話が蓄積された場合に有用だ。
自動圧縮(auto-compact)は、コンテキストウィンドウに対して約33,000トークンのバッファを残すタイミングで発動する。200Kトークンのウィンドウであれば、約167Kトークンを使用した時点がトリガーとなる。
連続する自動圧縮の失敗が3回を超えると、そのセッションでの圧縮は無効化される(MAX_CONSECUTIVE_AUTOCOMPACT_FAILURES = 3)。この定数は autoCompact.ts に定義されており、かつて1,279セッションで50回以上の連続失敗(最大3,272回)が発生し、日あたり約250,000回のAPI呼び出しが無駄になっていた問題を解決するために導入された。
5. PTL Truncation(Past Turn Limiting) — 古いメッセージ群の切り捨て トークン圧力が臨界に達した際に、最も古いメッセージ群を切り落とす戦略。最近の文脈を優先し、過去のやり取りを犠牲にする最終手段だ。
コンテキスト圧力のカスケード これらの5つの戦略に加え、ツール結果の割り当て制御(バジェッティング)がカスケードの最初の段階として存在する。各戦略は個別に動作するのではなく、軽量な処理から順に段階的なカスケードとして機能する:
ツール結果バジェッティング → Microcompact → Context Collapse → Full Compact(Auto Compact)→ PTL Truncation 軽量な処理から順に適用され、それぞれの段階で何を保持し何を破棄するかの基準が異なる。
...