エージェントでのツールの使用

ツールは、エージェントがあなたのリクエストに対して実行するための手段です。ワークスペースの検索、ファイルの読み取り、コードの編集、ターミナルコマンドの実行、Webコンテンツの取得、外部サービスの呼び出しを行います。このガイドでは、小さなタスクから始め、タスクに必要なツールのみを選択し、ツールセット、承認、またはサンドボックスをいつ使用するかを決定します。

前提条件

開始する前に、VS Codeをインストールし、AI機能を有効にして、GitHub Copilotにサインインしてください。また、MCPサーバーやツールを提供する拡張機能など、試してみたい追加ツールへのアクセス権も必要です。

タスクから始める

エージェントにリポジトリでの認証の仕組みを説明してもらい、追加すべき小さなテストを1つ提案してもらう場面を想像してください。このタスクにはリポジトリのコンテキストが必要ですが、開始時にはおそらくターミナルアクセス、Webアクセス、外部サービスは必要ありません。

エージェントセッションでこのプロンプトを使用します

Explain the authentication flow in this project. Find the main files involved, then suggest one focused test I should add next.

送信する前に、エージェントに持たせるツールを決定します。VS Codeは3種類のツールをサポートしています

  • 読み取り、編集、検索、実行、Webなどの組み込みツール。
  • インストールされたModel Context ProtocolサーバーからのMCPツール。
  • VS Code拡張機能によって提供される拡張ツール。

エージェントは、あなたのプロンプトとコンテキストに基づいて、有効なツールから選択します。あなたの役割は、無関係なオプションが並ぶ煩雑なリストを渡すことなく、タスクを完了するのに十分な機能をエージェントに与えることです。

最初のパスで使用するツールを選択する

  1. チャットビューを開きます。

  2. エージェントピッカーから Agent を選択します。

  3. チャット入力欄で Configure Tools を選択します。

  4. リポジトリ検索およびファイル読み取りツールを有効にしたままにします。

  5. 初回のパスでは、ターミナル、Web、および外部サービスのツールはオフのままにします。

  6. プロンプトを送信します。

Screenshot showing the Chat view with the Configure Tools button in the chat input.

小さく始めることで、エージェントの集中力を維持しやすくなります。また、モデルのコンテキストウィンドウ内のツール定義を減らすこともできます。VS Codeでは、ツールの数を管理しやすくするために一部のグループを仮想ツールとして公開できますが、アクティブなセットを小さくすることで、モデルがタスクを推論しやすくなります。

ヒント

テストの実行や生成された出力の検査が必要だとエージェントが言った場合は、すべてのツールを有効にしてやり直すのではなく、次のリクエストに向けてターミナルツールを追加してください。

必要に応じて特定のツールを追加する

どのツールが回答の根拠となるべきかを正確に把握している場合もあります。チャット入力欄に # と入力すると、利用可能なツール、コンテキストソース、ツールセットが表示されます。

たとえば、前回のプロンプトを次のように修正します

Explain the authentication flow in this project. Focus on repository context. #codebase

タスクに明確な信頼のソースがある場合は、明示的なツール参照を使用します

  • 回答がリポジトリからのものであるべき場合は #codebase を使用します。
  • 現在の診断結果をエージェントに修正させたい場合は #problems を使用します。
  • 回答に現在の外部ドキュメントが必要な場合は #web を使用します。

Screenshot showing the tool picker drop-down with built-in tools, MCP servers, and user-defined tool sets.

個別のツールとツールセットのどちらを使用するか決定する

個別のツールは1回限りのリクエストに適しています。同じセットアップを繰り返す場合は、ツールセットの方が適しています。

用途 適した用途
個別のツール コンテキストのソースが1つだけである短いタスク。 ターミナルアクセスなしで #codebase を使用してファイルを説明する。
ツールセット 同じツールのグループを必要とする、繰り返されるワークフロー。 検索、編集、テスト、およびPython言語ツールを含むPythonの保守ワークフロー。
カスタムエージェントツール 常に同じ境界内で実行されるべき役割。 検索およびWebツールはあるが、編集やターミナルツールはないプランニングエージェント。

繰り返しの作業用にツールセットを作成する

このステップでは、リポジトリクリーンアップ作業用の再利用可能なツールセットを作成します。

  1. コマンドパレットを開きます。

  2. Chat: Configure Tool Sets を実行し、Create new tool sets file を選択します。

  3. 開いた .jsonc ファイルに、検索、編集、テストツールなど、クリーンアップワークフローで使用するツールを追加し、さらに descriptionicon を追加します。

  4. ファイルを保存します。

  5. チャットに戻り、Configure Tools からツールセットを選択するか、プロンプト内で # に続けてツールセット名を入力して参照します。

