Réflexion

Loop engineering : ne plus prompter l’IA, concevoir sa boucle

Le prompt engineering consiste à bien demander une tùche. Le loop engineering consiste à construire le systÚme qui la poursuit, la vérifie et la corrige.

Quand je travaille avec Claude Code, le moment le plus coĂ»teux n’est pas toujours celui oĂč l’IA Ă©crit du code. C’est celui oĂč je dois lui expliquer, une fois de plus, ce qu’elle doit faire ensuite : relancer les tests, regarder l’erreur, corriger le fichier, vĂ©rifier que rien d’autre n’est cassĂ©.

Pendant longtemps, j’ai traitĂ© chaque Ă©tape comme un nouveau prompt. Puis j’ai commencĂ© Ă  regarder le problĂšme autrement : si je connais l’objectif, les outils disponibles et la façon de vĂ©rifier le rĂ©sultat, pourquoi est-ce que je dois encore rĂ©diger chaque instruction Ă  la main ?

Le problùme : l’IA attend toujours le prochain prompt

Le workflow classique ressemble Ă  ceci :

Moi → Claude → rĂ©sultat → moi → nouveau prompt → Claude...

Je demande de chercher les bugs. Claude trouve un problÚme. Je lui demande de le corriger. Il modifie le code. Je lui demande de relancer les tests. Un test échoue. Je lui demande de regarder pourquoi. Et ainsi de suite.

Ce fonctionnement marche, mais il fait de l’humain le moteur de chaque transition. L’IA sait produire une action ; elle ne sait pas nĂ©cessairement quelle action vient aprĂšs, ni Ă  quel moment elle peut considĂ©rer le travail comme terminĂ©.

Le problĂšme n’est donc pas seulement la qualitĂ© du prompt. C’est l’absence de processus entre deux prompts.

Prompt engineering vs loop engineering

Le prompt engineering cherche à formuler la meilleure demande possible. Le loop engineering cherche à définir le systÚme qui va générer les demandes suivantes selon les résultats obtenus.

Prompt engineering :
Toi → Claude → rĂ©sultat → toi → nouveau prompt

Loop engineering :
Toi → objectif + rùgles + validations
                 ↓
       Claude → action → test → correction
           ↑                       ↓
           └────── nouvel essai ───┘

La différence est importante. Dans le premier modÚle, tu pilotes Claude étape par étape. Dans le second, tu conçois une boucle qui sait quoi vérifier et comment réagir lorsque la vérification échoue.

La boucle minimale

Une boucle d’ingĂ©nierie n’a pas besoin d’ĂȘtre compliquĂ©e. Elle doit simplement rĂ©pondre Ă  cinq questions :

  1. Quel est l’objectif ? Une condition de rĂ©ussite observable.
  2. Quelles actions sont autorisées ? Les outils, les fichiers et les commandes disponibles.
  3. Comment vĂ©rifier le rĂ©sultat ? Tests, lint, build, navigateur, capture d’écran ou revue.
  4. Que faire en cas d’échec ? Lire l’erreur, choisir une cause, modifier le minimum, puis recommencer.
  5. Quand s’arrĂȘter ? SuccĂšs, limite d’itĂ©rations ou dĂ©cision humaine nĂ©cessaire.

Cela donne la boucle générale utilisée par les agents :

Rassembler le contexte
        ↓
Effectuer une action
        ↓
Vérifier le résultat
        ↓
Réessayer ou terminer

La partie la plus souvent oubliĂ©e est la vĂ©rification. Sans elle, on n’a pas une boucle : on a une suite d’actions gĂ©nĂ©rĂ©es par une IA qui espĂšre avoir raison.

Un exemple concret : fiabiliser une application vibe-codée

Supposons que je veuille terminer une application générée rapidement avec Lovable, Cursor ou Claude Code. Je pourrais écrire :

Cherche les bugs.
Corrige le formulaire.
Relance les tests.
Corrige le nouveau problĂšme.

C’est comprĂ©hensible, mais ce n’est pas encore un workflow autonome. Je prĂ©fĂšre dĂ©finir un contrat de boucle :

Objectif :
Tous les tests passent et aucune erreur ESLint ne subsiste.

À chaque cycle :
1. Lire les erreurs actuelles.
2. Sélectionner une seule cause racine.
3. Modifier le minimum de code nécessaire.
4. Exécuter les tests concernés.
5. VĂ©rifier qu’aucune rĂ©gression n’a Ă©tĂ© introduite.
6. Consigner le changement dans PROGRESS.md.
7. Recommencer si une validation échoue.

ArrĂȘt :
- les tests et le lint réussissent ;
- aprĂšs 15 cycles ;
- ou lorsqu’une dĂ©cision fonctionnelle humaine est nĂ©cessaire.

La consigne ne dit pas seulement quoi coder. Elle dĂ©crit le comportement attendu de l’agent pendant toute la durĂ©e du travail.

Ce que cela change pour le développeur

Le développeur ne disparaßt pas de la boucle. Son rÎle se déplace.

  • Il dĂ©finit l’objectif au lieu de dicter chaque geste.
  • Il choisit les critĂšres d’acceptation au lieu de se contenter d’un rĂ©sultat plausible.
  • Il fournit les outils qui permettent Ă  l’IA de vĂ©rifier son travail.
  • Il fixe les limites et les dĂ©cisions qui restent humaines.
  • Il conserve une mĂ©moire du travail pour la prochaine session.

On se rapproche d’un mĂ©lange entre CI/CD, tests automatisĂ©s, gestion de projet et supervision d’agent. Le bon livrable n’est plus seulement du code : c’est du code accompagnĂ© de preuves qu’il rĂ©pond Ă  la condition de rĂ©ussite.

La boucle ne remplace pas le jugement

Une boucle peut vĂ©rifier qu’un test passe. Elle ne peut pas dĂ©cider seule si le test mesure le bon comportement. Elle peut rĂ©duire le nombre d’erreurs ESLint. Elle ne sait pas si la fonctionnalitĂ© reste comprĂ©hensible pour un utilisateur.

Une boucle automatise la progression, pas la responsabilitĂ©. Le rĂ©sultat doit rester observable, bornĂ© et suffisamment important pour qu’un humain puisse le valider.

En une phrase

Le prompt engineering consiste Ă  bien demander une tĂąche. Le loop engineering consiste Ă  construire un systĂšme qui poursuit, vĂ©rifie et corrige cette tĂąche jusqu’à un rĂ©sultat dĂ©montrable.

Dans la documentation actuelle de Claude Code, ce principe apparaĂźt notamment avec /goal, qui maintient une session active jusqu’à ce qu’une condition de rĂ©ussite soit satisfaite. C’est une commande, mais surtout une nouvelle maniĂšre de penser le travail avec l’IA.