Introduction
Подключение MCP-серверов и других внешних инструментов Второй пилот CLI — это мощно, но каждый добавленный инструмент имеет свою цену: его определение занимает место в контекстном окне модели, а длинное меню инструментов затрудняет агенту выбор правильного. Загрузка инструментов по требованию (или «поиск инструментов») предотвращает перегружание контекстного окна определениями инструментов, которые агент не использует. Агент начинает только с встроенных инструментов и способа поиска остальных, а дополнительные инструменты загружается только тогда, когда они нужны для выполнения задачи.
Поиск инструментов решает две проблемы, связанные с растущим числом инструментов:
- Пустой контекст. Несколько десятков определений инструментов могут съесть 10–20 тысяч токенов до того, как агент выполнит какую-либо работу.
- Снижена точность выбора инструментов. Когда сразу в поле зрения несколько десятков инструментов, модель с большей вероятностью потянется к неправильному.
Что происходит во время сессии
Каждый раз, когда вы вводите запрос, CLI проверяет текущий инвентар инструментов и решает, использовать ли поиск инструментов. Ниже примерно 30 инструментов экономия от поиска инструментов не стоит того, поэтому Второй пилот CLI они полностью пропускают поиск инструментов и просто загружают всё.
Изначально, при поиске по инструментам, загружаются только встроенные инструменты CLI. Всё остальное — MCP-инструменты и другие внешние инструменты — задерживается. Агент видит, что эти инструменты существуют и примерно для чего они предназначены, но их полные определения ещё не загружены.
Когда агент достигает шага, требующего загруженного инструмента, он быстро ищет по доступным инструментам и выводит ближайшие совпадения в контекст. Эти инструменты остаются на протяжении всего разговора, поэтому поиск происходит только при первом появлении каждого из них.
Этот первый поиск требует дополнительного обмена с моделью, но вы получаете её обратно много раз, если сохраняете контекст маленьким на каждом последующем ходе.
Инструменты, которые всегда загружены
Некоторые инструменты пропускают поиск инструментов и готовы сразу:
- Второй пилот CLIвстроенные инструменты (grep, glob, bash, редактирование и так далее).
- Инструменты с MCP-сервера, который вы настроили с
deferTools: "never". См. раздел «Всегда загруженные инструменты MCP-сервера » позже в этой статье. - Инструменты, загружаемые пользовательским агентом. См. раздел «Отсрочка конфигурирования инструментов в пользовательских агентах » позже в этой статье.
Отключение поиска по инструментам
Поиск инструментов по умолчанию включен и автоматически активируется, когда вы находитесь на поддерживаемой модели и у вас достаточно подключённых инструментов, чтобы это было выгодно. Чтобы отключить поиск инструментов и вернуться к загрузке всех инструментов, настройте toolSearch: false его в своих личных настройках. См . раздел AUTOTITLE.
Поддерживаемые модели
| Семья | Поддерживаемые версии |
|---|---|
| Клод (Anthropic) | Mythos Preview, Fable, Sonnet 4.0+, Opus 4.0+ (не Haiku) |
| GPT (OpenAI) | GPT-5.4 и более поздние |
В любой другой модели все инструменты загружаются спереди.
Всегда загруженные инструменты MCP-сервера
Иногда вы можете хотеть, чтобы инструменты конкретного MCP-сервера всегда находились перед агентом — например, сервер, чьи инструменты используются постоянно, или для того, где дополнительный поиск не стоит того. У каждого MCP-сервера есть deferTools настройка, которая управляет следующим образом:
"auto"(по умолчанию) — инструменты сервера ведут себя как обычные и могут быть отложены, когда вы превысите порог."never"— инструменты сервера всегда включены в список инструментов агента, даже когда поиск инструментов активен для всего остального.
Самый простой способ настроить это — использовать /mcp edit команду слэш. В форме редактирования сервера MCP переключите Delay Tools на Never. Вы также можете настроить его напрямую в ~/.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 в переднюю часть:
---
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 сеттинга:
- Это действует только при активном поиске по инструментам (то есть на поддерживаемой модели с достаточным инструментом для преодоления порога).
- Это важно только для агентов, которые называют свои инструменты. Агенты, использующие джокер,
*уже используют поиск по инструментам.
Оптимизация инструментов для поиска инструментов
Поиск инструментов сопоставляет действия агента с именем каждого инструмента, его описанием и названиями параметров и описаниями. Чёткая и конкретная формулировка позволяет инструменту появляться для нужных запросов:
- Назовите инструменты для их работы, чтобы их было проще найти.
- Пишите описания словами, которые люди действительно ищут, а не расплывчатыми словами.