Comment créer un agent Claude Code qui corrige ses propres bugs en boucle (configuration détaillée incluse)

@zodchiii
ANGLAISil y a 4 semaines · 17 juin 2026
143K
141
18
14
332

TL;DR

Ce guide propose une configuration complète pour créer un agent Claude Code auto-correcteur utilisant des commandes et des hooks personnalisés. En mettant en place un protocole de classification des erreurs, l'agent peut diagnostiquer et réparer ses propres défaillances de code de manière autonome.

Claude écrit du code, un test échoue, et il te renvoie l'erreur à traiter.

Un agent auto-correcteur ne fait pas ça : il lit son propre échec, corrige la cause, et relance jusqu'à ce que tout soit vert.

Configure-le une fois et tu cesses d'être le débogueur bénévole de ton agent.

Voici la configuration complète dont tu as besoin 👇

Avant de plonger, je partage des notes quotidiennes sur l'IA et le vibe coding dans mon canal Telegram : https://t.me/zodchixquant 🧠

darkzodchi - inline image

Pourquoi un seul passage ne suffit pas

Par défaut, Claude exécute une tâche une seule fois. Un test échoue, il signale l'erreur et attend. Tu lis, tu colles l'erreur, tu lui dis de réessayer. C'est toi qui débogues, lui ne fait que taper.

Un agent auto-correcteur inverse ce processus. Il lit son propre échec, détermine le type de bogue, corrige cette cause, puis relance, comme le ferait un débogueur. Tu n'interviens que quand ça passe ou qu'il est vraiment bloqué.

Fichier 1 : la commande de correction

C'est la boucle que tu exécutes réellement. Place-la dans .claude/commands/fix.md :

yaml
1---
2description: Exécute une tâche et s'auto-corrige jusqu'à ce que tous les tests passent
3argument-hint: <tâche>
4allowed-tools: Read, Write, Edit, Glob, Grep, Bash
5model: sonnet
6---
7
8Tâche : $ARGUMENTS
9
10Boucle :
111. Implémente la tâche.
122. Exécute la suite de tests : `npm test` (ou pytest, cargo test).
133. Si tous les tests passent : arrête-toi et montre-moi le résultat.
144. Si un test échoue : classifie le type d'erreur, nomme la cause racine,
15 corrige cette cause, puis retourne à l'étape 2.
165. Limite à 5 tentatives. Annonce le numéro de chaque tentative à chaque tour.
17
18L'ordre classifie-puis-corrige est le cœur du principe. Diagnostic avant
19édition, à chaque tour. N'affaiblis jamais un test pour le faire passer, corrige le code.

Tu tapes /fix ajouter la pagination au point de terminaison utilisateurs et l'agent écrit, teste et se répare jusqu'à ce que la suite soit verte.

Fichier 2 : le hook de vérification automatique

La commande fonctionne à la demande. Le hook rend la vérification automatique à chaque édition.

Ajoute ceci dans .claude/settings.json :

json
1{
2 "hooks": {
3 "PostToolUse": [
4 {
5 "matcher": "Write|Edit",
6 "hooks": [
7 { "type": "command", "command": "npm test --silent 2>&1 | tail -5 || echo 'TESTS EN ÉCHEC, corrige avant de continuer'" }
8 ]
9 }
10 ]
11 }
12}

Maintenant, chaque fois que Claude modifie un fichier, les tests s'exécutent et le résultat revient directement dans son champ de vision.

Un échec apparaît immédiatement, donc l'agent le corrige dans le même flux au lieu de passer à autre chose et d'empiler d'autres modifications sur un code cassé.

Fichier 3 : apprendre à lire l'erreur

C'est le fichier qui distingue un vrai débogueur d'un devineur. La plupart des agents voient "test échoué" et commencent à éditer au hasard.

Un bon agent lit d'abord le type d'erreur, car chaque type pointe vers une cause différente. Place ceci dans CLAUDE.md :

