AI Engineering Loop
Remplace le cycle de correction manuel par une boucle autonome : les erreurs réelles d'une phase échouée sont parsées, structurées et injectées dans le re-prompt de l'agent pour une correction ciblée.
Problème — le retry aveugle
Avant v7.3.0, maxRetries: 2relançait la même phase avec le même contexte. Résultat : relancer le dé, pas corriger. L'humain devait lire l'erreur, la rephraser et re-prompter manuellement.
Fonctionnement
Capture de l'erreur
L'orchestrateur passe le fichier d'erreur brut (stderr de l'agent) au flag --error-output.
node run.js fail $RUN_ID coverage "tests KO" \
--error-output /tmp/coverage-stderr.txtParsing structuré
error-context.jsparse les 4 types d'erreurs supportés.
// TypeScript
src/auth/auth.service.ts(47,15): error TS2339:
Property 'userId' does not exist on type 'JwtPayload'.
// Node:test TAP
not ok 1 - should return 401 if token invalid
// Runtime
TypeError: Cannot read properties of undefined (reading 'id')
at AuthService.validateUser (src/auth/auth.service.ts:89:20)
// Lint (ESLint)
src/app.module.ts
12:1 error 'Injectable' is defined but never usedInjection dans le re-prompt
Le bloc formaté est préfixé au prompt de l'agent lors du loop-back.
[AI ENGINEERING LOOP — Iteration 2/3]
Previous attempt failed with 2 error(s).
Fix ONLY what is listed below.
[ERROR 1] typescript — src/auth/auth.service.ts:47
Property 'userId' does not exist on type 'JwtPayload'.
[ERROR 2] test — (no file)
should return 401 if token invalid
Do not rewrite unrelated code. Apply minimal targeted fixes only.Loop-back et garde
La phase cible (backend) est remise en pending avec le contexte injecté. Après maxLoops itérations sans succès, escalade humaine automatique.
# Après 3 échecs → escalade
[LOOP LIMIT REACHED] coverage → backend :
3 iterations max atteintes — intervention manuelle requiseConfiguration pipeline
// pipelines.json — phase coverage
{
"id": "coverage",
"agent": "tester",
"stopOnFailure": false,
"loopTo": "backend", // phase cible du loop-back
"maxLoops": 3, // guard — escalade humaine après N itérations
"loopCondition": "test_failures"
}Sortie next --json enrichie
node run.js next $RUN_ID --json
# {
# "ready": [{
# "phaseId": "backend",
# "agent": "nestjs",
# "model": "claude-opus-4-8",
# "isLoopRetry": true,
# "loopContext": "[AI ENGINEERING LOOP — Iteration 2/3]..."
# }]
# }Erreurs non-déterministes
Les erreurs réseau et mémoire (ECONNREFUSED, ETIMEDOUT, OOM) sont détectées automatiquement. Elles ne déclenchent pas de loop — le pipeline échoue immédiatement pour escalade humaine. Un re-prompt ne peut pas corriger une base de données inaccessible.
SWE-bench (Princeton, 2024) et Reflexion (Shinn et al., 2023) montrent +30–40% de taux de résolution avec une boucle observe → reason → act vs single-pass. L'implémentation ADA cible le même gain sur les phases backend/coverage du pipeline feature.