{"meta":{"title":"ツール検索を使用してオンデマンドでツールを読み込む","intro":"ツール検索では、タスクで必要な場合にのみ外部ツール Copilot CLI 読み込まれるので、コンテキストを小さく保ちます。","product":"GitHub Copilot","breadcrumbs":[{"href":"/ja/copilot","title":"GitHub Copilot"},{"href":"/ja/copilot/concepts","title":"概念"},{"href":"/ja/copilot/concepts/agents","title":"展開"},{"href":"/ja/copilot/concepts/agents/copilot-cli","title":"Copilot CLI"},{"href":"/ja/copilot/concepts/agents/copilot-cli/tool-search","title":"ツール検索"}],"documentType":"article"},"body":"# ツール検索を使用してオンデマンドでツールを読み込む\n\nツール検索では、タスクで必要な場合にのみ外部ツール Copilot CLI 読み込まれるので、コンテキストを小さく保ちます。\n\n## 概要\n\nMCP サーバーやその他の外部ツールを Copilot CLI に接続することは強力ですが、追加するすべてのツールにはコストがかかります。定義によってモデルのコンテキスト ウィンドウの領域が占有され、ツールの長いメニューによってエージェントが適切なものを選択するのが困難になります。 オンデマンド ツールの読み込み (または \"ツール検索\") により、エージェントが使用しないツールの定義によってコンテキスト ウィンドウが乱雑にならないようにします。 エージェントは、組み込みのツールと残りのツールを検索する方法から始まり、タスクを完了するために必要な場合にのみ追加のツールを読み込みます。\n\nツール検索は、増え続けるツールに関連する 2 つの問題に対処します。\n\n* **無駄なコンテキスト。** エージェントが作業を行う前に、数十個のツール定義で 10 \\~ 20,000 個のトークンを使用できます。\n* **ツールの選択精度が低下しました。** 一度に数十個のツールが表示されると、モデルが間違ったツールに到達する可能性が高くなります。\n\n## セッション中に何が起こるか\n\nプロンプトを入力するたびに、CLI は現在のツール インベントリを確認し、ツール検索を使用するかどうかを決定します。 約 30 個のツールの下では、ツール検索から得られる節約は価値がないため、 Copilot CLI ツールの検索を完全にスキップし、すべてを読み込みます。\n\n最初に、ツール検索を使用すると、CLI の組み込みツールのみが読み込まれます。 それ以外のもの、つまり MCP ツールやその他の外部ツールは、すべて保留されます。 エージェントは、これらのツールが存在し、おおよその目的を確認できますが、完全な定義はまだ読み込まれていません。\n\nエージェントは、読み込まれていないツールを必要とするステップにヒットすると、使用可能なツールをすばやく検索し、最も近い一致をコンテキストにプルします。 その後、これらのツールは会話の残りの部分に対して取り組むので、ルックアップは各ツールが初めて必要なときにのみ行われます。\n\nその最初の参照では、モデルとのやり取りが1回余分に必要になりますが、以降の各ターンでコンテキストを小さく保てるため、その分のコストは何倍にもなって回収できます。\n\n### 常に読み込まれるツール\n\nツール検索をスキップし、すぐに準備が整うツールがいくつかあります。\n\n* Copilot CLIの組み込みツール (grep、glob、bash、編集など)。\n* `deferTools: \"never\"`で構成した MCP サーバーのツール。 この記事の後半にある[MCP サーバーのツールを常に読み込まれた状態に保つ](#keeping-an-mcp-servers-tools-always-loaded)を参照してください。\n* カスタムエージェントによってロードされたツール。 この記事 [で後述するカスタム エージェントでのツール遅延の構成](#configuring-tool-deferral-in-custom-agents) を参照してください。\n\n## ツール検索の無効化\n\nツール検索は既定で有効になっており、サポートされているモデルを使用していて、十分に接続されたツールを備えている場合は常に自動的にアクティブ化されます。 ツール検索を無効にし、すべてのツールの読み込みに戻るには、個人用設定で `toolSearch: false` を設定します。 「[GitHub Copilot CLI の構成ディレクトリ](/ja/copilot/reference/copilot-cli-reference/cli-config-dir-reference#user-settings-copilotsettingsjson)」を参照してください。\n\n### サポートされているモデル\n\n| ファミリ           | サポートされているバージョン                                           |\n| -------------- | -------------------------------------------------------- |\n| クロード (アントロピック) | Mythos Preview、Fable、Sonnet 4.0+、Opus 4.0 以降 (俳句ではありません) |\n| GPT (OpenAI)   | GPT-5.4 以降                                               |\n\nそれ以外のどのモデルでも、すべてのツールが最初に読み込まれます。\n\n### MCP サーバーのツールを常に読み込んだ状態にしておく\n\n場合によっては、特定の MCP サーバーのツールを常にエージェントの前に配置する必要がある場合があります。たとえば、ツールが常に使用されているサーバーや、追加の検索手順の価値がないサーバーなどです。 各 MCP サーバーには、これを制御する `deferTools` 設定があります。\n\n* `\"auto\"` (既定値) - サーバーのツールは他のツールと同様に動作し、しきい値を超えると延期される可能性があります。\n* `\"never\"`—サーバーのツールは、他のすべてのツール検索がアクティブな場合でも、常にエージェントのツール リストに含まれます。\n\nこれを設定する最も簡単な方法は、 `/mcp edit` スラッシュ コマンドを使用することです。 MCP サーバーを編集するためのフォームで、 **Defer Tools** を **Never** に切り替えます。\n`~/.copilot/mcp-config.json`で直接設定することもできます。\n\n```json\n{\n    \"mcpServers\": {\n        \"my-server\": {\n            \"type\": \"stdio\",\n            \"command\": \"npx\",\n            \"args\": [\"-y\", \"@example/mcp-server\"],\n            \"deferTools\": \"never\",\n            \"tools\": [\"*\"]\n        }\n    }\n}\n```\n\n### カスタム エージェントにおけるツール呼び出しの延期の設定\n\nカスタム エージェントがツールを名前で一覧表示すると、それらのツールは常に読み込まれ、エージェントですぐに使用できるようになります。 通常はこれが必要ですが、エージェントが多数のツールセットを宣言し、特定の実行でそれらの一部にのみ触れる場合は、そのリストをツール検索に戻して、すべてのツールが一度に読み込まれるのではなく、必要に応じてツールが検出されるようにすることができます。\n\nMarkdown エージェント (`.github/agents/*.md`)は、 `deferred-tool-loading: true` を frontmatter に追加します。\n\n```markdown\n---\nname: my-agent\ndescription: Works with a large catalog of tools\ntools:\n    - some_mcp_tool\n    - another_mcp_tool\n    # ...many more\ndeferred-tool-loading: true\n---\n\nAgent instructions here.\n```\n\n`deferred-tool-loading`設定については、次の点に注意してください。\n\n* ツール検索がアクティブな場合 (つまり、しきい値を超えるのに十分なツールがあるサポートされているモデル) にのみ影響します。\n* 自分のツールに名前を付けるエージェントにのみ関係します。\n  `*` ワイルドカードを使用するエージェントは、既にツール検索を使用しています。\n\n## ツール検索用のツールの最適化\n\nツール検索は、エージェントが実行しようとしている操作を、各ツールの **名前**、 **説明**、 **およびパラメーターの名前と説明と**照合します。 明確で具体的な文言は、適切な要求に対してツールを表示します。\n\n* ツールには、見つけやすいように、その機能がわかる名前を付けます。\n* 漠然とした言葉ではなく、実際に検索する言葉で説明を書きます。"}