Concevoir des boucles agentiques
(simonwillison.net)- Des agents de codage comme Claude Code d’Anthropic et Codex CLI d’OpenAI améliorent fondamentalement l’utilité des LLM pour générer du code fonctionnel, car ils peuvent exécuter directement le code, corriger les erreurs, explorer des implémentations existantes et trouver des solutions efficaces par expérimentation
- La technique clé pour exploiter pleinement le potentiel de ces outils est la conception de boucles agentiques ; en ramenant un problème à un objectif clair et à un ensemble d’outils pour l’agent de codage, on peut le considérer comme un outil capable de trouver une solution efficace par force brute
- La définition d’un agent LLM est d’exécuter des outils dans une boucle afin d’atteindre un objectif ; bien l’utiliser consiste donc à concevoir avec soin les outils et la boucle à la disposition de l’agent
- Le mode YOLO (où toutes les commandes sont approuvées par défaut) est risqué, mais essentiel pour obtenir les résultats les plus productifs par force brute ; pour l’exécuter en sécurité, on peut choisir un sandbox Docker, un autre environnement informatique comme GitHub Codespaces, ou simplement accepter le risque
- Choisir les bons outils (commandes shell et paquets), délivrer des identifiants au périmètre strictement limité (environnement de test, plafond budgétaire) et l’appliquer à des problèmes avec critères de réussite clairs et besoin de tâtonnement (débogage, optimisation des performances, mise à niveau de dépendances, optimisation de conteneurs) sont les principes clés de la conception de boucles agentiques
Le plaisir du mode YOLO
-
Les risques des agents
- Les agents sont intrinsèquement risqués
- Ils peuvent prendre de mauvaises décisions ou être victimes d’attaques malveillantes de prompt injection
- Les appels d’outils peuvent produire des conséquences néfastes
- L’outil le plus puissant des agents de codage est « exécuter cette commande dans le shell », donc un agent malveillant peut faire tout ce qu’un utilisateur pourrait faire en lançant lui-même des commandes
- Citation de Solomon Hykes :
Les agents IA sont des LLM qui détruisent l’environnement dans une boucle
- Les agents sont intrinsèquement risqués
-
Les limites du mode d’approbation par défaut
- Des agents de codage comme Claude Code répondent à cela en demandant par défaut une approbation pour presque chaque commande qu’ils exécutent
- C’est un peu fastidieux, mais surtout cela réduit drastiquement l’efficacité de la résolution de problèmes par force brute
-
Mode YOLO
- Chaque outil propose sa propre version du mode YOLO, où tout est approuvé par défaut
- C’est très dangereux, mais aussi essentiel pour obtenir les résultats les plus productifs
-
Les trois grands risques du mode YOLO sans supervision
- 1. Mauvaises commandes shell : suppression ou altération de choses importantes
- 2. Attaques d’exfiltration : vol de fichiers ou de données visibles par l’agent (code source ou secrets stockés dans des variables d’environnement)
- 3. Attaques par proxy : utilisation de la machine comme proxy pour masquer l’origine d’un DDoS ou d’autres attaques contre d’autres cibles
Options pour exécuter le mode YOLO
-
Option 1 : sandbox sécurisé
- Exécuter l’agent dans un sandbox sécurisé qui limite les fichiers et secrets accessibles, ainsi que les connexions réseau qu’il peut établir
- Une sortie de conteneur reste possible, mais utiliser Docker ou les nouveaux outils de conteneurisation d’Apple représente un risque acceptable pour la plupart des gens
- Documentation du Safe YOLO mode d’Anthropic :
- utiliser
--dangerously-skip-permissionsdans un conteneur sans accès à Internet - une implémentation de référence avec Docker Dev Containers est fournie
- limiter l’accès Internet à une liste d’hôtes de confiance est un bon moyen d’empêcher le vol de code source privé
- utiliser
-
Option 2 : utiliser l’ordinateur de quelqu’un d’autre (préféré)
- Même si l’agent devient malveillant, les dégâts restent limités
- Recommandation d’utiliser GitHub Codespaces :
- fournit des environnements complets en conteneur à la demande, accessibles via le navigateur
- propose une offre gratuite généreuse
- en cas de problème, au pire une machine Microsoft Azure quelque part consomme du CPU, et le pire scénario est que le code extrait dans l’environnement soit exfiltré par un attaquant ou qu’un mauvais code soit poussé vers le dépôt GitHub connecté
- Autres outils de type agent qui exécutent du code sur l’ordinateur de quelqu’un d’autre :
- le mode Code Interpreter de ChatGPT et Claude
- Codex Cloud d’OpenAI
-
Option 3 : accepter le risque
- Essayer d’éviter d’être exposé à des sources potentielles d’instructions malveillantes et espérer repérer les erreurs avant qu’elles ne causent des dommages
- L’option choisie par la plupart des gens
Choisir les bons outils pour la boucle
-
Après avoir sécurisé le mode YOLO
- L’étape suivante consiste à décider quels outils doivent être mis à disposition de l’agent de codage
-
Priorité aux commandes shell
- À ce stade, on peut intégrer MCP (Model Context Protocol), mais il est généralement plus productif de raisonner en termes de commandes shell
- Les agents de codage sont vraiment très doués pour exécuter des commandes shell
- Si l’environnement autorise l’accès réseau nécessaire, ils peuvent aussi récupérer des paquets supplémentaires depuis NPM, PyPI, etc.
- Il est également important de veiller à ce que l’agent s’exécute dans un environnement où l’installation de paquets aléatoires ne cassera pas les choses sur votre machine principale
-
Utiliser le fichier AGENTS.md
- Plutôt que de dépendre de MCP, il est préférable de créer un fichier AGENTS.md (ou équivalent) contenant des détails sur les paquets à utiliser
- Exemple : pour un projet qui prend des captures d’écran de différents sites web, installation de l’outil CLI shot-scraper et ajout dans
AGENTS.mdde :Pour prendre une capture d’écran, exécutez : shot-scraper http://www.example.com/ -w 800 -o example.jpg - Ce seul exemple suffit à l’agent pour deviner comment remplacer l’URL et le nom de fichier pour d’autres captures d’écran
-
Exploiter les outils existants
- Les bons LLM savent déjà utiliser une gamme embarrassante d’outils existants
- Si on leur dit « utilise playwright python » ou « utilise ffmpeg », la plupart des modèles sauront s’en servir efficacement
- Comme ils opèrent dans une boucle, ils peuvent généralement se remettre de leurs erreurs initiales et trouver le bon enchaînement sans consignes supplémentaires
Délivrer des identifiants au périmètre strictement limité
-
Pourquoi des identifiants
- Au-delà des bonnes commandes à exposer, il faut aussi réfléchir aux identifiants à exposer à ces commandes
- Idéalement, aucun identifiant n’est nécessaire (beaucoup de tâches peuvent être réalisées sans connexion ni clé API), mais certains problèmes exigent un accès authentifié
-
Deux recommandations essentielles
- 1. Fournir des identifiants pour un environnement de test ou de staging
- un environnement où les dégâts peuvent être bien contenus
- 2. Fixer un plafond budgétaire
- si les identifiants permettent de dépenser de l’argent, définir une limite stricte
- 1. Fournir des identifiants pour un environnement de test ou de staging
-
Cas concret : enquête sur Fly.io
- Investigation de temps de démarrage à froid trop lents sur une application scale-to-zero exécutée sur Fly.io
- Laisser Claude Code éditer directement le Dockerfile, déployer sur le compte Fly et mesurer le temps de démarrage
-
Configuration sûre
- Sur Fly, il est possible de créer une organisation, de lui définir un plafond budgétaire et d’émettre une clé API Fly qui ne peut créer ou modifier des applications qu’au sein de cette organisation
- Création d’une organisation dédiée à cette seule enquête
- Définition d’un budget de 5 $
- Émission de la clé API puis laisser Claude Code travailler
- Dans ce cas précis, le résultat n’a pas été assez utile, mais c’est le projet qui a fait comprendre pour la première fois que la « conception de boucles agentiques » est une compétence importante à développer
Quand concevoir une boucle agentique
-
Les bons motifs de problème
- Tous les problèmes ne se prêtent pas bien à ce mode de travail
- Il faut repérer les problèmes qui ont des critères de réussite clairs et qui demanderont probablement un tâtonnement (potentiellement un peu pénible) pour trouver une bonne solution
- Chaque fois que vous vous dites « pff, je vais devoir essayer plein de variantes ici », c’est un signe fort qu’une boucle agentique vaut la peine d’être tentée
-
Exemples concrets
-
Débogage
- Des tests échouent et il faut en rechercher la cause racine
- Un agent de codage capable d’exécuter les tests peut déjà faire cela sans configuration supplémentaire
-
Optimisation des performances
- Une requête SQL est trop lente ; ajouter un index aiderait-il ?
- L’agent peut benchmarker la requête et (dans un environnement de développement isolé !) ajouter et supprimer des index pour mesurer l’impact
-
Mise à niveau de dépendances
- Plusieurs dépendances accusent du retard
- Si la suite de tests est solide, une boucle agentique peut toutes les mettre à niveau et effectuer les petites modifications nécessaires pour prendre en compte les breaking changes
- Veiller à fournir une copie des release notes pertinentes ou à ce que l’agent sache où les trouver lui-même
-
Optimisation de la taille d’un conteneur
- Un conteneur Docker est inconfortablement gros
- L’agent peut essayer différentes images de base et itérer sur le Dockerfile pour tenter de le réduire tout en gardant les tests au vert
-
-
Thème commun : les tests automatisés
- Le point commun à tout cela, ce sont les tests automatisés
- La valeur que l’on peut tirer des agents de codage et autres outils de code basés sur des LLM est énormément amplifiée par une bonne suite de tests qui passe proprement
- Heureusement, les LLM excellent aussi à accélérer la mise en place de cette suite lorsqu’elle n’existe pas encore
Un domaine encore très récent
- La conception de boucles agentiques est une compétence très récente
- Claude Code a été lancé pour la première fois en février 2025
- Lui donner un nom clair peut, espérons-le, aider à avoir des discussions productives à son sujet
- Il reste beaucoup à découvrir sur la manière d’utiliser ces outils le plus efficacement possible
Aucun commentaire pour le moment.