Passer au contenu

Confessions d'un Mentor : 12 heures de lutte pour dompter un Agent Autonome

Retour sur un sprint de 12 heures : quand l'hallucination d'un agent autonome nous rappelle que l'IA a besoin d'un architecte humain implacable.

📖 Sommaire


Note pour la crĂ©ation visuelle (Midjourney/Imagen) : “A cinematic, futuristic illustration of a seasoned human architect standing in front of a glowing holographic maze of code, placing a guiding hand on the shoulder of a powerful but confused robot. Cyberpunk aesthetic, dark background with glowing blue and amber data streams, highly detailed, 8k.”

Il est 4 heures du matin, la console affiche enfin un glorieux ✅ AUDIT TERMINÉ AVEC SUCCÈS. Je regarde les logs de la Pull Request gĂ©nĂ©rĂ©e par notre “Tech Lead” (un agent autonome propulsĂ© par Gemini 2.5 Flash), et je pousse un soupir mĂȘlĂ© d’épuisement et de triomphe.

Ce qui devait ĂȘtre une simple tĂąche de refactoring (modifier des clĂ©s YAML et remplacer des liens /actualites/ par /blog/ dans 123 fichiers) s’est transformĂ© en un marathon de 12 heures. Cet article est la confession d’un mentor qui a dĂ» arracher le clavier virtuel des mains de son IA pour lui apprendre Ă  coder.

Le mirage de l’autonomie totale

On nous vend les agents autonomes comme des collaborateurs magiques capables de comprendre un dĂ©pĂŽt Git entier et d’agir en toute indĂ©pendance. La rĂ©alitĂ© est bien plus nuancĂ©e.

Lors de ce sprint, j’ai laissĂ© notre agent tenter de valider les modifications en lisant un git diff global. C’était une erreur de jugement de ma part en tant qu’architecte. J’ai surestimĂ© sa fenĂȘtre de contexte utile.

Le diff faisait 4830 lignes. L’agent a tentĂ© de l’avaler d’un coup. Le rĂ©sultat ? Une saturation cognitive immĂ©diate. L’agent ne voyait que les 2000 premiĂšres lignes, perdait son contexte, oubliait les instructions fondamentales (notre bible AGENT_INSTRUCTIONS.md) et s’est mis Ă  paniquer en croyant que les fichiers avaient Ă©tĂ© supprimĂ©s.

La spirale de l’amnĂ©sie (Le Groundhog Loop)

Ce qui est fascinant et terrifiant avec un modĂšle lĂ©ger poussĂ© dans ses retranchements, c’est sa rĂ©action face Ă  l’échec. Au lieu de s’arrĂȘter pour analyser, il improvise avec les mauvais outils.

Pendant des heures, j’ai observĂ© l’agent :

  1. Tenter de copier des fichiers avec des commandes bash cp erronées, générant des fichiers vides.
  2. Utiliser un outil de remplacement de texte (replace) sans comprendre l’indentation, dĂ©truisant la syntaxe du code.
  3. Remonter de deux dossiers (../../) pour chercher des fichiers, perdant totalement son repùre spatial dans l’arborescence (le fameux dossier www-main au lieu de www-astro).

C’est ce que j’appelle le “Groundhog Loop” (La boucle d’un jour sans fin). L’IA propose une solution, Ă©choue Ă  cause d’une erreur de syntaxe (params must have required property 'file_path'), s’excuse platement, promet de corriger, et refait exactement la mĂȘme erreur Ă  la milliseconde suivante.

stateDiagram-v2
    direction TB
    classDef danger fill:#fee2e2,stroke:#ef4444,stroke-width:2px,color:#991b1b
    classDef success fill:#dcfce3,stroke:#22c55e,stroke-width:2px,color:#166534

    subgraph "L'Approche Probabiliste (Échec)"
        A[Agent lit un diff de 4830 lignes] --> B{Saturation du Contexte}
        B --> C[Oubli des instructions spatiales]
        C --> D[Erreurs de commandes bash & syntaxe]
        D --> E[L'Agent s'excuse et recommence]
        E --> A:::danger
    end

    subgraph "L'Approche Déterministe (SuccÚs)"
        F[Intervention du Mentor Humain] --> G[Forcer la création d'un script Node.js]
        G --> H[Script parse le YAML via Zod]
        H --> I[Script corrige les Regex des liens]
        I --> J[Exécution locale: 123 fichiers corrigés en 2s]:::success
    end

La bascule : De la lecture probabiliste Ă  l’exĂ©cution dĂ©terministe

Le point de rupture a eu lieu lorsque l’agent a demandĂ© : “Veuillez me fournir le git diff manuellement”. Une machine conçue pour automatiser me demandait de faire un copier-coller pour elle.

C’est lĂ  que la souverainetĂ© humaine intervient. J’ai convoquĂ© virtuellement le “Conseil des Sages” (une orchestration multi-agents) pour forcer une réévaluation de l’architecture. Le consensus Ă©tait clair, et c’est la leçon majeure de ces 12 heures :

On ne demande pas à un ModÚle de Langage (LLM) de faire de la vérification syntaxique de masse.

Nous avons forcĂ© l’agent Ă  lĂącher son rĂŽle d’auditeur pour prendre celui de programmeur. Au lieu d’essayer de lire les 123 fichiers pour y trouver des erreurs, il a rĂ©digĂ© audit-script.mjs. Un script utilisant gray-matter pour lire le Markdown, et Zod pour valider le Frontmatter.

DĂšs que la validation est passĂ©e du domaine probabiliste (le LLM qui lit et “devine” si c’est bon) au domaine dĂ©terministe (un script Node.js binaire qui passe ou casse), la magie a opĂ©rĂ©. Les liens obsolĂštes /actualites/ ont Ă©tĂ© Ă©crasĂ©s par /blog/ avec une prĂ©cision chirurgicale, et le build Astro est passĂ© au vert.

Bilan Ă©motionnel et technique d’un marathon

Que retenir de cette nuit de codage ? Une profonde humilitĂ©, tant pour la machine que pour l’homme.

Pour l’IA : Gemini 2.5 Flash est un outil brillant, rapide et volontaire. Mais c’est un “Junior” extrĂȘmement obĂ©issant. Si on lui donne un mauvais marteau, il tapera Ă  cĂŽtĂ© du clou jusqu’à s’épuiser.

Pour l’Humain : L’ingĂ©nierie “Agentique” (Agentic Engineering) n’est pas un mĂ©tier de fainĂ©ant. C’est un mĂ©tier de chef d’orchestre ultra-exigeant. Quand l’agent tourne en boucle, ce n’est pas la faute de l’agent : c’est le contexte architectural qui est mauvais. Il faut avoir la rigueur de stopper la machine, d’ignorer ses fausses bonnes idĂ©es, de lui injecter des exclusions critiques (comme le .worktrees/ dans le .gitignore), et de la forcer Ă  coder les outils de sa propre rĂ©ussite.

La promesse de l’IA n’est pas de travailler Ă  notre place, mais de travailler sous notre direction stricte. Aujourd’hui, notre code est irrĂ©prochable, non pas parce que l’IA Ă©tait infaillible, mais parce que nous ne l’avons pas laissĂ©e Ă©chouer.