markdown
1## Comment lire un échec avant de le corriger
2
3Nomme toujours d'abord le type d'erreur. Chacun signifie quelque chose de différent :
4
5- Échec d'assertion (attendu X, obtenu Y) : la logique est erronée.
6 Remonte de l'assertion jusqu'à l'endroit où la valeur a été construite.
7 Corrige le calcul, pas l'attente du test.
8
9- Erreur de type / undefined is not a function : une incompatibilité de forme.
10 Quelque chose est nul, ou le mauvais type a atteint cette ligne.
11 Trouve l'origine de cette valeur, protège-la ou corrige-la là-bas.
12
13- Timeout / blocage : un await manque, ou une promesse ne se résout jamais.
14 Cherche des appels asynchrones sans await, ou une condition qui ne change jamais.
15
16- Import / module introuvable : un problème de chemin ou de dépendance, pas de logique.
17 Corrige le chemin ou installe, ne touche pas au code qui l'utilise.
18
19- Instable (passe parfois) : état partagé ou problème de timing, jamais aléatoire.
20 Cherche des tests dépendants de l'ordre ou du temps/réseau non simulé.
21
22Règle : énonce le type et la cause racine en une phrase à voix haute
23avant d'éditer. Si tu ne peux pas nommer la cause, tu devines. Arrête-toi.

Une erreur de type et un échec d'assertion nécessitent des actions opposées : l'une est un problème de forme des données en amont, l'autre une logique erronée à cet endroit. Classe d'abord et l'agent corrige la bonne chose.

Saute cette étape et il édite au hasard jusqu'à ce que le rouge disparaisse, ce qui donne une suite verte mais discrètement cassée.

Ce que tu vois concrètement

Tu tapes une ligne :

text
1/fix le formateur de date renvoie des fuseaux horaires erronés

Ensuite, ça travaille tout seul :

text
1Tentative 1
2 tests exécutés → ÉCHEC
3 type : assertion (attendu 5, obtenu 11)
4 cause : taille de page non appliquée à la requête
5 clause LIMIT corrigée
6
7Tentative 2
8 tests exécutés → ÉCHEC
9 type : erreur de type (offset est indéfini)
10 cause : page 1 n'envoie pas d'offset, valeur par défaut erronée
11 offset = (page-1)*size ajouté
12
13Tentative 3
14 tests exécutés → TOUT VERT (7/7)
15
16Corrigé en 3 tentatives. Voir le diff ?

Tu n'as jamais eu à coller une erreur. Il a lu ses propres échecs, nommé chaque cause, et corrigé jusqu'à ce que la suite réussisse.

Erreurs courantes

Corriger avant de diagnostiquer. La plus grosse. Un agent qui édite avant de nommer le type d'erreur devine, et deviner rend le vert par chance, pas par correction. La règle de classifier d'abord est la seule défense.

Traiter toutes les erreurs de la même manière. Un timeout et un échec d'assertion n'ont rien en commun, mais un agent sans le guide des types d'erreur traite les deux comme "quelque chose cloche" et édite la ligne la plus proche. La moitié de tes corrections atterrissent dans le mauvais fichier.

Corriger le symptôme. Envelopper un appel qui lance une exception dans un try/catch fait passer le test mais laisse le bogue. Le protocole interdit d'étouffer les erreurs pour cette raison précise.

Laisser affaiblir les tests. Un agent autorisé à modifier les tests finira par supprimer celui qui échoue pour atteindre le vert. Une suite qui passe mais ne prouve rien est le pire résultat, donc cette règle est non négociable.

La configuration en 5 minutes

2 minutes : crée .claude/commands/fix.md.

1 minute : ajoute le hook PostToolUse dans settings.json.

1 minute : ajoute le protocole d'auto-débogage dans CLAUDE.md.

1 minute : exécute /fix sur un bogue connu et regarde-le travailler sur la cause, tentative après tentative.

Tu cesses d'être l'humain qui relaie les erreurs. L'agent lit son propre rouge et corrige jusqu'à ce que ce soit vert. Il n'est pas devenu plus intelligent, il a juste arrêté de te renvoyer le problème.

Merci d'avoir lu !

Je partage des notes quotidiennes sur l'IA, la finance et le vibe coding dans mon canal Telegram : https://t.me/zodchixquant

darkzodchi - inline image
Enregistrer en un clic

Lire les articles viraux en profondeur avec l’IA de YouMind

Enregistrez la source, posez des questions ciblées, résumez l’argument et transformez un article viral en notes réutilisables dans un seul espace de travail IA.

Découvrir YouMind
Pour les créateurs

Transformez votre Markdown en un article 𝕏 impeccable

Quand vous publiez vos propres textes longs, la mise en forme 𝕏 des images, tableaux et blocs de code est pénible. YouMind transforme un brouillon Markdown complet en un article 𝕏 impeccable, prêt à publier.

Essayer Markdown vers 𝕏

D'autres patterns à décoder

Articles viraux récents

Explorer plus d'articles viraux