Skip to main content

ツール検索を使用してオンデマンドでツールを読み込む

ツール検索では、タスクで必要な場合にのみ外部ツール Copilot CLI (コパイロット CLI) 読み込まれるので、コンテキストを小さく保ちます。

概要

MCP サーバーやその他の外部ツールを Copilot CLI (コパイロット CLI) に接続することは強力ですが、追加するすべてのツールにはコストがかかります。定義によってモデルのコンテキスト ウィンドウの領域が占有され、ツールの長いメニューによってエージェントが適切なものを選択するのが困難になります。 オンデマンド ツールの読み込み (または "ツール検索") により、エージェントが使用しないツールの定義によってコンテキスト ウィンドウが乱雑にならないようにします。 エージェントは、組み込みのツールと残りのツールを検索する方法から始まり、タスクを完了するために必要な場合にのみ追加のツールを読み込みます。

ツール検索は、増え続けるツールに関連する 2 つの問題に対処します。

  • 無駄なコンテキスト。 エージェントが作業を行う前に、数十個のツール定義で 10 ~ 20,000 個のトークンを使用できます。
  • ツールの選択精度が低下しました。 一度に数十個のツールが表示されると、モデルが間違ったツールに到達する可能性が高くなります。

セッション中に何が起こるか

プロンプトを入力するたびに、CLI は現在のツール インベントリを確認し、ツール検索を使用するかどうかを決定します。 約 30 個のツールの下では、ツール検索から得られる節約は価値がないため、 Copilot CLI (コパイロット CLI) ツールの検索を完全にスキップし、すべてを読み込みます。

最初に、ツール検索を使用すると、CLI の組み込みツールのみが読み込まれます。 それ以外のもの、つまり MCP ツールやその他の外部ツールは、すべて保留されます。 エージェントは、これらのツールが存在し、おおよその目的を確認できますが、完全な定義はまだ読み込まれていません。

エージェントは、読み込まれていないツールを必要とするステップにヒットすると、使用可能なツールをすばやく検索し、最も近い一致をコンテキストにプルします。 その後、これらのツールは会話の残りの部分に対して取り組むので、ルックアップは各ツールが初めて必要なときにのみ行われます。

その最初の参照では、モデルとのやり取りが1回余分に必要になりますが、以降の各ターンでコンテキストを小さく保てるため、その分のコストは何倍にもなって回収できます。

常に読み込まれるツール

ツール検索をスキップし、すぐに準備が整うツールがいくつかあります。

ツール検索は既定で有効になっており、サポートされているモデルを使用していて、十分に接続されたツールを備えている場合は常に自動的にアクティブ化されます。 ツール検索を無効にし、すべてのツールの読み込みに戻るには、個人用設定で toolSearch: false を設定します。 「GitHub Copilot CLI の構成ディレクトリ」を参照してください。

サポートされているモデル

ファミリサポートされているバージョン
クロード (アントロピック)Mythos Preview、Fable、Sonnet 4.0+、Opus 4.0 以降 (俳句ではありません)
GPT (OpenAI)GPT-5.4 以降

それ以外のどのモデルでも、すべてのツールが最初に読み込まれます。

MCP サーバーのツールを常に読み込んだ状態にしておく

場合によっては、特定の MCP サーバーのツールを常にエージェントの前に配置する必要がある場合があります。たとえば、ツールが常に使用されているサーバーや、追加の検索手順の価値がないサーバーなどです。 各 MCP サーバーには、これを制御する deferTools 設定があります。

  • "auto" (既定値) - サーバーのツールは他のツールと同様に動作し、しきい値を超えると延期される可能性があります。
  • "never"—サーバーのツールは、他のすべてのツール検索がアクティブな場合でも、常にエージェントのツール リストに含まれます。

これを設定する最も簡単な方法は、 /mcp edit スラッシュ コマンドを使用することです。 MCP サーバーを編集するためのフォームで、 Defer ToolsNever に切り替えます。 ~/.copilot/mcp-config.jsonで直接設定することもできます。

{
    "mcpServers": {
        "my-server": {
            "type": "stdio",
            "command": "npx",
            "args": ["-y", "@example/mcp-server"],
            "deferTools": "never",
            "tools": ["*"]
        }
    }
}

カスタム エージェントにおけるツール呼び出しの延期の設定

カスタム エージェントがツールを名前で一覧表示すると、それらのツールは常に読み込まれ、エージェントですぐに使用できるようになります。 通常はこれが必要ですが、エージェントが多数のツールセットを宣言し、特定の実行でそれらの一部にのみ触れる場合は、そのリストをツール検索に戻して、すべてのツールが一度に読み込まれるのではなく、必要に応じてツールが検出されるようにすることができます。

Markdown エージェント (.github/agents/*.md)は、 deferred-tool-loading: true を frontmatter に追加します。

---
name: my-agent
description: Works with a large catalog of tools
tools:
    - some_mcp_tool
    - another_mcp_tool
    # ...many more
deferred-tool-loading: true
---

Agent instructions here.

deferred-tool-loading設定については、次の点に注意してください。

  • ツール検索がアクティブな場合 (つまり、しきい値を超えるのに十分なツールがあるサポートされているモデル) にのみ影響します。
  • 自分のツールに名前を付けるエージェントにのみ関係します。 * ワイルドカードを使用するエージェントは、既にツール検索を使用しています。

ツール検索は、エージェントが実行しようとしている操作を、各ツールの 名前説明およびパラメーターの名前と説明と照合します。 明確で具体的な文言は、適切な要求に対してツールを表示します。

  • ツールには、見つけやすいように、その機能がわかる名前を付けます。
  • 漠然とした言葉ではなく、実際に検索する言葉で説明を書きます。