VS Code のカスタムエージェント
カスタムエージェントを使用すると、AI に特定の開発者の役割やタスクに合わせて調整されたさまざまなペルソナを採用するように構成できます。たとえば、セキュリティレビュー担当者、プランナー、ソリューションアーキテクト、またはその他の専門的な役割のエージェントを作成できます。各ペルソナには、独自の動作、利用可能なツール、および指示を含めることができます。
引き継ぎを使用してエージェント間のガイド付きワークフローを作成することもでき、1 回のクリックで 1 つの専門エージェントから別のエージェントにシームレスに移行できます。たとえば、プランニングエージェントから実装エージェントに直接移動したり、関連するコンテキストを持つコードレビュー担当者に引き継いだりできます。
この記事では、VS Code でカスタムエージェントを作成および管理する方法について説明します。
カスタムエージェントは VS Code リリース 1.106 から利用可能です。カスタムエージェントは、以前はカスタムチャットモードとして知られていました。
カスタムエージェントとは?
組み込みエージェントは、VS Code でチャットを行うための汎用的な構成を提供します。よりカスタマイズされたチャットエクスペリエンスを得るには、独自のカスタムエージェントを作成できます。
カスタムエージェントは、そのエージェントに切り替えるときに適用される一連の指示とツールで構成されます。たとえば、「プラン」エージェントには、実装プランを生成するための指示を含め、読み取り専用ツールのみを使用するようにすることができます。カスタムエージェントを作成することで、毎回関連するツールと指示を手動で選択する必要なく、その特定の構成にすばやく切り替えることができます。
カスタムエージェントは .agent.md Markdown ファイルで定義され、ワークスペースに保存して他の人が使用できるようにするか、ユーザープロファイルに保存してさまざまなワークスペースで再利用できるようにします。
カスタムエージェントは、バックグラウンドエージェントおよびクラウドエージェントで再利用できるため、同じ専門構成で自律タスクを実行できます。
カスタムエージェントを使用する理由
さまざまなタスクにはさまざまな機能が必要です。プランニングエージェントは、偶発的なコード変更を防ぐために、調査および分析のために読み取り専用ツールのみを必要とする場合がありますが、実装エージェントは完全な編集機能を必要とします。カスタムエージェントを使用すると、各タスクで利用可能なツールを正確に指定できるため、AI がそのジョブに適した機能を持っていることを確認できます。
カスタムエージェントを使用すると、AI の動作方法を定義する専門的な指示を提供することもできます。たとえば、プランニングエージェントは、AI にプロジェクトコンテキストを収集して詳細な実装プランを生成するように指示する場合がありますが、コードレビューエージェントは、セキュリティの脆弱性を特定し、改善を提案することに焦点を当てる場合があります。これらの専門的な指示により、そのエージェントに切り替えるたびに、一貫性があり、タスクに適した応答が保証されます。
サブエージェントはカスタムエージェントで実行できます。カスタムエージェントとのサブエージェントの実行(実験的)の詳細をご覧ください。
引き継ぎ
引き継ぎにより、提案された次のステップでエージェント間を移行するガイド付きシーケンシャルワークフローを作成できます。チャット応答が完了すると、引き継ぎボタンが表示され、ユーザーは関連するコンテキストと事前入力されたプロンプトで次のエージェントに移動できます。
引き継ぎは、複数ステップのワークフローをオーケストレーションするのに役立ちます。これにより、開発者は次のステップに進む前に各ステップを確認および承認するための制御が得られます。たとえば、
- プランニング → 実装: プランニングエージェントでプランを生成し、実装エージェントに引き継いでコーディングを開始します。
- 実装 → レビュー: 実装を完了し、コードレビューエージェントに切り替えて、品質とセキュリティの問題を確認します。
- 失敗するテストを作成 → 成功するテストを作成: 大きな実装よりもレビューしやすい失敗するテストを生成し、必要なコード変更を実装してそれらのテストを成功させるために引き継ぎます。
エージェントファイルで引き継ぎを定義するには、フロントマターに追加します。各引き継ぎは、ターゲットエージェント、ボタンのラベル、および送信するオプションのプロンプトを指定します。
---
description: Generate an implementation plan
tools: ['search', 'fetch']
handoffs:
- label: Start Implementation
agent: implementation
prompt: Now implement the plan outlined above.
send: false
---
ユーザーが引き継ぎボタンを表示して選択すると、事前入力されたプロンプトでターゲットエージェントに切り替わります。send: true の場合、プロンプトは自動的に送信され、次のワークフロー ステップが開始されます。
カスタムエージェントのファイル構造
カスタムエージェントファイルは Markdown ファイルであり、.agent.md 拡張子を使用し、次の構造を持っています。
VS Code は、ワークスペースの .github/agents フォルダ内のすべての .md ファイルをカスタムエージェントとして検出します。
ヘッダー (オプション)
ヘッダーは YAML フロントマターとしてフォーマットされ、次のフィールドがあります
| フィールド | 説明 |
|---|---|
説明 |
カスタムエージェントの簡単な説明。チャット入力フィールドのプレースホルダーテキストとして表示されます。 |
名前 |
カスタムエージェントの名前。指定しない場合は、ファイル名が使用されます。 |
argument-hint |
カスタムエージェントとの対話方法をユーザーにガイドするために、チャット入力フィールドに表示されるオプションのヒントテキスト。 |
ツール |
このカスタムエージェントで利用できるツールまたはツールのセットの名前のリスト。組み込みツール、ツールのセット、MCP ツール、または拡張機能によって提供されるツールを含めることができます。MCP サーバーのすべてのツールを含めるには、<server name>/* 形式を使用します。チャットのツールの詳細をご覧ください。 |
model |
プロンプトを実行するときに使用する AI モデル。指定しない場合は、モデルピッカーで現在選択されているモデルが使用されます。 |
infer |
カスタムエージェントをサブエージェントとして使用できるようにするオプションのブール値フラグ (デフォルトは true)。 |
target |
カスタムエージェントのターゲット環境またはコンテキスト (vscode または github-copilot)。 |
mcp-servers |
GitHub Copilot のカスタムエージェントで使用する Model Context Protocol (MCP) サーバー構成 JSON のオプションのリスト (ターゲット: github-copilot)。 |
handoffs |
カスタムエージェント間を移行するための推奨される次のアクションまたはプロンプトのオプションのリスト。引き継ぎボタンは、チャット応答が完了した後にインタラクティブな提案として表示されます。 |
handoffs.label |
引き継ぎボタンに表示される表示テキスト。 |
handoffs.agent |
切り替えるターゲットエージェントの識別子。 |
handoffs.prompt |
ターゲットエージェントに送信するプロンプトテキスト。 |
handoffs.send |
プロンプトを自動送信するオプションのブール値フラグ (デフォルトは false)。 |
カスタムエージェントを使用しているときに指定されたツールが利用できない場合、そのツールは無視されます。
本文
カスタムエージェントファイルの本文には、Markdown としてフォーマットされたカスタムエージェントの実装が含まれています。ここに、AI にこのカスタムエージェントで従わせたい特定のプロンプト、ガイドライン、またはその他の関連情報を提供します。
Markdown リンクを使用して他のファイルを参照できます。たとえば、指示ファイルを再利用できます。
本文テキストでエージェントツールを参照するには、#tool:<tool-name> 構文を使用します。たとえば、githubRepo ツールを参照するには、#tool:githubRepo を使用します。
チャットビューでカスタムエージェントを選択すると、カスタムエージェントファイル本文のガイドラインがユーザーチャットプロンプトの前に付加されます。
カスタムエージェントの例
次のコード スニペットは、実装プランを生成し、コード編集を行わない「プラン」カスタムエージェント ファイルの例を示しています。その他のコミュニティ提供の例については、Awesome Copilot リポジトリを参照してください。
---
description: Generate an implementation plan for new features or refactoring existing code.
name: Planner
tools: ['fetch', 'githubRepo', 'search', 'usages']
model: Claude Sonnet 4
handoffs:
- label: Implement Plan
agent: agent
prompt: Implement the plan outlined above.
send: false
---
# Planning instructions
You are in planning mode. Your task is to generate an implementation plan for a new feature or for refactoring existing code.
Don't make any code edits, just generate a plan.
The plan consists of a Markdown document that describes the implementation plan, including the following sections:
* Overview: A brief description of the feature or refactoring task.
* Requirements: A list of requirements for the feature or refactoring task.
* Implementation Steps: A detailed list of steps to implement the feature or refactoring task.
* Testing: A list of tests that need to be implemented to verify the feature or refactoring task.
カスタムエージェントの作成
カスタムエージェント ファイルは、ワークスペースまたはユーザー プロファイルに作成できます。
-
エージェントのドロップダウンから カスタムエージェントの構成 を選択し、次に 新しいカスタムエージェントの作成 を選択するか、コマンド パレットで チャット: 新しいカスタムエージェント コマンドを実行します (⇧⌘P (Windows、Linux Ctrl+Shift+P))。
-
カスタムエージェント ファイルを作成する場所を選択します。
-
ワークスペース: ワークスペースの
.github/agentsフォルダにカスタムエージェント定義ファイルを作成して、そのワークスペース内でのみ使用します。 -
ユーザー プロファイル: 現在のプロファイル フォルダにカスタムエージェント定義ファイルを作成して、すべてのワークスペースで再利用できるようにします。
-
-
カスタムエージェントのファイル名を入力します。これは、エージェントのドロップダウンに表示されるデフォルト名です。
-
新しく作成された
.agent.mdファイルでカスタムエージェントの詳細を指定します。- ファイルの上部にある YAML フロントマターに記入して、カスタムエージェントの名前、説明、ツール、およびその他の設定を構成します。
- ファイル本文にカスタムエージェントの指示を追加します。
カスタムエージェント定義ファイルを更新するには、エージェントのドロップダウンから カスタムエージェントの構成 を選択し、リストからカスタムエージェントを選択して変更します。
以前にワークスペースの .github/chatmodes フォルダに .chatmode.md 拡張子を持つカスタムチャットモードを作成していた場合、VS Code はそれらのファイルをカスタムエージェントとして認識します。クイック修正アクションを使用して、それらを新しい .github/agents フォルダに .agent.md 拡張子とともに名前変更および移動できます。
エージェントのドロップダウンリストのカスタマイズ
複数のカスタムエージェントがある場合、エージェントのドロップダウンに表示されるエージェントをカスタマイズできます。特定のカスタムエージェントを表示または非表示にするには、
-
エージェントのドロップダウンから カスタムエージェントの構成 を選択します。
-
リスト内のカスタムエージェントにカーソルを合わせ、目のアイコンを選択して、エージェントのドロップダウンに表示または非表示にします。
ツールの優先順位
カスタムエージェントとプロンプト ファイルの両方で利用可能なツールのリストを、tools メタデータ フィールドを使用して指定できます。プロンプト ファイルは、agent メタデータ フィールドを使用してカスタムエージェントを参照することもできます。
チャットで利用可能なツールのリストは、次の優先順序で決定されます。
- プロンプト ファイルで指定されたツール (存在する場合)
- プロンプト ファイルで参照されているカスタムエージェントのツール (存在する場合)
- 選択されたエージェントのデフォルト ツール (存在する場合)
カスタムエージェントをチーム間で共有する (実験的)
チーム間でカスタムエージェントを共有するには、ワークスペースレベルのカスタムエージェント (.github/agents フォルダ) を作成できます。組織内の複数のワークスペース間でカスタムエージェントを共有したい場合は、GitHub 組織レベルで定義できます。
VS Code は、アカウントがアクセスできる組織レベルで定義されたカスタムエージェントを自動的に検出します。これらのエージェントは、組み込みエージェント、個人用およびワークスペースのカスタムエージェントとともに、チャットのエージェント ドロップダウンに表示されます。
組織レベルのカスタムエージェントの検出を有効にするには、github.copilot.chat.customAgents.showOrganizationAndEnterpriseAgents を true に設定します。
GitHub ドキュメントで、組織向けのカスタムエージェントを作成する方法を学んでください。
よくある質問
カスタムエージェントとチャットモードは異なりますか?
カスタムエージェントは、以前はカスタムチャットモードとして知られていました。機能は同じですが、特定のタスクの AI の動作をカスタマイズするという目的をよりよく反映するために、用語が更新されました。
VS Code は、引き続き .chatmode.md 拡張子を持つ既存のファイルをカスタムエージェントとして認識します。クイック修正アクションを使用して、それらを新しい .github/agents フォルダに .agent.md 拡張子とともに名前変更および移動できます。