Strategic Compact Skill(戦略的コンパクトスキル)
任意の自動圧縮に頼るのではなく、ワークフローの戦略的なポイントで手動の /compact を提案します。
アクティブ化するタイミング
- コンテキスト制限に近づく長時間のセッション(200Kトークン以上)
- マルチフェーズのタスク(調査 → 計画 → 実装 → テスト)に取り組んでいる場合
- 同じセッション内で無関係なタスクを切り替える場合
- 主要なマイルストーンを完了し、新しい作業を開始した後
- 応答が遅くなったり、首尾一貫性が低下した場合(コンテキストプレッシャー)
なぜ戦略的圧縮なのか?
自動圧縮は任意のタイミングでトリガーされます:
- タスクの途中でトリガーされることが多く、重要なコンテキストが失われる
- 論理的なタスク境界を認識しない
- 複雑なマルチステップ操作を中断する可能性がある
論理的な境界での戦略的圧縮:
- 探索後、実行前 — 調査コンテキストを圧縮し、実装計画を保持
- マイルストーン完了後 — 次のフェーズのための新鮮なスタート
- 主要なコンテキストシフト前 — 異なるタスクの前に探索コンテキストをクリア
動作の仕組み
suggest-compact.js スクリプトは PreToolUse(編集/書き込み)時に実行され、2つのシグナルを組み合わせます:
- コンテキストサイズ(プライマリ) — セッショントランスクリプト(フックペイロードの
transcript_path)から最新のusageレコードを読み取り、input_tokens + cache_read_input_tokens + cache_creation_input_tokens(ターンの実際のコンテキストサイズ)を合計します。ウィンドウスケーリングされたしきい値(200kウィンドウでは160kトークン、1Mウィンドウでは250kトークン。[1m]モデルマーカーから検出、または観測されたトークンが200kを超えると推論)で/compactを提案し、その後コンテキストが60kトークン増加するごとに再リマインダーを表示します - ツール呼び出し回数(セカンダリ) — セッション内のツール呼び出しをカウントし、設定可能なしきい値(デフォルト:50コール)、その後25コールごとに提案します
ツール呼び出し回数だけではウィンドウプレッシャーの弱いプロキシです。数回の大きなファイル読み取りやMCP応答でウィンドウが埋まることがある一方、多数の小さな呼び出しでウィンドウがほぼ空でも50回を超える可能性があります。コンテキストサイズシグナルは実際に問題があるときに発火します。
フックのセットアップ
プラグインとしてインストールされますか? セットアップは不要です。プラグインの hooks/hooks.json が既に suggest-compact.js を登録しています(フックID pre:edit-write:suggest-compact、standard および strict フックプロファイルでアクティブ)。以下のブロックを ~/.claude/settings.json にコピーしないでください — プラグインインストールでは ~/.claude/scripts/ は存在せず、プラグインフックを重複させると二重実行を引き起こします。
手動でインストールする場合(./install.sh)、~/.claude/settings.json に以下を追加します:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Edit",
"hooks": [{ "type": "command", "command": "node ~/.claude/scripts/hooks/suggest-compact.js" }]
},
{
"matcher": "Write",
"hooks": [{ "type": "command", "command": "node ~/.claude/scripts/hooks/suggest-compact.js" }]
}
]
}
}
設定
環境変数:
COMPACT_THRESHOLD— 最初の提案前のツール呼び出し回数(デフォルト:50)COMPACT_CONTEXT_THRESHOLD— コンテキストサイズ提案の前のコンテキストトークン数(デフォルト:200kウィンドウで160000、1Mウィンドウで250000。0でコンテキストシグナルを無効化)COMPACT_CONTEXT_INTERVAL— 提案が繰り返されるまでの追加コンテキストトークン数(デフォルト:60000)COMPACT_STATE_TTL_DAYS— テンポラリディレクトリ内の古いセッションごとの状態ファイルが削除されるまでの日数(デフォルト:14)ECC_CONTEXT_WINDOW_TOKENS— 自動検出をオーバーライドする明示的なコンテキストウィンドウサイズ(トークン単位)。報告されたIDに[1m]マーカーがない大規模ウィンドウモデル(例:400k Opus 4.x、新しい1Mウィンドウモデルファミリー)にこれを設定することで、しきい値が実際のウィンドウにスケーリングされ、デフォルトの200kにフォールバックしてコンテキスト使用率を過大評価するのを防ぎます。CLAUDE_CODE_AUTO_COMPACT_WINDOW— Claude Codeのネイティブウィンドウサイズオーバーライド(トークン単位)。ECC_CONTEXT_WINDOW_TOKENSが設定されていない場合のフォールバックとして使用されます。
コンテキストウィンドウは、それ以外の場合は
[1m]モデルマーカーから自動検出されるか、観測されたトークンが200kを超えた場合に推論されます。どちらのシグナルも持たない大規模ウィンドウモデルでは、適切なタイミングで/compact提案が発火するように、上記のオーバーライドのいずれかを設定してください。
圧縮判断ガイド
以下の表を使用して、圧縮するタイミングを判断します:
| フェーズ遷移 | 圧縮? | 理由 |
|---|---|---|
| 調査 → 計画 | はい | 調査コンテキストはかさばります。計画はその蒸留された出力です |
| 計画 → 実装 | はい | 計画は書き留められています(ファイル、またはタスクリストがあればそれ)。コードのためにコンテキストを解放します |
| 実装 → テスト | たぶん | テストが最近のコードを参照している場合は保持。フォーカスを切り替える場合は圧縮 |
| デバッグ → 次の機能 | はい | デバッグトレースは無関係な作業のコンテキストを汚染します |
| 実装途中 | いいえ | 変数名、ファイルパス、部分的な状態を失うことはコストが高いです |
| 失敗したアプローチの後 | はい | 新しいアプローチを試す前に、行き詰まった推論をクリアします |
圧縮後も保持されるもの
何が保持されるかを理解することで、自信を持って圧縮できます:
| 保持される | 失われる |
|---|---|
| CLAUDE.md の指示 | 中間の推論と分析 |
| ディスク上のファイル | 以前に読み取ったファイルの内容 |
メモリファイル(~/.claude/memory/) | マルチステップの会話コンテキスト |
| Git の状態(コミット、ブランチ) | ツール呼び出し履歴とカウント |
| タスクリスト — todo ツールがある場合のみ(以下参照) | 口頭で述べられた微妙なユーザー設定 |
タスクリストの保持に依存しないでください — 存在しない可能性があります
Claude Code 2.1.233 では、Opus 4.8、Sonnet 5、Fable 5、Mythos 5 以降のモデルで todo/task ツールがデフォルトで削除されました(
TodoWrite、TaskCreate/Get/Update/List)。CLAUDE_CODE_ENABLE_TODO_TOOLS=1で復元できますが、これはマシンごとの環境設定であり、このスキルとともに移動するものではないため、読者がそれを持っていると想定できません。これは、「todo リストは圧縮後も保持される」という理由で、状態を書き留める代わりに圧縮する人がいるため重要です。ツールがない場合、保持されるリストはなく、計画は単に失われます。圧縮する前に計画をファイルに書き留めてください — ファイルはすべてのバージョンとすべてのモデルで保持されます。タスクリストは、存在しない可能性がある便利なものとして扱い、決して永続的な記録として扱わないでください。
ベストプラクティス
- 計画後に圧縮する — 計画が確定し ファイルに書き込まれたら、新鮮な状態で開始するために圧縮します
- デバッグ後に圧縮する — エラー解決のコンテキストをクリアしてから続行します
- 実装途中で圧縮しない — 関連する変更のためにコンテキストを保持します
- 提案を読む — フックは いつ を伝え、あなたは 圧縮するかどうか を決定します
- 圧縮前に書き込む — 重要なコンテキストをファイルやメモリに保存してから圧縮します
- 要約とともに
/compactを使用する — カスタムメッセージを追加:/compact 次に認証ミドルウェアの実装に集中
トークン最適化パターン
トリガーテーブル遅延ロード
セッション開始時にすべてのスキルコンテンツをロードする代わりに、キーワードをスキルパスにマッピングするトリガーテーブルを使用します。トリガーされたときのみスキルがロードされ、ベースラインコンテキストを50%以上削減します:
| トリガー | スキル | ロードタイミング |
|---|---|---|
| "test", "tdd", "coverage" | tdd-workflow | ユーザーがテストについて言及したとき |
| "security", "auth", "xss" | security-review | セキュリティ関連の作業時 |
| "deploy", "ci/cd" | deployment-patterns | デプロイコンテキスト時 |
コンテキスト構成の認識
コンテキストウィンドウを何が消費しているかを監視します:
- CLAUDE.md ファイル — 常にロードされる、簡潔に保つ
- ロードされたスキル — 各スキルは1〜5Kトークンを追加します
- 会話履歴 — 交換ごとに増加します
- ツール結果 — ファイル読み取り、検索結果はかさばります
重複指示の検出
重複コンテキストの一般的な原因:
~/.claude/rules/とプロジェクト.claude/rules/の両方にある同じルール- CLAUDE.md の指示を繰り返すスキル
- 重複するドメインをカバーする複数のスキル
コンテキスト最適化ツール
token-optimizerMCP — コンテンツの重複排除による自動95%以上のトークン削減context-mode— コンテキスト仮想化(315KBから5.4KBへの削減実績)
関連情報
- The Longform Guide — トークン最適化セクション
- メモリ永続化フック — 圧縮後も保持される状態用
continuous-learningスキル — セッション終了前にパターンを抽出します