Visual Studio Code におけるサブエージェント
複雑なタスクに取り組む際、サブタスクをサブエージェントに委任することができます。サブエージェントとは、トピックの調査、コードの分析、変更のレビューといった特定の作業を集中して行い、その結果をメインエージェントに報告する独立した AI エージェントのことです。
サブエージェントの概念(コンテキストの分離、同期および並列実行)に関する背景については、「エージェントの概念」を参照してください。
この記事では、VS Code でサブエージェントを使用する方法について、利用シナリオ、呼び出しパターン、カスタムエージェントをサブエージェントとして実行する方法を含めて解説します。
ユーザーから見えるもの
サブエージェントが実行されると、チャット内に折りたたみ可能なツール呼び出しとして表示されます。デフォルトではサブエージェントは折りたたまれており、以下が表示されます。
- カスタムエージェントの名前(指定した場合)
- 現在実行中のツール(例: 「ファイルを読み込み中...」や「コードベースを検索中...」など)
サブエージェントのツール呼び出しを選択して展開すると、サブエージェントが行ったすべてのツール呼び出し、サブエージェントに渡されたプロンプト、返された結果など、詳細な内容を確認できます。
このように可視化されることで、メインの会話が中間的なステップで埋め尽くされることなく、必要な詳細情報を制御しながら確認できます。
利用シナリオ
以下のシナリオは、AI 支援による開発ワークフローにおいてサブエージェントがどのように役立つかを示しています。
実装前のリサーチ
新しい機能を構築する際、メインエージェントが実装を開始する前に、ベストプラクティスの調査、ライブラリの評価、あるいは既存のコードベースのパターン分析をサブエージェントに行わせることができます。
Perform isolated research into different OAuth 2.0 implementation patterns for Node.js applications.
Compare each against the current implementation and return a recommendation with pros and cons.
メインエージェントは最終的な推奨事項のみを受け取るため、実際の実装作業に向けてコンテキストをクリーンに保つことができます。
並列コード分析
コードのリファクタリングやレビューを行う際、複数のサブエージェントを並列実行して、異なる側面から分析させることができます。
Analyze this codebase for refactoring opportunities. Perform these tasks in parallel:
1. Find duplicate code patterns
2. Identify unused exports and dead code
3. Review error handling consistency
4. Check for security vulnerabilities
Compile the findings into a prioritized action plan.
複数のソリューションの検討
最善のアプローチが不確かな場合、サブエージェントを使用して、メインのコンテキストを汚すことなく、さまざまな選択肢を検討できます。
I need to implement caching for this API. Do some isolated research on these three approaches:
1. Design a Redis-based caching solution
2. Design an in-memory caching solution with LRU eviction
3. Design a hybrid approach with tiered caching
Compare the results and recommend the best approach for our use case.
専門的な視点でのコードレビュー
カスタムエージェントをサブエージェントとして使用し、それぞれ異なるレビューの観点を適用します。
Review the changes in this PR from different angles. Perform these reviews in parallel:
- Run the security-reviewer agent to check for vulnerabilities
- Run the performance-reviewer agent to identify bottlenecks
- Run the accessibility-reviewer agent to verify a11y compliance
Consolidate findings into a single review summary.
サブエージェントの呼び出し
エージェント主導型 vs ユーザー呼び出し型
サブエージェントは通常、チャットでユーザーが直接呼び出すものではなく、エージェントによって開始されるものです。メインエージェントがサブエージェントを呼び出せるようにするには、runSubagent ツールが有効になっていることを確認してください。
デフォルトでは、サブエージェント自身がさらに別のサブエージェントを呼び出すことはできません。再帰的な入れ子を有効にするには、 chat.subagents.allowInvocationsFromSubagents 設定を有効にします。詳細は「入れ子状のサブエージェント」を参照してください。
メインエージェントが、いつコンテキストの分離が役立つかを判断します。すべてのタスクに対して手動で「サブエージェントを実行して」と入力する必要はありません。このパターンは次のように機能します。
- あなた(またはカスタムエージェントの指示)が複雑なタスクを説明します。
- メインエージェントは、タスクの中で分離されたコンテキストから利益を得られる部分を認識します。
- エージェントはサブエージェントを起動し、関連するサブタスクのみを渡します。
- サブエージェントは自律的に作業を行い、要約を返します。
- メインエージェントはその結果を取り込み、作業を続行します。
サブエージェントへの委任を促したい場合は、プロンプトで「分離されたリサーチ」や「並列分析」を行うよう示唆すると効果的です。メインエージェントはサブエージェントを起動し、タスクを渡し、最終結果のみを受け取ります。
一貫したサブエージェントの動作を実現するには、毎回手動で指示するのではなく、カスタムエージェントの指示設定内でいつサブエージェントを使用すべきかを定義してください。
サブエージェントのパフォーマンスを最適化するには、タスクと期待される出力を明確に定義します。これにより、サブエージェントはメインエージェントに不必要なコンテキストを返すことなく、特定の目標に集中できるようになります。
サブエージェントを呼び出すプロンプトの構成例については、「利用シナリオ」セクションを参照してください。
プロンプトファイル内でのサブエージェントの呼び出し
プロンプトファイル内でサブエージェントを呼び出すには、tools フロントマタープロパティに runSubagent または agent ツールが含まれていることを確認してください。
---
name: document-feature
tools: ['agent', 'read', 'search', 'edit']
---
Run a subagent to research the new feature implementation details and return only information relevant for user documentation.
Then update the docs/ folder with the new documentation.
その後、プロンプトの指示内で、特定のサブタスクに対して「分離されたリサーチ」や「並列分析」を提案することで、エージェントにサブエージェントを使用するよう促すことができます。
カスタムエージェントをサブエージェントとして実行する(試験的機能)
デフォルトでは、サブエージェントはメインのチャットセッションのエージェントを引き継ぎ、同じモデルとツールを使用します。サブエージェントに特定の動作を定義したい場合は、カスタムエージェントを使用します。カスタムエージェントは独自のモデル、ツール、指示を指定できます。サブエージェントとして使用される場合、これらの設定がメインセッションから継承されたデフォルト設定を上書きします。
サブエージェント呼び出しの制御
2つのフロントマタープロパティを使用して、カスタムエージェントの呼び出し方法を制御できます。
user-invocable: エージェントがチャットのエージェントドロップダウンに表示されるかを制御します(デフォルトはtrue)。サブエージェントとしてのみアクセス可能なエージェントを作成する場合はfalseに設定します。disable-model-invocation: 他のエージェントからサブエージェントとして呼び出されることを防ぎます(デフォルトはfalse)。エージェントがユーザーによってのみ明示的にトリガーされるべき場合にtrueに設定します。
例として、サブエージェントとしてのみ使用でき、ドロップダウンには表示されないエージェントを作成する場合:
---
name: internal-helper
user-invocable: false
---
This agent can only be invoked as a subagent.
infer プロパティは非推奨です。より詳細な制御を行うには、user-invocable および disable-model-invocation を代わりに使用してください。
カスタムエージェントをサブエージェントとして実行するには、サブエージェントとしてカスタムエージェントまたは組み込みエージェントを使用するよう AI にプロンプトを出します。例:
Research エージェントをサブエージェントとして実行し、このプロジェクトの最適な認証方法を調査してください。Plan エージェントをサブエージェントとして使用し、myfeature の実装計画を作成してください。その後、plans/myfeature.plan.md に計画を保存してください。
使用可能なサブエージェントの制限(試験的機能)
デフォルトでは、disable-model-invocation: true が設定されていないすべてのカスタムエージェントが、サブエージェントとして利用可能です。複数のエージェントの名前や説明が似ている場合、AI が意図しないエージェントを選択することがあります。
メインエージェントのフロントマターで agents プロパティを指定し、許可されたカスタムエージェントのリストを提供することで、どのカスタムエージェントをサブエージェントとして使用できるかを制限できます。
agents プロパティは以下を受け付けます:
- エージェント名のリスト(例:
['Edit', 'Search']):特定のエージェントのみを許可します。 *:すべての利用可能なエージェントを許可します(デフォルトの動作)。- 空の配列
[]:いかなるサブエージェントの使用も禁止します。
agents 配列にエージェントを明示的にリストすると、disable-model-invocation: true 設定よりも優先されます。つまり、一般的なサブエージェントとしての使用からは保護されているエージェントでも、それを明示的に許可する特定のコーディネーターエージェントからはアクセス可能にすることができます。
例えば、テスト駆動開発 (TDD) エージェントは、サブエージェントとして Red、Green、Refactor エージェントのみを使用するようにすべきです。制限がない場合、TDD エージェントは専門的な TDD エージェントではなく、より汎用的なコーディングエージェントを選択してテストを実装してしまう可能性があります。
---
name: TDD
tools: ['agent']
agents: ['Red', 'Green', 'Refactor']
---
Implement the following feature using test-driven development. Use subagents to guide the following steps:
1. Use the Red agent to write failing tests
2. Use the Green agent to implement code to pass the tests
3. Use the Refactor agent to improve the code quality
入れ子状のサブエージェント
デフォルトでは、サブエージェントはさらに別のサブエージェントを生成できません。これは、エージェントが誤ってループ内で自身を呼び出した場合の無限再帰を防ぐためです。しかし、分割統治型のエージェントが大きなタスクを小さく分割し、それぞれの断片を自身に委任する場合など、再帰的な委任が有効なワークフローもあります。
入れ子状のサブエージェントを有効にするには、 chat.subagents.allowInvocationsFromSubagents 設定(デフォルトは false)を有効にします。これを有効にすると、サブエージェントは独自のサブエージェントを生成でき、最大 5 階層まで入れ子にすることが可能です。
例:再帰的エージェント
再帰的エージェントは、自身の agents プロパティに自身をリストします。これにより、エージェントが問題を小さな部分に分割し、それぞれの部分を自分自身の新しいインスタンスに委任する分割統治パターンが可能になります。
---
name: RecursiveProcessor
tools: ['agent', 'read', 'search']
agents: [RecursiveProcessor]
argument-hint: A list of items to process
---
You process a list of items by dividing and conquering:
- If the list has more than 4 items, split it in half and delegate each half to a RecursiveProcessor subagent.
- If the list has 4 or fewer items, process the items directly.
- Merge the results from each subagent into a final result.
オーケストレーションパターン
サブエージェントは、コーディネーターエージェントが専門的なワーカージェントに作業を委任するオーケストレーションパターンを実現します。このアプローチにより、各エージェントが得意とする作業に集中させながら、洗練されたワークフローを構築できます。
コーディネーターとワーカーのパターン
コーディネーターエージェントは全体的なタスクを管理し、サブタスクを専門的なサブエージェントに委任します。各ワーカージェントは、特化した一連のツールを持つことができます。例えば、プランニングやレビューのエージェントは読み取り専用のアクセス権のみが必要ですが、実装担当には編集権限が必要です。
---
name: Feature Builder
tools: ['agent', 'edit', 'search', 'read']
agents: ['Planner', 'Plan Architect', 'Implementer', 'Reviewer']
---
You are a feature development coordinator. For each feature request:
1. Use the Planner agent to break down the feature into tasks.
2. Use the Plan Architect agent to validate the plan against codebase patterns.
3. If the architect identifies reusable patterns or libraries, send feedback to the Planner to update the plan.
4. Use the Implementer agent to write the code for each task.
5. Use the Reviewer agent to check the implementation.
6. If the reviewer identifies issues, use the Implementer agent again to apply fixes.
Iterate between planning and architecture, and between review and implementation, until each phase converges.
各ワーカージェントは独自のツールアクセスを定義し、タスクの範囲が狭いため、より高速またはコスト効率の高いモデルを選択できます。
---
name: Planner
user-invocable: false
tools: ['read', 'search']
---
Break down feature requests into implementation tasks. Incorporate feedback from the Plan Architect.
---
name: Plan Architect
user-invocable: false
tools: ['read', 'search']
---
Validate plans against the codebase. Identify existing patterns, utilities, and libraries that should be reused. Flag any plan steps that duplicate existing functionality.
---
name: Implementer
user-invocable: false
model: ['Claude Haiku 4.5 (copilot)', 'Gemini 3 Flash (Preview) (copilot)']
---
Write code to complete assigned tasks.
このパターンにより、コーディネーターのコンテキストは高レベルのワークフローに集中したまま、各ワーカージェントは自身の特定の仕事に必要な、クリーンなコンテキストと適切な権限を持つことができます。
多角的コードレビュー
コードレビューは、多角的な視点から利益を得ます。単一のパスでは見逃しがちな問題も、異なるレンズを通して見ると明らかになることがよくあります。サブエージェントを使用して各レビューの視点を並列に実行し、結果を統合します。
---
name: Thorough Reviewer
tools: ['agent', 'read', 'search']
---
You review code through multiple perspectives simultaneously. Run each perspective as a parallel subagent so findings are independent and unbiased.
When asked to review code, run these subagents in parallel:
- Correctness reviewer: logic errors, edge cases, type issues.
- Code quality reviewer: readability, naming, duplication.
- Security reviewer: input validation, injection risks, data exposure.
- Architecture reviewer: codebase patterns, design consistency, structural alignment.
After all subagents complete, synthesize findings into a prioritized summary. Note which issues are critical versus nice-to-have. Acknowledge what the code does well.
このパターンが機能するのは、各サブエージェントが他の視点で何が見つかったかに影響されず、新鮮な状態でコードにアプローチできるからです。この例では、オーケストレーターがプロンプトを通じて各サブエージェントの焦点を形成します。これは追加のエージェントファイルを必要としない軽量なアプローチです。
より詳細に制御したい場合は、各レビューの視点を、専門的なツールアクセスを持つ個別のカスタムエージェントにすることができます。例えば、セキュリティレビュー担当者はセキュリティに特化した MCP サーバーを使用し、コード品質レビュー担当者はリンティング CLI ツールにアクセスできるといった具合です。このアプローチにより、各視点が特定の目的に最適なツールを使用できます。
関連リソース
- エージェントの概要 - VS Code におけるさまざまな種類のエージェントについて学びます
- カスタムエージェント - 独自の AI エージェントを作成します
- チャットセッション - VS Code でチャットセッションを管理します