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

Relire le changement d’un assistant

Après cette leçon: Je peux lire le changement d’un assistant et décider de le garder, de le modifier ou de le jeter.

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

Quarante lignes pour une demande de trois

Un assistant de code qui travaille dans votre projet ne rend pas une réponse : il rend un changement. Ce changement s’appelle un diff, la liste des lignes ajoutées et retirées.

Il peut faire bien plus que ce qu’on lui a demandé. Cette leçon apprend à lire un diff face à la demande, et à décider de le garder, de le modifier ou de le jeter.

À la fin de cette leçon

Remarque

Je peux lire le changement d’un assistant et décider de le garder, de le modifier ou de le jeter.

Mots-clés

MotCe que ça veut dire
Diffla liste des lignes ajoutées et retirées
Bloc modifiéun groupe de lignes changées au même endroit
Hors demandetouché alors que la demande ne le disait pas
Test retiréun test supprimé par le changement
Décisiongarder, modifier ou jeter le changement

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

Une demande possible

Voici une demande possible : « Dans remise.js, ajoute une remise de 10 pour cent dès dix articles. Ne touche à aucun autre fichier. Ne renomme rien et ne retire aucun test. »

Ce que l’assistant fait change d’une fois à l’autre. La demande est votre mesure : tout ce que le diff fait en plus est à examiner.

Commencez par la liste des fichiers touchés

Avant de lire une seule ligne, regardez quels fichiers ont changé. Un fichier que la demande ne citait pas est un signal. Un fichier de réglages, un fichier de secrets ou un fichier de tests mérite deux fois plus d’attention.

Les cinq Run suivants écrivent deux dossiers avant/ et apres/ dans demo-diff/. Le second est écrit à la main avec des défauts : ce n’est pas la réponse d’un assistant.

Écrire le code d’avant

Commande
docker exec -w /home/node/project agent sh -c "mkdir -p demo-diff/avant && printf '%s\n' '// Prix de quantite articles, en centimes. Pas de remise.' 'function prix(quantite, centimes) {' '  return quantite * centimes;' '}' 'module.exports = { prix };' > demo-diff/avant/remise.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 les essais d’avant

Commande
docker exec -w /home/node/project agent sh -c "mkdir -p demo-diff/avant && printf '%s\n' 'const m = require(\"./remise.js\");' 'function verifier(nom, vrai) {' '  console.log((vrai ? \"ok : \" : \"echec : \") + nom);' '}' 'verifier(\"un article\", m.prix(1, 150) === 150);' 'verifier(\"neuf articles\", m.prix(9, 150) === 1350);' 'verifier(\"dix articles\", m.prix(10, 150) === 1500);' > demo-diff/avant/essais.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 code d’après

Commande
docker exec -w /home/node/project agent sh -c "mkdir -p demo-diff/apres && printf '%s\n' '// Prix de quantite articles, en centimes, avec 10 pour cent de remise des dix articles.' 'function calculerPrix(quantite, centimes) {' '  const brut = quantite * centimes;' '  if (quantite >= 10) return Math.round(brut * 0.9);' '  return brut;' '}' 'module.exports = { calculerPrix };' > demo-diff/apres/remise.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 les essais d’après

Commande
docker exec -w /home/node/project agent sh -c "mkdir -p demo-diff/apres && printf '%s\n' 'const m = require(\"./remise.js\");' 'function verifier(nom, vrai) {' '  console.log((vrai ? \"ok : \" : \"echec : \") + nom);' '}' 'verifier(\"un article\", m.calculerPrix(1, 150) === 150);' 'verifier(\"neuf articles\", m.calculerPrix(9, 150) === 1350);' > demo-diff/apres/essais.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 un fichier de plus

Commande
docker exec -w /home/node/project agent sh -c "mkdir -p demo-diff/apres && printf '%s\n' '// Reglage ajoute.' 'module.exports = { envoyerStatistiques: true };' > demo-diff/apres/reglages.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.

Lister les fichiers qui ont changé

Commande
docker exec -w /home/node/project/demo-diff agent env LC_ALL=C diff -rq avant apres

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.

Lisez ensuite chaque bloc modifié

Dans un diff, < marque une ligne retirée et > une ligne ajoutée. Lisez chaque bloc en vous demandant s’il sert la demande. Un bloc qui renomme une fonction, déplace du code ou retire une ligne de test ne sert pas une remise.

Notez ce qui est dans la demande, ce qui est en plus, et ce qui manque.

Lire le diff complet

Commande
docker exec -w /home/node/project/demo-diff agent env LC_ALL=C diff -r avant apres

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.

Un test retiré rend le reste vert

Un assistant qui veut que tout passe peut retirer le test qui gêne. Comparez le nombre de tests avant et après. Puis lancez les deux jeux : s’ils sont verts tous les deux, vérifiez ce que le plus petit ne vérifie plus.

Ici, le test des dix articles a disparu, et c’est le seul qui touchait le bord de la nouvelle règle.

Lancer les essais et compter les tests

Commande
docker exec -w /home/node/project/demo-diff agent sh -c "node avant/essais.js; node apres/essais.js; grep -c ^verifier avant/essais.js apres/essais.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.

Une erreur fréquente

Attention

Beaucoup pensent que si la demande est faite et que les tests passent, le diff peut être gardé. Le diff peut aussi faire autre chose : renommer, retirer un test, ajouter un fichier. Lisez toujours ce qu’il fait en plus de la demande.

Exemple travaillé : garder, modifier ou jeter

Ce que vous voyezDécisionPourquoi
Seulement ce que la demande disaitGarderRien à reprocher, vérifié par les tests
Un fichier ou un bloc en plus, sans dangerModifierOn demande de le retirer et on relit
Un test retiré ou un fichier sensibleJeterOn ne peut pas lui faire confiance
Trois problèmes ou plusJeterMieux vaut redemander en plus petit

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

Plus loin : essayer sur un autre changement

C’est le bon moment pour essayer ces idées sur un autre changement. Ne touchez pas au bogue du labo, qui est le travail de la leçon 6. Demandez plutôt une petite règle de remise dans une copie du projet.

Écrivez ce que la demande permet de toucher, lisez la liste des fichiers puis chaque bloc, et comptez les tests avant et après. Dites si vous gardez, modifiez ou jetez, et pourquoi.

À 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.