Présentation
La connexion de serveurs MCP et d’autres outils externes est Copilot pour CLI puissante, mais chaque outil que vous ajoutez comporte un coût : sa définition prend de l’espace dans la fenêtre contextuelle du modèle, et un long menu d’outils rend plus difficile pour l’agent de choisir celui qui convient. Le chargement d’outils à la demande (ou « recherche d’outils ») empêche la fenêtre de contexte d’être encombrée par les définitions des outils que l’agent n’utilise pas. L’agent commence par ses outils intégrés et un moyen de rechercher le reste, puis charge des outils supplémentaires uniquement lorsqu’il est nécessaire d’effectuer une tâche.
La recherche d’outils résout deux problèmes associés à un nombre croissant d’outils :
- Contexte gaspillé. Quelques dizaines de définitions d’outils peuvent consommer 10 000 à 20 000 tokens avant même que l’agent ait commencé à travailler.
- Précision de sélection de l’outil détériorée. Lorsque plusieurs dizaines d’outils sont affichés simultanément, le modèle risque davantage de choisir le mauvais outil.
Que se passe-t-il pendant une session
Chaque fois que vous saisissez une instruction, le CLI vérifie l’inventaire actuel des outils et détermine s’il doit utiliser la fonction de recherche d’outils. En dessous de 30 outils, les économies que vous obtenez à partir de la recherche d’outils ne valent pas la peine, donc Copilot pour CLI ignore entièrement la recherche d’outils et charge simplement tout.
Au départ, lorsque la recherche d’outils est utilisée, seuls les outils intégrés de l’interface CLI sont chargés. Tout le reste , les outils MCP et d’autres outils externes, sont conservés. L’agent peut voir que ces outils existent et à peu près ce qu’ils sont pour, mais que leurs définitions complètes ne sont pas encore chargées.
Lorsque l’agent atteint une étape qui a besoin d’un outil qu’il n’a pas chargé, il exécute une recherche rapide sur les outils disponibles et extrait les correspondances les plus proches dans le contexte. Ces outils restent ensuite disponibles pendant le reste de la conversation, de sorte que la recherche n’a lieu que la première fois que l’un d’eux est nécessaire.
Cette consultation initiale coûte un échange supplémentaire avec le modèle, mais ce surcoût est largement amorti en gardant un contexte réduit à chaque échange suivant.
Outils toujours chargés
Quelques outils ignorent la recherche d’outils et sont prêts immédiatement :
- Copilot pour CLIoutils intégrés (grep, glob, bash, modification, etc.).
- Outils provenant d’un serveur MCP que vous avez configuré avec
deferTools: "never". Consultez plus loin dans cet article Maintenir les outils d’un serveur MCP toujours chargés. - Outils chargés par un agent personnalisé. Consultez Configuration de la mise en attente de l’outil dans les agents personnalisés plus loin dans cet article.
Désactivation de la recherche d’outils
La recherche d’outils est activée par défaut et s’active automatiquement chaque fois que vous êtes sur un modèle pris en charge et que vous disposez d’outils connectés suffisants pour le rendre utile. Pour désactiver la recherche d’outils et revenir au chargement de tous les outils, définissez toolSearch: false dans vos paramètres personnels. Consultez « GitHub Copilot le répertoire de configuration du CLI ».
Modèles pris en charge
| Famille | Versions prises en charge |
|---|---|
| Claude (Anthropic) | Mythos Preview, Fable, Sonnet 4.0+, Opus 4.0+ (pas Haiku) |
| GPT (OpenAI) | GPT-5.4 et versions ultérieures |
Sur n’importe quel autre modèle, tous les outils sont chargés en amont.
Garder les outils du serveur MCP chargés en permanence
Parfois, vous souhaiterez peut-être que les outils d’un serveur MCP particulier soient toujours devant l’agent( par exemple, un serveur dont les outils sont utilisés constamment, ou un serveur où l’étape de recherche supplémentaire n’en vaut pas la peine. Chaque serveur MCP a un deferTools paramètre qui contrôle ceci :
"auto"(valeur par défaut) : les outils du serveur se comportent comme n’importe quel autre et peuvent être différés une fois que vous dépassez le seuil."never": les outils du serveur sont toujours inclus dans la liste des outils de l’agent, même si la recherche d’outils est active pour tout le reste.
Le moyen le plus simple de le définir consiste à utiliser la /mcp edit commande de barre oblique. Dans le formulaire de modification du serveur MCP, réglez Différer les outils sur Jamais. Vous pouvez également le définir directement dans ~/.copilot/mcp-config.json:
{
"mcpServers": {
"my-server": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@example/mcp-server"],
"deferTools": "never",
"tools": ["*"]
}
}
}
Configuration du différé de l’outil dans les agents personnalisés
Lorsqu’un agent personnalisé répertorie ses outils par nom, ces outils sont toujours chargés afin que l’agent puisse les utiliser immédiatement. C’est généralement ce que vous voulez, mais si un agent déclare un grand ensemble d’outils et ne touche que quelques-uns d’entre eux dans une exécution donnée, vous pouvez remettre cette liste à la recherche d’outils afin que les outils soient découverts en fonction des besoins plutôt que tous chargés à la fois.
Pour un agent Markdown (.github/agents/*.md), ajoutez-le deferred-tool-loading: true au 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.
Gardez à l’esprit les éléments suivants concernant le deferred-tool-loading paramètre :
- Elle a uniquement un effet lorsque la recherche d’outils est active (autrement dit, sur un modèle pris en charge avec suffisamment d’outils pour franchir le seuil).
- Il importe uniquement pour les agents qui nomment leurs outils. Les agents utilisant le joker
*utilisent déjà la recherche d’outils.
Optimisation des outils pour la recherche d’outils
La recherche d’outils correspond à ce que l’agent tente de faire par rapport au nom de chaque outil, à sa description et à ses noms de paramètres et descriptions. Une formulation claire et spécifique permet à un outil de s’afficher pour les demandes appropriées :
- Nommez les outils pour ce qu’ils font afin qu’ils soient plus faciles à trouver.
- Rédigez des descriptions avec les mots que les gens rechercheraient réellement plutôt qu’avec des termes vagues.