Compact Adviser:Claude Code で /compact を実行するタイミングがわかる
/compact を実行すべきタイミングを教えてくれます。ひと区切りの作業が終わったところを TypeSafe の Jev が判定し、ヒントを表示します。
権限
- ファイルを読み取るお使いのマシン上のファイルの読み取りやディレクトリの一覧取得ができます($.fs.read / list / stat / exists)。
- ファイルを書き込むお使いのマシン上でファイルを作成・上書きできます($.fs.write)。
- ネットワークHTTP リクエストを送信したり、MCP サーバーと通信したりできます($.http.fetch / $.mcp.*)。
- プロンプトを読み取る入力内容と会話のトランスクリプトを参照できます(prompt.* / session.append / session.messages)。
- UI を変更Claude Code の画面に描画します。バンド、ペイン、ステータス表示、トーストなど(ui.render / $.ui.*)。
- コマンド・ツールを追加あなたや Claude が呼び出せる新しいスラッシュコマンドやツールを登録します($.command.register / $.tool.register)。
- データを保存プラグイン専用のストアにセッションをまたいでデータを保持します($.store.*)。
- 検証バージョン
- v2.1.291
- 最終検証日
- 必要バージョン
- Claude Code ≥ 2.1.287
- 表示先
- ステータス、ペイン、トースト
Claude Code 内でインストール:
/plugin install compact-adviser --marketplace kunchenguid/compact-adviserこのModでできること
Compact Adviser は、Claude Code で /compact を実行するタイミングを教えてくれる Mod で、答える問いはひとつ、「今 /compact を実行すべきか?」です。作者は Kun Chen(kunchenguid)で、ひとつのリポジトリから Claude Code、Pi、Codex CLI、Grok 向けに提供されています。このページでは packages/claude-mod にある Claude Code 用の Mod を扱います。
コンパクトが早すぎると、まだ必要なコンテキストを捨ててしまいます。遅すぎると、毎ターン長い履歴を抱えることになります。Mod は各ターンが終わるたびに、手軽なローカルの条件をいくつか確認し、それを通過すると、TypeSafe の Jev モデルに会話について 2 つの短い質問をします。アシスタントの直近の作業単位は完了しているか、そしてアシスタントは作業を自分で行ったのか、それとも主に調整役だったのか。2 つの答えはひとつのスコアにまとめられます。スコアが下限を超えると、"work appears completed or recorded. Run /compact to save tokens." というステータス行が表示されます。
下限は、コンテキストがほとんど空のうちは厳しく(0.90)、コンテキストが Claude Code の自動コンパクトの位置に近づくにつれて 0.50 に向かって緩くなります。まだ余裕があるときほど、誤ったヒントのコストが大きいためです。自動モードを選ぶと、Mod はヒントを出すだけでなく、そうしたチェックポイントで自らコンパクトを実行します。
あなた自身が用意する TypeSafe の API キーが必要です。
デモ
実際のヒントには 40,000 トークンを超えるコンテキストと TypeSafe のキーが必要で、短い動画には収まりません。録画では、この Mod を読み込んだ Claude Code を起動し、/compact-adviser status(モード、最小値、予算、キーの状態)を実行してから、/compact-adviser の設定ペインを開いて TypeSafe API キーの行に移動します。そこには missing と表示されています。
インストール
インストールブロックのどちらかの方法を使ってください。どちらも作者のマーケットプレイスから直接インストールします。Claude Code を CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 で起動しない限り、Mod はまったく何もしません。この変数を付けて起動してから、/compact-adviser を実行して TypeSafe のキーを追加してください。
$ install compact-adviser
Claude Code 2.1.287 以上が必要
作者のマーケットプレイスからインストール: kunchenguid/compact-adviser
1.Claude Code 内で1行
/plugin install compact-adviser --marketplace kunchenguid/compact-adviser実行中のセッション(v2.1.275 以降)に貼り付けます。最初に Claude Code がマーケットプレイスの追加を確認します。
2.シェルから
claude plugin marketplace add kunchenguid/compact-adviser claude plugin install compact-adviser@compact-adviserその後、すでに開いているセッションでは /reload-plugins を実行してください。
3.インストールせずに試す
git clone https://github.com/kunchenguid/compact-adviser claude --plugin-dir ./compact-adviser/packages/claude-modその1セッションだけ Mod を読み込みます。設定には何も追加されません。
仕組み
すべては hooks/register.ts の turn.complete フックから始まります。
on("turn.complete", async ($, e, next) => {
const result = await next(e);
if (!(await isActivated($)) || !interactive) return result;
if (e.agentId !== undefined || e.reason !== "answer" || e.isAborted || !e.answer.trim()) {
return result;
}
try {
await settle($);
} catch {
notice($, "Compact adviser could not inspect this checkpoint; context left unchanged.");
}
return result;
});対象になるのは、実際の回答で終わったメインループのターンだけです。サブエージェントのターンと中断されたターンはスキップされます。settle はやり取りを数え、手軽な関門を確認します。モードがオフでないこと、キーがあること、コンテキストが minContextTokens 以上であること、クールダウンやスヌーズ中でないことです。通過すると、ターンを待たせないよう $.clock.after(0, …) で judgeCheckpoint を予約します。
judgeCheckpoint は $.session.messages() から上限付きのスナップショットを作り(lib/snapshot.ts を参照)、会話が 20,000 トークン未満の場合や同じチェックポイントをすでに判定済みの場合はリクエストを省き、$.http.fetch で https://api.typesafe.ai/v1/systemone に送信します。リクエストは 2 秒でタイムアウトし、エラー、タイムアウト、不正な応答が「はい」と見なされることはありません。その場合 Mod は間隔を空け、代わりにトーストを表示します。スコアが条件を満たすと、ヒントモードではヒントとともに $.ui.status を呼び出し、自動モードでは現在の作業、保留中のタスク、次のステップを正確に残すよう指示して $.session.compact を呼び出します。
コンパクトが行われると、あなたによるものでも Claude Code によるものでも、session.compact フックを通じてセッションのクールダウンがリセットされます。
カスタマイズ
/compact-adviser を実行して設定ペインを開くか、サブコマンドを使ってください。auto、hint、off でモードを切り替えます。threshold 60000 でコンテキストの最小値を設定し、budget 450000 で、下限の計算に自動コンパクトの位置の代わりに使うコンテキスト予算を設定します。snooze は次の 3 回のやり取りをスキップし、dismiss は現在のヒントを消し、status は現在の状態を表示します。モード、最小値、予算、リクエストのログ記録は /config の行としても用意されています。判定プロファイル(profile 設定の JSON)で、質問、スコアの重み、下限のスケジュールを変更できます。
権限と安全性
私たちは何かを実行する前に、register.ts、lib/ 以下のすべてのファイル、plugin.json、hooks.json、package.json、テスト用のヘルパーを読みました。
- ネットワーク: Mod は条件を満たしたチェックポイントごとに 1 回、サードパーティのサービスである
https://api.typesafe.ai/v1/systemoneに、Authorizationヘッダーにあなたのキーを入れてリクエストを送ります。本文は直近の会話のスナップショットで、上限は 32,000 バイトです。キーのパターン、.env、auth.json、id_rsa/id_ed25519、.pem、.keyファイルはベストエフォートで伏せ字にされます。TYPESAFE_BASEで送信先を別の https のベース、またはループバックの http のベースに向けられます。プラグインをインストールすることは、キーがある場合にこの送信を行うことへの同意とみなされるため、マシンの外に出してはいけない作業ではモードをオフにしてください。 - ファイル:
TYPESAFE_API_KEYを探すため、セッションフォルダーの.envを読みます。書き込みはリクエストのログ記録をオンにした場合だけで、書き込み先は~/.claude/compact-adviser-requests-<session-id>.jsonlです。このファイルにキーが含まれることはありません。 - 設定: ペインから保存すると、
$.config.setを通じてプラグイン自身のuserConfigの行に書き込まれます。保存されたキーは/configには表示されません。 - コンパクト: 自動モードの場合のみ、一度きりの確認ダイアログの後に行われます。
インストールスクリプト、バンドルやミニファイされたコードはなく、TypeSafe へのリクエスト以外のテレメトリーもありません。
- ファイルを読み取る
- お使いのマシン上のファイルの読み取りやディレクトリの一覧取得ができます($.fs.read / list / stat / exists)。
- ファイルを書き込む
- お使いのマシン上でファイルを作成・上書きできます($.fs.write)。
- ネットワーク
- HTTP リクエストを送信したり、MCP サーバーと通信したりできます($.http.fetch / $.mcp.*)。
- プロンプトを読み取る
- 入力内容と会話のトランスクリプトを参照できます(prompt.* / session.append / session.messages)。
- UI を変更
- Claude Code の画面に描画します。バンド、ペイン、ステータス表示、トーストなど(ui.render / $.ui.*)。
- コマンド・ツールを追加
- あなたや Claude が呼び出せる新しいスラッシュコマンドやツールを登録します($.command.register / $.tool.register)。
- データを保存
- プラグイン専用のストアにセッションをまたいでデータを保持します($.store.*)。
互換性とトラブルシューティング
Claude Code 2.1.291 で検証しました。claude plugin validate は警告なしで通過し、claude plugin test は 114 件のテストを実行してすべて成功しました。作者は Claude Code 2.1.274 以降を挙げています。何も起きない場合は、次の順に確認してください。
/compact-adviserがない:CLAUDE_CODE_ENABLE_FUNCTION_HOOKSがちょうど1になっていないか、COMPACT_ADVISER_DISABLEが設定されています。/compact-adviser statusがKey: missingと表示する:ペイン、環境変数、または./.envでキーを追加してください。- コマンドは動くがヒントが出ない:コンテキストが最小値を下回っているか、直前のターンが確定した回答で終わっていません。
- トーストに "nonessential network traffic" と表示される:
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICが TypeSafe へのリクエストをブロックしています。 claude -pのセッションは、設計上常に無効です。
よくある質問
- Compact Adviser には API キーが必要ですか?
- はい。判定はあなた自身のキーを使って TypeSafe の Jev API に送られます。環境変数 TYPESAFE_API_KEY を設定するか、セッションフォルダーの .env ファイルに書くか、/compact-adviser ペインで保存してください。キーがなければ Mod は何もアドバイスしません。
- TypeSafe には何が送られますか?
- 直近の会話から作った、上限 32,000 バイトのスナップショットです。ユーザーの制約、ツールの結果を切り詰めた最大 64 件の直近メッセージ、既存の要約、保存されたファイルの名前が含まれます。既知のキーのパターンや、.env や秘密鍵などの機密ファイルは、ベストエフォートで伏せ字にされます。
- 確認なしにセッションをコンパクトしますか?
- デフォルトではしません。デフォルトのモードはヒントを表示するだけです。自動モードは /compact-adviser auto で選び、ダイアログで確認する必要があり、その場合も同じ判定を通過したチェックポイントでのみ動作します。
- /compact-adviser コマンドが表示されないのはなぜですか?
- Mod が有効になるのは、CLAUDE_CODE_ENABLE_FUNCTION_HOOKS がちょうど 1 で、COMPACT_ADVISER_DISABLE が真とみなされる値に設定されていない場合だけです。また、claude -p などの非対話セッションでは無効のままです。
- ヒントがまったく表示されないのはなぜですか?
- コンテキストが少なくとも 40,000 トークン(デフォルトの最小値)あり、直前のターンが確定した回答で終わっている必要があります。クールダウンやスヌーズも適用されます。さらにヒントには、判定スコアが 0.90 から 0.50 の間の下限を超える必要があり、この下限はコンテキストが埋まるにつれて緩くなります。
# 関連する Mod
おすすめコンテキストメーター
コンテキストウィンドウの使用率、5 時間・7 日間のプラン使用量、セッションのコストをステータスラインに表示し、上限が近づくと警告します。
- ステータス
- トースト
- UI を変更
v2.1.310 で検証済み
同じカテゴリの Mod: タイマー、ToDo、スタンドアップ、コンテキスト、利用枠、コスト。