Leçons tirées de la création de Claude Code : voir comme un agent

@trq212
ANGLAISil y a 4 mois · 27 févr. 2026
4.0M
11.2K
1.4K
249
28.6K

TL;DR

Découvrez comment l'équipe de Claude Code optimise les performances des agents grâce à l'appel d'outils structuré, à la coordination des tâches et aux techniques de divulgation progressive.

L'une des parties les plus difficiles de la construction d'un harnais d'agent est la conception de son espace d'action.

Claude agit via l'appel d'outils (Tool Calling), mais il existe plusieurs façons de construire des outils dans l'API Claude avec des primitives comme bash, skills et récemment l'exécution de code (en savoir plus sur l'appel d'outils programmatique dans l'API Claude dans le nouvel article de @RLanceMartin).

Face à toutes ces options, comment concevoir les outils de votre agent ? Avez-vous besoin d'un seul outil comme l'exécution de code ou bash ? Et si vous aviez 50 outils, un pour chaque cas d'utilisation que votre agent pourrait rencontrer ?

Pour me mettre dans la tête du modèle, j'aime imaginer qu'on me donne un problème de maths difficile. De quels outils auriez-vous besoin pour le résoudre ? Cela dépendrait de vos propres compétences !

Le papier serait le minimum, mais vous seriez limité par les calculs manuels. Une calculatrice serait mieux, mais vous devriez savoir utiliser les options avancées. L'option la plus rapide et la plus puissante serait un ordinateur, mais vous devriez savoir l'utiliser pour écrire et exécuter du code.

C'est un cadre utile pour concevoir votre agent. Vous voulez lui donner des outils adaptés à ses propres capacités. Mais comment connaître ces capacités ? Vous prêtez attention, lisez ses sorties, expérimentez. Vous apprenez à voir comme un agent.

Voici quelques leçons que nous avons tirées en prêtant attention à Claude lors de la construction de Claude Code.

Améliorer l'élicitation et l'outil AskUserQuestion

Thariq - inline image

Lors de la construction de l'outil AskUserQuestion, notre objectif était d'améliorer la capacité de Claude à poser des questions (souvent appelée élicitation).

Bien que Claude puisse simplement poser des questions en texte brut, nous avons constaté que répondre à ces questions prenait un temps inutile. Comment réduire cette friction et augmenter la bande passante de communication entre l'utilisateur et Claude ?

Tentative n°1 - Modifier l'outil ExitPlanTool

La première chose que nous avons essayée a été d'ajouter un paramètre à ExitPlanTool pour avoir un tableau de questions en plus du plan. C'était la chose la plus simple à implémenter, mais cela a perturbé Claude car nous demandions simultanément un plan et un ensemble de questions sur le plan. Que faire si les réponses de l'utilisateur entraient en conflit avec le plan ? Claude devrait-il appeler ExitPlanTool deux fois ? Nous avions besoin d'une autre approche.

(vous pouvez en savoir plus sur les raisons de la création d'ExitPlanTool dans notre article sur le prompt caching

Tentative n°2 - Modifier le format de sortie

Ensuite, nous avons essayé de modifier les instructions de sortie de Claude pour qu'il utilise un format markdown légèrement modifié afin de poser des questions. Par exemple, nous pouvions lui demander de produire une liste de questions en points avec des alternatives entre parenthèses. Nous pouvions ensuite analyser et formater cette question sous forme d'interface utilisateur.

Bien que ce soit le changement le plus général que nous puissions faire et que Claude semblait même capable de le produire, ce n'était pas garanti. Claude ajoutait des phrases supplémentaires, omettait des options ou utilisait un format complètement différent.

Tentative n°3 - L'outil AskUserQuestion

Thariq - inline image

Finalement, nous avons opté pour la création d'un outil que Claude pouvait appeler à tout moment, mais il était particulièrement incité à le faire en mode planification. Lorsque l'outil était déclenché, nous affichions une fenêtre modale pour afficher les questions et bloquions la boucle de l'agent jusqu'à ce que l'utilisateur réponde.

Cet outil nous a permis d'inciter Claude à produire une sortie structurée et nous a aidés à garantir que Claude offrait plusieurs options à l'utilisateur. Il a également donné aux utilisateurs des moyens de composer cette fonctionnalité, par exemple en l'appelant dans l'Agent SDK ou en y faisant référence dans les skills.

Plus important encore, Claude semblait apprécier d'appeler cet outil et nous avons constaté que ses sorties fonctionnaient bien. Même l'outil le mieux conçu ne fonctionne pas si Claude ne comprend pas comment l'appeler.

Est-ce la forme finale de l'élicitation dans Claude Code ? Nous n'en sommes pas sûrs. Comme vous le verrez dans l'exemple suivant, ce qui fonctionne pour un modèle peut ne pas être le meilleur pour un autre.

Mise à jour avec les capacités - Tâches et Todos

Thariq - inline image

Lorsque nous avons lancé Claude Code pour la première fois, nous avons réalisé que le modèle avait besoin d'une liste de tâches (Todo list) pour rester sur la bonne voie. Les Todos pouvaient être écrits au début et cochés au fur et à mesure que le modèle travaillait. Pour ce faire, nous avons donné à Claude l'outil TodoWrite, qui écrit ou met à jour les Todos et les affiche à l'utilisateur.

Mais même alors, nous voyions souvent Claude oublier ce qu'il devait faire. Pour nous adapter, nous avons inséré des rappels système toutes les 5 itérations pour rappeler à Claude son objectif.

Mais à mesure que les modèles s'amélioraient, non seulement ils n'avaient plus besoin qu'on leur rappelle la liste de tâches, mais ils pouvaient la trouver limitante. Recevoir des rappels de la liste de tâches faisait penser à Claude qu'il devait s'y tenir plutôt que de la modifier. Nous avons également constaté qu'Opus 4.5 devenait bien meilleur pour utiliser des sous-agents, mais comment les sous-agents pouvaient-ils se coordonner sur une liste de tâches partagée ?

Voyant cela, nous avons remplacé TodoWrite par l'outil Task (en savoir plus sur les Tasks ici). Alors que les Todos visaient à maintenir le modèle sur la bonne voie, les Tasks étaient davantage destinées à aider les agents à communiquer entre eux. Les Tasks pouvaient inclure des dépendances, partager des mises à jour entre sous-agents et le modèle pouvait les modifier et les supprimer.

À mesure que les capacités des modèles augmentent, les outils dont vos modèles avaient besoin auparavant peuvent désormais les contraindre. Il est important de revoir constamment les hypothèses précédentes sur les outils nécessaires. C'est aussi pourquoi il est utile de s'en tenir à un petit ensemble de modèles à supporter qui ont un profil de capacités assez similaire.

Concevoir une interface de recherche

Un ensemble d'outils particulièrement important pour Claude sont les outils de recherche qui peuvent être utilisés pour construire son propre contexte.

Lorsque Claude Code est sorti pour la première fois, nous utilisions une base de données vectorielle RAG pour trouver du contexte pour Claude. Bien que RAG soit puissant et rapide, il nécessitait une indexation et une configuration et pouvait être fragile dans différents environnements. Plus important encore, Claude recevait ce contexte au lieu de le trouver lui-même.

Mais si Claude pouvait chercher sur le web, pourquoi ne pas chercher dans votre base de code ? En donnant à Claude un outil Grep, nous pouvions le laisser chercher des fichiers et construire lui-même son contexte.

C'est un modèle que nous avons observé : à mesure que Claude devient plus intelligent, il devient de plus en plus capable de construire son contexte si on lui donne les bons outils.

Lorsque nous avons introduit les Agent Skills, nous avons formalisé l'idée de divulgation progressive, qui permet aux agents de découvrir progressivement le contexte pertinent par l'exploration.

Claude pouvait lire les fichiers de skills et ces fichiers pouvaient ensuite référencer d'autres fichiers que le modèle pouvait lire récursivement. En fait, une utilisation courante des skills est d'ajouter plus de capacités de recherche à Claude, comme lui donner des instructions sur la façon d'utiliser une API ou d'interroger une base de données.

Au cours d'une année, Claude est passé de l'incapacité à construire son propre contexte à la capacité d'effectuer des recherches imbriquées à travers plusieurs couches de fichiers pour trouver le contexte exact dont il avait besoin.

La divulgation progressive est désormais une technique courante que nous utilisons pour ajouter de nouvelles fonctionnalités sans ajouter d'outil.

Divulgation progressive - L'agent Guide Claude Code

Claude Code dispose actuellement d'environ 20 outils, et nous nous demandons constamment si nous avons besoin de tous. Le seuil pour ajouter un nouvel outil est élevé, car cela donne au modèle une option supplémentaire à considérer.

Par exemple, nous avons remarqué que Claude ne savait pas assez bien utiliser Claude Code. Si vous lui demandiez comment ajouter un MCP ou ce que faisait une commande slash, il ne pouvait pas répondre.

Nous aurions pu mettre toutes ces informations dans le prompt système, mais étant donné que les utilisateurs demandaient rarement cela, cela aurait ajouté de la dégradation du contexte et interféré avec la tâche principale de Claude Code : écrire du code.

Au lieu de cela, nous avons essayé une forme de divulgation progressive. Nous avons donné à Claude un lien vers sa documentation qu'il pouvait ensuite charger pour rechercher plus d'informations. Cela a fonctionné, mais nous avons constaté que Claude chargeait beaucoup de résultats dans le contexte pour trouver la bonne réponse alors que tout ce dont vous aviez besoin était la réponse.

Nous avons donc construit le sous-agent Claude Code Guide que Claude est incité à appeler lorsque vous posez des questions sur lui-même ; le sous-agent contient des instructions détaillées sur la façon de bien rechercher dans la documentation et sur ce qu'il doit retourner.

Bien que cela ne soit pas parfait (Claude peut encore être confus lorsqu'on lui demande comment se configurer), c'est bien mieux qu'avant ! Nous avons pu ajouter des éléments à l'espace d'action de Claude sans ajouter d'outil.

Un art, pas une science

Si vous espériez un ensemble de règles rigides sur la façon de construire vos outils, ce guide n'est malheureusement pas cela. Concevoir les outils pour vos modèles est autant un art qu'une science. Cela dépend fortement du modèle que vous utilisez, de l'objectif de l'agent et de l'environnement dans lequel il opère.

Expérimentez souvent, lisez vos sorties, essayez de nouvelles choses. Voyez comme un agent.

Save to YouMind

Use YouMind to read viral articles deeply

Save the source, ask focused questions, summarize the argument, and turn a viral article into reusable notes in one AI workspace.

Explore YouMind

D'autres patterns à décoder

Articles viraux récents

Explorer plus d'articles viraux