次に、保存したセットアップを使用するプロンプトを試します

Find one small cleanup opportunity in this repository, make the change, and run the focused validation for it.

ツールセットは、同じツール選択を繰り返し再構築する問題を解決します。また、保存されたファイルによってワークフローにどのツールが期待されているかが示されるため、レビューも容易になります。

カスタムエージェント用のツールを制限する

カスタムエージェントを構築する場合、エージェントのMarkdownフロントマターの tools フィールドに、アクセス権を持つツールとツールセットをリストできます

---
description: Python testing helper
tools: ['search', 'edit', 'pylance', 'runTests']
---

また、tools フィールドを直接編集するか、チャットビューの Configure Tools ボタンでツールピッカーを開き、VS Codeにエージェントのリストを更新してもらうこともできます。

ツールの境界が役割の一部である場合は、カスタムエージェントを使用します。たとえば、プランニングエージェントが誤ってファイルを編集しないように、検索ツールとWebツールを与えつつ、編集ツールとターミナルツールは除外します。一方、実装エージェントは、コードを修正して変更を検証することが仕事であるため、より幅広いセットが必要です。

権限レベルを選択する

次に、ツールが実行される前にどれくらいのレビューを行うかを決定します。権限ピッカーは、セッション中にエージェントが持つ自律性の度合いを制御します。

  • Default Approvals は、機密性の高いアクションの前に確認を求めます。
  • Bypass Approvals は、ツール呼び出しを自動的に承認します。
  • Autopilot (プレビュー) は、ツール呼び出しを自動的に承認し、タスクが完了するまで作業を継続します。

タスクのリスクに一致するモードを使用します

  • 馴染みのないコードを探索しているときや、エージェントが実行するコマンドをレビューしたいときは、Default Approvals を使用します。
  • どのツールが実行されるかを把握した上で、信頼できるワークスペースでの定型的なワークフローには、Bypass Approvals を使用します。
  • エージェントがレビュー可能な結果に達するまで反復作業を続けられるような、限定されたタスクには、Autopilot を使用します。

好みのモードをセッション間で維持するには、 chat.permissions.default Open in VS Code Open in VS Code Insiders を使用します。Autopilotは、 chat.autopilot.enabled Open in VS Code Open in VS Code Insiders がオンのときに利用できます。

注意

自律性のレベルが高いほど、ツール実行前に行うレビューの量が減ります。特にエージェントがファイルを編集したりターミナルコマンドを実行したりできる場合は、注意して使用してください。

Screenshot of approval options.

ターミナル作業用のサンドボックスを追加する

エージェントのサンドボックス化は、エージェントによって実行されるターミナルコマンドにOSレベルの分離を追加します。ファイルシステムとネットワークへのアクセスを制限し、サンドボックス化されたコマンドはすでに制御された環境で実行されているため、自動的に承認されます。

chat.agent.sandbox.enabled Open in VS Code Open in VS Code Insiders This setting can be managed by your organization. Contact your administrator to change it. で有効にします。macOSおよびLinuxでは、完全な分離、またはネットワークアクセスを伴うファイルシステム分離を選択できます。

サンドボックス化は、エージェントにターミナルアクセスが必要であるが、ワークスペースや承認されたドメインを超えてアクセスしてほしくない場合に適しています。たとえば、生成されたスクリプトの実行、ローカルツールの起動、または馴染みのないパッケージスクリプトを持つプロジェクトの検査をエージェントに依頼する前に、サンドボックス化を使用します。

あなたの番です

同じリポジトリタスクを3つの方法で試してみます

  1. リポジトリ検索およびファイル読み取りツールのみを使用して実行する。

  2. ターミナルツールを追加し、焦点を絞った検証を1つ実行するようにエージェントに依頼する。

  3. ツールの選択をツールセットとして保存し、新しいチャットで再利用する。

実行ごとに、何が変更されたかを比較します。エージェントが集中力を維持できたか、不足している権限を求めてきたか、予想外のツールを使用しなかったかを確認します。

この内容が重要な理由

適切なツールの組み合わせにより、エージェントの集中力が維持されます。ツールセットを使用すると、優れたワークフローを再現可能になります。カスタムエージェントにより、ツールの境界が役割の一部になります。承認機能とサンドボックス化により、エージェントが変更を行ったりワークスペース外にアクセスしたりする場合でも、コントロールを維持しやすくなります。

次のステップ

ツールの使い方がわかったところで、次のコースでは、MCPサーバーによって外部データやアクションがエージェントセッションにどのように追加されるかを説明します。

詳細情報

© . This website operates independently and is not affiliated with or endorsed by Microsoft. All brand names, logos, and trademarks are the property of their respective owners.