Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Déboguer avec un assistant

Après cette leçon: Je peux donner à un assistant ce qu’il lui faut pour trouver une faute, et vérifier que sa correction l’explique.

Leçon de 60 min4 commandesLab agent de code IA : utiliser opencode pour expliquer et corriger du code, et vérifier son travail

Le test est vert, la faute est restée

Un test échoue. Vous demandez de l’aide à un assistant, il propose une correction, et le test passe. Vous pensez en avoir fini.

Pourtant, une correction qui ne fait taire que ce test peut laisser la faute en place. Cette leçon apprend à donner à un assistant ce qu’il lui faut pour déboguer, puis à vérifier que sa correction explique la faute.

À la fin de cette leçon

Remarque

Je peux donner à un assistant ce qu’il lui faut pour trouver une faute, et vérifier que sa correction l’explique.

Mots-clés

MotCe que ça veut dire
Causela raison de la faute, pas ce qu’on en voit
Cas signaléle cas qui échoue et que vous avez trouvé
Cas de contrôleun cas de plus, pour voir si la faute est partie
Rustineune correction qui ne fait taire que le cas signalé
Un changement à la foisune seule modification entre deux essais

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Donnez à l’assistant ce que vous avez

Écrire « ça ne marche pas » ne lui apprend rien. Joignez le test qui échoue avec son affichage exact, le code concerné, ce que vous avez déjà essayé et ce que vous attendiez.

Plus vous donnez de faits, moins l’assistant devine. Une faute qu’il devine, il la corrige parfois à la place d’une autre.

Ce qu’il faut joindre à la demande

À joindrePourquoi
Le test et son affichage exactIl montre la faute sans interprétation
Le code concerné, pas tout le projetIl limite ce que l’assistant doit lire
Ce que vous avez déjà essayéIl évite qu’on refasse la même piste
Ce que vous attendiez à la placeIl dit où est la faute

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Une demande possible

Voici une demande possible : « Ce test échoue : pages(11, 5) donne 2, j’attends 3. Voici la fonction. Je n’ai pas encore changé le code. Explique d’abord la cause, puis propose un seul changement. »

Ce que l’assistant renvoie change d’une fois à l’autre. Regardez surtout si son explication dit pourquoi 11 donne 2.

Écrire trois versions d’une fonction

Commande
docker exec -w /home/node/project agent sh -c "mkdir -p demo-debug && printf '%s\n' '// Nombre de pages pour total lignes, taille lignes par page.' 'function pages(total, taille) {' '  return Math.floor(total / taille);' '}' '// Une rustine : elle ne corrige que le cas qu’on a signale.' 'function rustine(total, taille) {' '  if (total === 11) return 3;' '  return Math.floor(total / taille);' '}' '// La correction qui explique la faute : on arrondit vers le haut.' 'function juste(total, taille) {' '  return Math.ceil(total / taille);' '}' 'module.exports = { pages, rustine, juste };' > demo-debug/pages.js"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Écrire le contrôle

Commande
docker exec -w /home/node/project agent sh -c "mkdir -p demo-debug && printf '%s\n' 'const fonction = require(\"./pages.js\")[process.argv[2]];' '// Chaque cas : le nombre de lignes, puis le nombre de pages attendu (5 lignes par page).' 'const cas = [[11, 3], [1, 1], [12, 3], [10, 2], [15, 3], [0, 0]];' 'const combien = process.argv[3] === undefined ? cas.length : Number(process.argv[3]);' 'let echecs = 0;' 'for (const un of cas.slice(0, combien)) {' '  const obtenu = fonction(un[0], 5);' '  if (obtenu === un[1]) continue;' '  echecs = echecs + 1;' '  console.log(\"echec : pages(\" + un[0] + \", 5) donne \" + obtenu + \", attendu \" + un[1]);' '}' 'console.log(process.argv[2] + \" : \" + echecs + \" echec(s) sur \" + combien);' > demo-debug/controle.js"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Lancer le seul cas signalé

Commande
docker exec -w /home/node/project/demo-debug agent node controle.js pages 1

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Demandez la cause avant le correctif

Demandez d’abord pourquoi la faute arrive, puis le changement. Une cause bien dite prédit d’autres échecs. Ici, une division qui arrondit vers le bas laisse aussi 1 ligne sans page et 12 lignes avec une page de moins.

Vérifiez cette prédiction avant de changer quoi que ce soit. Si l’explication n’en annonce aucune autre, elle est peut-être fausse.

Une seule modification entre deux essais

Changez une chose, puis relancez. Si vous en changez trois, vous ne saurez pas laquelle a servi, ni laquelle a fait un nouveau dégât.

Puis relancez plus que le cas signalé. Une rustine passe le cas signalé et échoue sur les autres. Seul un jeu de cas de contrôle la démasque.

Essayer la rustine, puis la correction juste

Commande
docker exec -w /home/node/project/demo-debug agent sh -c "node controle.js rustine 1; node controle.js rustine; node controle.js juste"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Une erreur fréquente

Attention

Beaucoup pensent qu’un test qui repasse au vert veut dire que la faute est corrigée. Il montre seulement que ce cas passe. Gardez toujours quelques cas de contrôle, et demandez à l’assistant de dire pourquoi sa correction marche.

Exemple travaillé : trois essais

VersionCas signaléLes six cas
pageséchoue : 2 au lieu de 3trois échecs : 11, 1 et 12
rustineréussitdeux échecs : 1 et 12
justeréussitaucun échec

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Plus loin : essayer sur une autre faute

C’est le bon moment pour essayer ces idées sur une autre faute. Ne touchez pas au bogue du labo, qui est le travail de la leçon 6. Ajoutez plutôt vous-même une faute dans une copie de shop.js.

Joignez le test et son affichage, demandez la cause avant le changement, puis lancez des cas de contrôle. Notez si la correction proposée expliquait vraiment la faute.

À propos de ce labo et de sa source: Lab agent de code IA : utiliser opencode pour expliquer et corriger du code, et vérifier son travail

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.