Mission Control:Claude Code のサブエージェントとツール呼び出しをライブで見る
Claude Code のメインエージェント、サブエージェント、すべてのツール呼び出しをライブで表示するペイン。触れたファイルのコードマップ付き。
権限
- ファイルを読み取るお使いのマシン上のファイルの読み取りやディレクトリの一覧取得ができます($.fs.read / list / stat / exists)。
- ファイルを書き込むお使いのマシン上でファイルを作成・上書きできます($.fs.write)。
- コマンドを実行お使いのマシン上でシェルのプログラムを実行できます($.process.run / spawn)。具体的に何を実行するかはソースで確認してください。
- モデルを呼び出す(利用枠を消費)独自に Claude へリクエストを送信でき、その分はプランの利用量にカウントされます($.model.* / $.agent.spawn)。
- ツール呼び出しを傍受Claude が行うすべてのツール呼び出しを参照でき(tool.call / tool.check)、ブロックや変更も可能です。
- UI を変更Claude Code の画面に描画します。バンド、ペイン、ステータス表示、トーストなど(ui.render / $.ui.*)。
- コマンド・ツールを追加あなたや Claude が呼び出せる新しいスラッシュコマンドやツールを登録します($.command.register / $.tool.register)。
- 検証バージョン
- v2.1.296
- 最終検証日
- 必要バージョン
- Claude Code ≥ 2.1.287
- 表示先
- ペイン、プロンプト上部
Claude Code 内でインストール:
/plugin install mission-control --marketplace hamzafer/claude-code-modsこのModでできること
Mission Control は、Claude Code のサブエージェントとツール呼び出しをライブで見せてくれるコミュニティ Mod で、Hamza Zafar(hamzafer)による claude-code-mods コレクションの一部です。Claude Code が何をしているかを 1 か所にまとめて表示します。メインエージェント、そのサブエージェント、そしてそれらが行うすべてのツール呼び出しです。/mission を実行すると、チャットの隣にツリーを表示するペインが開きます。メインループが一番上にあり、各 Claude Code サブエージェントはその下にぶら下がり、ツール呼び出しはそれを行ったエージェントの下に並びます。同じツールの連続した呼び出しは read: README.md → src/login.js ×2 のように 1 行に折りたたまれ、各行には所要時間が表示されます。
Claude が作業している間とその後 30 秒間は、プロンプトの上の 1 行が状況をまとめます。◈ mission: 2 tools のような表示で、エージェントや変更されたファイルがあればその数も加わります。もうひとつのビュー /mission code は、Claude が読んだり編集したりしたファイルのマップを描きます。ファイル間の相対インポートは矢印で示され、いま触れているファイルは光り、各変更には 1 行のメモが付きます。作者の README によると、このコレクションには Claude Code 2.1.287 以降が必要です。私たちは 2.1.296 でテストしました。
デモ
録画では、小さなデモプロジェクトでこの Mod を読み込んだ Claude Code を起動し、Claude に README.md と src/login.js を読んで、それぞれが何をするかを一文で説明するよう依頼します。Claude は両方のファイルを読み、その作業中はプロンプトの上の帯の行がツールの数を数えます。回答の後、録画では /mission を入力します。ペインがプロンプトの上に開き、Who、Code、Close のボタン、0 agents (0 running) · 2 tool calls という要約、プロンプトの文字列を含む緑のメイン行、そしてその下に折りたたまれた read: demo-app/README.md → src/login.js ×2 の行が表示されます。コードマップは録画には含まれていません。
インストール
インストールブロックのいずれかの方法を使ってください。どれも作者自身のマーケットプレイスから直接インストールします。その後、セッションで /mission を実行してください。すでに開いているセッションにインストールした場合は、先に /reload-plugins を実行してください。
$ install mission-control
Claude Code 2.1.287 以上が必要
作者のマーケットプレイスからインストール: hamzafer/claude-code-mods
1.Claude Code 内で1行
/plugin install mission-control --marketplace hamzafer/claude-code-mods実行中のセッション(v2.1.275 以降)に貼り付けます。最初に Claude Code がマーケットプレイスの追加を確認します。
2.シェルから
claude plugin marketplace add hamzafer/claude-code-mods claude plugin install mission-control@claude-code-modsその後、すでに開いているセッションでは /reload-plugins を実行してください。
3.インストールせずに試す
git clone https://github.com/hamzafer/claude-code-mods claude --plugin-dir ./claude-code-mods/mods/mission-controlその1セッションだけ Mod を読み込みます。設定には何も追加されません。
仕組み
Mod はツリー、ファイル一覧、表示中のビューをホスト側が保持する $.state アトムに保存するため、ホットリロードをまたいでも表示内容が残ります。すべてのツール呼び出しは tool.call フックで包まれ、ノードを追加し、呼び出しを実行させてから、完了または失敗として記録します。以下は hooks/register.tsx のコードです。
let failed = true
let r: Awaited<ReturnType<typeof next>>
try {
r = await next(e)
failed = r.deny !== undefined || r.isError === true
} finally {
await update($, nodes, list => list.map(n => (n.id === id ? { ...n, status: failed ? 'failed' : 'done', end: Date.now() } : n)))
}agent.spawn はサブエージェントを追加し、turn.start はツリーをリセットし、turn.complete はまだ実行中のままのものを閉じます。Agent の呼び出しと、Claude Code 自身の管理用ツール(ToolSearch、TaskCreate など)は除外されます。1 秒ごとのクロックは、何かが実行中のときだけ表示を更新します。ツリーは最大 300 ノードです。コードマップについては、hooks/map.ts が SVG を組み立てます。触れた各ソースファイルを $.fs.read で読み、正規表現で相対インポートを見つけ、インポートの深さに応じてファイルを列に配置します。SVG はヘッドレス Chrome で PNG に変換され、ペインの Image 要素で表示されます。
カスタマイズ
/config に設定項目はありません。操作できるのは /mission、/mission who、/mission code と、ペインのボタン w、c、q だけです。動作を変えたい場合は、register.tsx の先頭にある定数を編集してください。MAX_NODES(ツリーのサイズ)、MAX_FILES(マップ上のファイル数)、BAND_AFTER_MS(帯を表示し続ける時間)、INTERNAL(ツリーから除外するツール)、CODE_FILE(マップに表示するファイルの種類)です。
権限と安全性
私たちは実行前に、プラグインが実行しうるすべてのファイル(.claude-plugin/plugin.json、hooks/hooks.json、hooks/register.tsx、hooks/map.ts、hooks/tree.ts、型宣言、テスト)を読みました。package.json、インストールスクリプト、バイナリ、バンドルされたコードはなく、隠し Unicode 文字、eval、リモートコードも見つかりませんでした。
- ネットワーク: Mod 自身は使用しません。
fetch、ソケット、ホストはありません。 - モデル呼び出し: メインのターンでファイルが編集または書き込まれた後、
register.tsxのexplain()がmodel: 'haiku'で$.model.completeを呼び出します。プロンプトには各old_stringとnew_stringが最大 300 文字(書き込まれたファイルは 400 文字)含まれ、返答はマップ上の最大 80 文字のメモになります。返答は JSON として解析され、切り詰められ、エスケープされてから SVG に入ります。セッションの利用枠を消費します。 - プロセス:
$.process.runを通じてsh -cスクリプトを 1 つ実行し、使い捨てのプロファイルでヘッドレス Chrome を起動し、スクリーンショットを待ってから、その Chrome を終了させます。ファイル名とフォルダ名は引数として渡され、シェル文字列に埋め込まれることはありません。Chrome が起動するのは、ペインがコードビューで開いている間だけです。 - ファイルの書き込み:
$TMPDIR/mission-control/のみです。map.svg、2 つのmap-N.pngファイル、Chrome のプロファイルフォルダです。~/.claude、設定、シェルファイル、LaunchAgents には何も書き込みません。Mod はインポートを見つけるために Claude が触れたファイルを読み、編集の断片をメモリに保持します。 - デーモン: ありません。1 秒ごとのクロックはセッションとともに停止し、Chrome はスクリーンショットのたびに終了させられます。
- シークレットと環境変数: 読み取るのは
TMPDIRのみです。 - テレメトリ: ありません。
- プロンプトへの影響:
additionalContextを追加せず、プロンプトやツールの結果を書き換えません。 - ゲーティングフック:
tool.callとagent.spawnが包まれており、claude plugin validateはこれらを.catchのないゲーティングフックとして挙げます。どちらも観察するだけで、tool.callはツールの結果を変更せずに返し、引数も変更しません。 - 外部要件: コードマップには
/Applications/Google Chrome.app(macOS のパス)の Google Chrome が必要です。Who ビューには不要です。 - ライセンス: MIT。LICENSE ファイルがあります。
claude plugin validate はエラーも警告も報告せず、作者の 7 件のテストは Claude Code 2.1.296 ですべて成功しました。
- ファイルを読み取る
- お使いのマシン上のファイルの読み取りやディレクトリの一覧取得ができます($.fs.read / list / stat / exists)。
- ファイルを書き込む
- お使いのマシン上でファイルを作成・上書きできます($.fs.write)。
- コマンドを実行
- お使いのマシン上でシェルのプログラムを実行できます($.process.run / spawn)。具体的に何を実行するかはソースで確認してください。
- モデルを呼び出す(利用枠を消費)
- 独自に Claude へリクエストを送信でき、その分はプランの利用量にカウントされます($.model.* / $.agent.spawn)。
- ツール呼び出しを傍受
- Claude が行うすべてのツール呼び出しを参照でき(tool.call / tool.check)、ブロックや変更も可能です。
- UI を変更
- Claude Code の画面に描画します。バンド、ペイン、ステータス表示、トーストなど(ui.render / $.ui.*)。
- コマンド・ツールを追加
- あなたや Claude が呼び出せる新しいスラッシュコマンドやツールを登録します($.command.register / $.tool.register)。
互換性とトラブルシューティング
macOS 上の Claude Code 2.1.296 で確認しました(validate、テスト、録画)。うまく動かない場合は、次を確認してください。
/missionが不明なコマンドになる。/pluginでプラグインが読み込まれていることを確認し、新規インストール後は/reload-pluginsを実行してください。- コードマップに Google Chrome が必要と表示される。 Chrome を
/Applications/Google Chrome.appにインストールしてください。Mod はこのパスしか確認しません。 - "Nothing yet" と表示される。 ツリーはターンの実行に合わせて埋まっていきます。タスクを始めると行が現れます。
- ターミナル以外ではマップが出ない。 ほかの画面では、コードマップはターミナルで描画されるとペインに表示されます。
- 帯の行が表示されない。 帯は Claude が作業している間とその後 30 秒間だけ表示され、アンケートが開いている間は表示されません。
よくある質問
- Mission Control はツール呼び出しを変更したりブロックしたりしますか?
- いいえ。tool.call フックは呼び出しを記録し、next(e) でそのまま実行させ、結果を変更せずに返します。記録のための処理以上に、呼び出しを拒否したり、書き換えたり、遅らせたりすることはありません。
- モデルやネットワークを呼び出しますか?
- Mod 自身がネットワークリクエストを送ることはありません。ファイルを編集したターンの後、変更されたファイルごとに 1 行のメモを書く小さな haiku の補完を 1 回実行するよう Claude Code に依頼します。プロンプトには各編集の内容が最大数百文字含まれるため、そのテキストはすでに利用しているモデルプロバイダーに送られます。
- Google Chrome は必要ですか?
- コードマップにのみ必要です。Who ツリーには追加のものは何も要りません。コードマップは /Applications/Google Chrome.app のヘッドレス Chrome で SVG を描画し、Chrome が見つからない場合はメッセージを表示します。
- 開いたり閉じたりするには?
- /mission を実行するか、コードマップなら /mission code を実行してください。ペイン内では w でツリー、c でコードマップを表示し、q で閉じます。
- Agent Radar とは何が違いますか?
- Agent Radar はエージェントを見守るための別のコミュニティ Mod です。Mission Control はさらに、すべてのツール呼び出しをそれを行ったエージェントの下に並べ、同じツールの連続した呼び出しを折りたたみ、触れたファイルとその間のインポートを示すマップを描きます。
# 関連する Mod
おすすめAgent Radar
実行中のサブエージェントごとに入力欄の上へ 1 行表示:経過時間、ツール数、現在の動作。/radar ペイン付き。
- プロンプト上部
- ペイン
- トースト
- ツール呼び出しを傍受
- プロンプトを読み取る
- UI を変更
- コマンド・ツールを追加
v2.1.291 で検証済み
おすすめツール呼び出しカウンター
Claude のツール呼び出しをターンごと・セッションごとに数え、スピナーの横に件数を表示。/tally で内訳も確認できます。
- スピナー
- トランスクリプト
- ステータス
- ツール呼び出しを傍受
- UI を変更
- コマンド・ツールを追加
v2.1.310 で検証済み
同じカテゴリの Mod: ペインとダッシュボード、タイマー、ToDo、スタンドアップ。