# SubAgent: Search

## 目的

Search サブエージェントは、軽量で読み取り専用の探索エージェントです。コードベースを理解する必要があるとき — 何かがどこにあるかを見つけたり、コンポーネントがどのように組み合わさっているかを学んだり、構造的な質問に答えたり — ファイルを変更せずに派遣します。多くのファイル全体で小さな読み取りを多数行うように最適化されており、生の検索出力ではなく簡潔なサマリを返します。

Search は汎用アシスタントではありません。コードを編集したり、ビルドを実行したり、変更をコミットしたり、読み取り専用フェッチを超えるネットワーク接続を開いたりはできません。その価値は、メインエージェントのコンテキストを消費せずに、大きな探索予算を並列に燃やし、その後コンパクトな回答を返せることです。

## 使用タイミング

- 3 つ以上の異なる検索や読み取りを必要とする質問に答える必要がある場合。例: 「ログインルートからセッションストアまで、認証はどのように配線されているか？」
- ターゲットが不明 — どのファイル、モジュール、シンボルを見るべきかまだ分からない場合。
- 変更を行う前に、リポジトリの見慣れない領域の構造的概要が必要な場合。
- 複数の候補を相互参照する必要がある場合 (例えば、いくつかの類似した名前のヘルパーのうち、どれが実際に本番で呼び出されているか)。
- 文献スタイルのサマリが必要な場合: 「X をインポートしているすべての場所をリストし、呼び出しサイトごとにカテゴリ化する。」

Search を使用しない場合:

- すでに正確なファイルと行が分かっている場合。直接 `Read` を呼び出してください。
- 1 つの `Grep` または `Glob` で質問に答えられる場合。直接実行してください。サブエージェントを派遣するとオーバーヘッドが増えます。
- タスクが編集、コマンド実行、または任意の副作用を必要とする場合。Search は設計上読み取り専用です。
- ツール呼び出しの正確な逐語的出力が必要な場合。サブエージェントは要約します。生の結果をプロキシしません。

## 徹底度レベル

質問の重要度に合ったレベルを選んでください。

- `quick` — いくつかのターゲットを絞った検索、ベストエフォートの回答。素早いポインタが必要で (例えば「env 変数のパースロジックはどこにあるか？」)、回答が不完全であれば繰り返すことに抵抗がない場合に使用します。
- `medium` — デフォルト。数ラウンドの検索、候補のクロスチェック、最も関連性の高いファイルを完全に読み込みます。典型的な「この領域を理解させて」の質問に使用します。
- `very thorough` — 網羅的な探索。サブエージェントは、もっともらしいすべてのリードを追跡し、周囲のコンテキストを読み、要約する前に結果をダブルチェックします。正確性が重要な場合 (例えばセキュリティレビュー、マイグレーション計画) や、不完全な回答が再作業を引き起こす場合に使用します。

より高い徹底度はサブエージェント内でより多くの時間とトークンを消費しますが、それらのトークンはサブエージェント内にとどまります — メインエージェントには最終サマリのみが返されます。

## 利用可能なツール

Search はメインエージェントが使用するすべての読み取り専用ツールにアクセスでき、それ以外はありません。

- `Read` — 部分的な範囲を含む特定のファイルの読み取り用。
- `Grep` — ツリー全体のコンテンツ検索用。
- `Glob` — 名前パターンによるファイル特定用。
- 読み取り専用モードの `Bash` — 変更なしに状態を検査するコマンド用 (例えば `git log`、`git show`、`ls`、`wc`)。
- `WebFetch` と `WebSearch` — そのコンテキストが必要な場合の外部ドキュメント読み取り用。

編集ツール (`Write`、`Edit`、`NotebookEdit`)、状態を変更するシェルコマンド、タスクグラフツール (`TaskCreate`、`TaskUpdate` など) は意図的に利用不可になっています。

## 注意事項

- Search サブエージェントにはトピックではなく具体的な質問を与えてください。「`renderMessage` のすべての呼び出し元をリストし、どれがカスタムテーマを渡すかを記録する」は有用な回答を返します。「レンダリングについて教えて」は返しません。
- サブエージェントはサマリを返します。正確なファイルパスが必要なら、プロンプトで明示的に求めてください。
- 複数の独立した質問は、1 つの長いプロンプトではなく、並列 Search サブエージェントとして派遣するのが最適です。それぞれが集中できます。
- Search は編集できないため、何を変更すべきかが分かったら、メインエージェントで後続の編集ステップと組み合わせてください。
- Search の出力は証拠として扱い、真実とはしないでください。重要なものについては、行動する前に引用されたファイルを自分で開いてください。
