Boucle de debug infinie : laisser Cursor CLI corriger jusqu'à ce que les tests passent
Écrivez un script shell qui fait que cursor agent corrige le code automatiquement, lance les tests, et s'ils échouent laisse l'IA corriger à nouveau — en répétant jusqu'à ce que tous les tests passent. Pas besoin de rester à appuyer sur O/N. Confiez la boucle à l'IA et allez faire autre chose — revenez quand le terminal affiche « tests passed ».
Concept central
while tests don't pass:
run tests → collect error output
feed error output to cursor agent
cursor agent fixes the code
run tests again
C'est une boucle « lancer les tests → échec → demander à l'IA de corriger → répéter » jusqu'au vert. Simple et direct, mais efficace.
Étape 1 : Vérifier les prérequis
cursorest installé et connecté (cursor --versionpour vérifier)- Le projet a une commande de test qui s'exécute dans le terminal, par exemple :
npm testpytestgo test ./...cargo test
- Les tests renvoient un code de sortie non nul en cas d'échec (c'est le cas par défaut pour presque tous les frameworks)
Étape 2 : Le script le plus simple
Créez debug-loop.sh :
#!/bin/bash
MAX_LOOPS=10 # max iterations to prevent truly infinite loops
TEST_CMD="npm test" # replace with your test command
loop=0
while [ $loop -lt $MAX_LOOPS ]; do
echo ""
echo "=== Loop $((loop + 1)) ==="
# run tests and capture stdout + stderr
TEST_OUTPUT=$(eval "$TEST_CMD" 2>&1)
EXIT_CODE=$?
if [ $EXIT_CODE -eq 0 ]; then
echo "✅ Tests passed! Completed in $((loop + 1)) loop(s)."
exit 0
fi
echo "❌ Tests failed, letting the AI fix..."
echo "$TEST_OUTPUT" | tail -30 # print the last 30 lines for your reference
# feed the error output to cursor agent
cursor agent "Tests failed with the following errors. Please fix the code to make the tests pass:
$TEST_OUTPUT" --model gpt-codex-5.3-high --no-interactive
loop=$((loop + 1))
done
echo "⚠️ Reached max loops ($MAX_LOOPS). Stopping. Please investigate manually."
exit 1Étape 3 : Lancer le script
chmod +x debug-loop.sh
./debug-loop.shVous pouvez aller prendre un café, répondre aux messages et revenir quand vous voyez ✅ Tests passed! dans le terminal. Si la limite MAX_LOOPS est atteinte sans succès, c'est le moment d'intervenir manuellement.
Étape 4 : Adapter à votre projet
Changez la commande de test (ligne 4) :
TEST_CMD="pytest -x" # Python, -x stops on first failure
TEST_CMD="go test ./..." # Go
TEST_CMD="cargo test" # Rust
TEST_CMD="./vendor/bin/phpunit" # PHPAjustez le nombre max de boucles :
MAX_LOOPS=5 # conservative, stop early if not improving
MAX_LOOPS=20 # more complex problems get more chancesDonnez plus de contexte à l'IA (dans la commande cursor agent) :
cursor agent "Tests failed. Errors below.
The test framework is Jest and the language is TypeScript.
Do not modify test files — only change files under src/.
Error output:
$TEST_OUTPUT" --model gpt-codex-5.3-high --no-interactiveVersion améliorée : garder des logs par boucle
#!/bin/bash
MAX_LOOPS=10
TEST_CMD="npm test"
LOG_DIR="debug-logs"
mkdir -p $LOG_DIR
loop=0
while [ $loop -lt $MAX_LOOPS ]; do
echo ""
echo "=== Loop $((loop + 1)) ==="
LOG_FILE="$LOG_DIR/loop-$((loop + 1)).log"
TEST_OUTPUT=$(eval "$TEST_CMD" 2>&1 | tee "$LOG_FILE")
EXIT_CODE=${PIPESTATUS[0]}
if [ $EXIT_CODE -eq 0 ]; then
echo "✅ Tests passed! Completed in $((loop + 1)) loop(s)."
exit 0
fi
echo "❌ Failed. Log saved to $LOG_FILE"
cursor agent "Tests failed with the following errors. Please fix the code to make the tests pass:
$TEST_OUTPUT" --model gpt-codex-5.3-high --no-interactive
loop=$((loop + 1))
done
echo "⚠️ Reached max loops. Stopping. Check the logs in $LOG_DIR/."
exit 1Utile pour revoir « ce qui a échoué à quelle itération » après coup.
Points de vigilance
| Risque | Comment limiter |
|---|---|
| L'IA casse plus de fichiers | Faites un git commit avant pour figer l'état, git checkout . pour revenir en arrière si besoin |
| Trop de boucles consomment le quota | Fixez un MAX_LOOPS raisonnable (5–15 recommandé) |
| L'IA modifie les fichiers de test | Dites explicitement dans le prompt « do not modify test files » |
| Échecs différents à chaque boucle | Gardez les logs (version améliorée) pour analyser après |
Résumé
- Structure du script : lancer les tests → échec → donner la sortie à l'IA → répéter jusqu'à succès ou limite
- Paramètres clés :
TEST_CMD(commande de test),MAX_LOOPS(nombre max d'itérations) - Soyez précis dans le prompt : indiquez le langage, restreignez les répertoires à modifier, ne pas toucher aux tests
- Faites un
git commitavant — facile de revenir en arrière si ça dérape, et l'esprit tranquille
En complément de Worktree : lancez une boucle de debug sur des branches différentes en parallèle. Voir 06-cursor-cli-with-worktree.