- Alors que les modèles d’IA pour le code sont incapables d’exécuter de façon fiable ne serait-ce qu’une instruction unique, des attentes excessives se forment autour du codage agentique opérant de manière autonome en arrière-plan
- L’auteur a constaté que, bien qu’il ait fourni comme code de référence une fonction Golang d’environ 100 lignes, GPT-5 comme Gemini Pro omettaient une partie de la logique ou oubliaient certaines mises à jour
- Qu’un système agentique puisse traiter de manière autonome 50 fichiers et de nombreuses fonctions est irréaliste au vu du niveau technologique actuel, avec au contraire le risque d’y passer encore plus de temps en débogage
- Les réponses de la communauté se divisent entre, d’un côté, l’idée qu’un usage limité peut réussir grâce à un prompting structuré, une documentation rigoureuse et une vérification étape par étape, et de l’autre, un point de vue sceptique selon lequel l’agentique n’est pas encore praticable
- Les LLM actuels étant des systèmes fondés sur la connaissance plutôt que sur l’intelligence, l’approche réaliste consiste en un usage comme outil où le développeur fournit lui-même le contexte et valide chaque étape
Mise en question par l’auteur du texte original
- Exemple d’échec sur une consigne simple : il a fourni une fonction Golang de 100 lignes comme référence et demandé de mettre à jour une autre fonction avec la même structure, mais GPT-5 comme Gemini Pro ont omis une partie de la logique ou oublié certaines modifications
- Irréalisme du codage agentique : si même une seule fonction n’est pas correctement traitée, une approche agentique modifiant de façon autonome de nombreuses fonctions sur 50 fichiers risque de provoquer encore plus de problèmes
- Question sur la mise à jour d’un fichier de 6000 lignes : il demande l’avis de la communauté sur la manière de modifier en toute sécurité un fichier d’environ 6000 lignes, comme lors d’une mise à jour de version Stripe
Cas d’usage positifs et méthodologies
Approche par documentation structurée et indexation
- Utilisation de fichiers de référence Markdown : stocker les références dans un fichier
.md et demander à l’IA de le lire améliore la cohérence et la précision
- Exemple de prompt : « En te référant au fichier joint
goLang_Update_reference.md, résume les points essentiels de la fonction update, puis rédige un brouillon de mise à jour logicielle à partir de cette base »
- Construction d’un index local : pour les gros fichiers (6000 lignes ou plus), effectuer un scan par blocs de 1000 lignes afin de créer un index incluant les noms de fonctions et leurs références de lignes
- Pour le travail frontend, utiliser un index séparé ciblant uniquement certaines zones, comme
fr.index.md
Gestion des agents et structuration du travail
- Spécialisation des agents : constituer des agents par rôle, comme conception (architect), exploration de code (codeseeker) et développement (coder), et fournir à chacun un fichier de règles
.md adapté
- Approche par tranches verticales : découper le travail en petites unités fonctionnelles pouvant être réalisées sous la barre des 100 k tokens
- Au-delà de 100 k tokens, le risque de dysfonctionnement de l’agent augmente fortement
- Documentation obligatoire du travail : imposer la mise à jour de
docs/TASKS.md, docs/WORKLOG.md et docs/DECISIONS.md pour garantir la continuité du travail
Utilisation de Plan Mode et Ask Mode
- Plan Mode : passer en revue l’ensemble du projet, établir un plan selon la demande, puis avancer étape par étape
- Ask Mode : utile pour interroger la codebase, explorer des idées, examiner des options, et peut servir d’alternative à Google/StackOverflow
Approche avec tests unitaires d’abord
- Développement piloté par les tests : écrire d’abord les tests unitaires avant la fonction, puis faire générer de manière itérative par l’IA un code qui les passe
- La probabilité d’obtenir un code correct sur le plan fonctionnel augmente fortement, et il ne reste ensuite qu’à optimiser et nettoyer
Opinions sceptiques et reconnaissance des limites
Limites réelles de l’agentique
- Travailler sans supervision relève du suicide : au niveau technologique actuel, attribuer un ticket et laisser travailler le système de manière autonome en arrière-plan présente une forte probabilité d’échec
- Possibilité de mensonge : le modèle est plus susceptible de produire des hallucinations que de réussir, et dans le pire des cas peut détruire le code existant
- Redondance du Planning Mode : demander un plan détaillé au modèle de base suffit souvent ; le Planning Mode n’apporte pas réellement de fonctionnalité nouvelle
Contraintes intrinsèques des LLM
- Prédiction plutôt que raisonnement : le modèle fonctionne en prédisant le mot suivant sans vérifier le résultat ; tant que le grounding, la mémoire et le feedback ne seront pas améliorés, la fiabilité restera instable
- Une base de connaissances sans intelligence : les LLM sont des bases de connaissances sophistiquées dépourvues d’intelligence, et le développeur doit lui-même apporter l’intelligence (BYOI: Bring Your Own Intelligence) et le contexte
- Manque de mémoire : le modèle ne dispose pas d’une véritable mémoire et dépend uniquement du contexte et du cache de contexte ; à chaque nouveau chat, le contexte est réinitialisé
Biais liés au langage et aux données
- Désavantage relatif de Golang : Golang dispose de moins de code public que Python ou JavaScript, si bien que le modèle a moins de motifs et de conventions appris
- C’est un facteur structurel qui rend plus difficile l’obtention de modifications ou de transformations cohérentes
Guide pratique pour un usage réussi
Prompting et apport de contexte
- Instructions claires et détaillées : utiliser une grammaire et une ponctuation précises, et donner des consignes explicites plutôt que des formulations ambiguës
- Référencer explicitement tous les fichiers pertinents : si tous les fichiers que l’agent doit utiliser ne sont pas indiqués, la probabilité de générer du spaghetti code augmente
- Configurer des fichiers de règles : définir des règles globales pour l’espace de travail ainsi que des fichiers de règles par projet afin d’orienter une génération de code cohérente
- Utiliser @Docs : exploiter la fonction de référence documentaire pour fournir à l’agent les connaissances clés dont il a besoin (fonctionnement instable dans certaines versions)
Périmètre de travail et validation
- Découper en petites unités : fractionner le travail en la plus petite unité possible, valider chaque étape, puis passer à la suivante
- Revue en temps réel : relire tout le code généré au fur et à mesure et demander immédiatement des corrections pour éviter le spaghetti code
- Sauvegardes et gestion de versions : créer des sauvegardes à chaque étape et utiliser un système de gestion de versions comme GitHub
- Exécuter les tests : lancer de manière incrémentale les tests impactés avec
pytest --testmon -q, puis exécuter l’ensemble des tests avant finalisation
Modularisation et structure du code
- Découper un fichier de 6000 lignes : un fichier unique de 6000 lignes est peu modulaire et défavorable à l’apport de contexte ; il est plus efficace de le diviser en 12 fichiers d’environ 500 lignes
- Préférer les tranches verticales : développer par petites unités fonctionnelles exécutables de bout en bout
Choix du modèle et gestion des coûts
- Donner la priorité à Claude Sonnet 4.5 : par rapport à GPT ou Gemini, il offre une meilleure cohérence et une meilleure précision, ce qui peut justifier le coût supplémentaire
- Attention à la consommation de tokens : les plans à grande échelle consomment beaucoup de tokens ; en pratique, il est plus rentable de procéder par petites étapes
Cas d’usage particuliers
Génération de scripts ponctuels
- Scripts d’analyse : lorsqu’il faut écrire chaque jour des centaines de scripts ponctuels d’analyse de données, même une précision de 50 % permet de les générer et de les exécuter 1000 fois plus vite qu’une rédaction manuelle
- Possibilité de vérifier les résultats : comme les résultats peuvent être vérifiés directement, une précision imparfaite reste exploitable
Construction d’une application from scratch
- Architecture multi-agents : lors de la création d’une grande application from scratch, un agent superviseur examine le travail des autres agents pour maintenir la cohérence
- Efficace pour la cohérence des noms d’import, des noms de variables et pour éviter les duplications de code
- Efficacité par rapport au coût : des modifications complexes et du refactoring restent néanmoins nécessaires, si bien qu’une approche progressive demeure moins coûteuse à long terme
Résumé des avis de la communauté
Expériences positives (gain de productivité de 3 à 5x)
- Site web Next.js : construction en quelques minutes, à partir de zéro, d’un site web entièrement fonctionnel et déployable
- Implémentation de fonctionnalités complexes : ajout en 3 à 4 minutes d’une fonction de threads dans une application de chat (contre 3 jours estimés)
- En cas d’approche structurée : en combinant règles claires, contexte suffisant et validation étape par étape, il est possible d’obtenir des succès cohérents
Expériences négatives (actuellement peu pratiques)
- Production massive de spaghetti code : avec des objectifs trop larges, on observe des problèmes comme l’oubli de mise à jour de la documentation ou la non-suppression de fichiers résiduels
- Erreurs sémantiques : le code fonctionne techniquement, mais se retrouve au mauvais endroit ou réimplémente des fonctions existantes, ce qui crée des problèmes structurels
- Échec des longues exécutions de suivi : les suivis durant plus de 5 minutes produisent le plus souvent des résultats inutiles
1 commentaires
Avis Hacker News