Subagents
Bobがどのようにsubagentsを使って、メインの会話を汚染することなく、独立したコンテキストで焦点を絞った自己完結型のタスクを処理するかを学びます。
subagentsとは?
subagentはBobがspawnできる独立したエージェントで、焦点を絞った自己完結型のタスクを処理します。独自の隔離されたcontext windowで実行され、割り当てられた作業を実行し、結果の要約をメインの会話に返します。
subagentsは、進行中の会話に大量の無関係なコンテンツを追加してしまうような作業に役立ちます。たとえば、Bobがメインタスクを継続する前に、コードベースの特定のセクションを深く調査して特定の情報を収集する場合などです。
subagentsの仕組み
BobがsubagentをspawnするとBobは次のことを行います:
- 独自のcontext windowを持つ新しい独立したエージェントが作成されます。
- Bobが実行すべき焦点を絞ったタスクの説明を渡します。
- 開始前にspawnを承認するよう求められます。Bobは確認するまで待ちます。
- subagentは利用可能なtoolsを使ってタスクを実行します。
- subagentが発見した内容の要約をBobに返します。
- Bobはその要約を使ってメインの会話を継続します。
subagentはメインの会話とは別に実行されます。Bobが説明の中で明示的に渡さない限り、状態、ファイル、またはtoolの結果をBobと共有しません。
subagentの種類
用途の異なる2種類のsubagentがあります:
| 種類 | 説明 | 最適な用途 |
|---|---|---|
explore | 読み取り専用のコードベース探索、軽量モデルで実行 | コードの検索と要約、関連ファイルの検索、構造の理解 |
general | フルtoolアクセス、デフォルトモデルで実行 | 読み取り、書き込み、またはコマンドを必要とする自己完結型タスク |
コンテキストと会話履歴
デフォルトでは、subagentは親の会話履歴を参照しません。これにより、コンテキストを軽量に保ち、手元のタスクに集中できます。
subagentが会話で以前に示された決定、制約、または好みを理解する必要がある場合、Bobはfork_context: trueを設定して会話履歴をsubagentに渡すことができます。
モードの制限
作業中のモードによって、Bobがspawnできるsubagentの種類が制御されます。すべてのsubagentの種類を許可するモードもあれば、特定の種類に制限するか完全に禁止するモードもあります。アクティブなモードでsubagentのspawnが許可されていない場合、Bobはspawnせずに直接作業を完了します。
BobがsubagentsをいつどのようにBobが使うか
Bobはsubagentsを控えめに使用します。デフォルトは常にsubagentをspawnせずに直接作業を行うことです。subagentが検討されるのは、以下のすべてに当てはまる場合のみです:
- タスクが明確に自己完結型であり、返送が必要なのは要約のみである。
- メインのコンテキストに大量の無関係なコンテンツを追加することになる。
- 1〜2回の直接的なtool呼び出しでは達成できない。
Bobはsubagentsを使いません:
- 単純なファイル読み取りや簡単な検索。
- 単一toolの操作。
並列subagentsパネル
複数のsubagentsが同時に実行される場合(たとえば、複数の特化したエージェントを並列でspawnするワークフロー中など)、チャット内の単一の折りたたみ可能なパネルにグループ化されます。
パネルヘッダーには、実行中のすべてのsubagentsの集計統計が表示されます:
- 完了したsubagentsの数/合計数
- すべてのsubagentsで使用されたtoolsの合計
- 結合されたtoken使用量、コスト、経過時間
- 失敗したtool呼び出しの数
パネルを展開すると、各subagentを個別に表示できます。各個別エントリをさらに展開して、そのtool呼び出しを検査できます。subagentがtoolエラーに遭遇した場合、失敗数は集計ヘッダーと個別エントリの両方に表示されます。
- 関連するコンテキストがすでに利用可能なタスク。
Subagentsとsubtasksの比較
Subagentsとsubtasksは関連しているが異なる概念です:
| Subagent | Subtask | |
|---|---|---|
| 可視性 | バックグラウンドで静かに実行される | UIに独自のパンくずリストと会話とともに表示される |
| インタラクション | 非対話型 — 要約のみを返す | 完全に対話型 — 進行状況をフォローし会話を継続できる |
| 目的 | メインのコンテキストを汚染せずに情報収集や孤立した作業を完了する | 専用のトラッキングと個別スレッドから恩恵を受けるほど複雑な作業を処理する |
| 出力 | Bobに返される要約 | 独立した会話スレッド |
バックグラウンドでの情報収集にはsubagentsを使用してください。可視性と専用の会話から恩恵を受ける複雑な作業にはsubtasksを使用してください。
subagentの動作を設定する
.bob/agents/にagent personaファイルを作成することで、subagentが何に集中するか、出力のフォーマット方法、使用できるtoolを制御できます。personaファイルはsubagentに定義されたロールと制約を与えます。たとえば、重大度順の検出テーブルを作成し、修正を提案しないよう明示的に指示されたコードレビュアーなどです。
設定手順と例については、agentペルソナを参照してください。