Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Die Änderung eines KI-Agenten im Diff prüfen

Nach dieser Lektion: Ich kann die Änderung eines Agenten im Diff lesen und entscheiden, ob ich sie behalte, ändere oder verwerfe.

Lektion, 75 Min.9 BefehleLab für KI-Coding-Agenten: mit opencode Code erklären und reparieren lassen und die Arbeit prüfen

Drei Dateien, obwohl Sie eine Funktion wollten

Ein KI-Agent ändert Dateien selbst und zeigt Ihnen am Ende eine Liste seiner Änderungen. Diese Liste heißt Diff. Sie haben eine kleine Funktion verlangt, und der Diff berührt drei Dateien.

Behalten Sie die Änderung, bevor Sie sie gelesen haben, übernehmen Sie Dinge, die Sie nie verlangt haben. Diese Lektion zeigt, wie Sie einen Diff lesen und entscheiden.

Am Ende dieser Lektion

Notiz

Ich kann die Änderung eines Agenten im Diff lesen und entscheiden, ob ich sie behalte, ändere oder verwerfe.

Schlüsselwörter

BegriffWas er bedeutet
Diffdie Liste dessen, was sich zwischen zwei Fassungen geändert hat
Hunkein zusammenhängender Abschnitt einer Änderung in einer Datei
Anfragedas, was Sie verlangt haben und woran die Änderung zu messen ist
Umfangwie viele Dateien und Zeilen eine Änderung berührt
Verwerfeneine Änderung ganz zurücknehmen

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein Diff besteht aus Dateien und Hunks

Ein Diff nennt zuerst jede berührte Datei. Darunter steht je Änderung ein Hunk: Zeilen mit einem Minus wurden entfernt, Zeilen mit einem Plus kamen hinzu, Zeilen ohne Zeichen sind der Rahmen.

Lesen Sie erst die Dateiliste, dann jeden Hunk. Fragen Sie bei jedem: Habe ich das verlangt?

Eine mögliche Anfrage an den Agenten

So könnte eine Anfrage lauten: „Ergänze in preise.js eine Funktion mitPfand(cent), die 25 Cent aufschlägt, und einen Test dafür. Ändere sonst nichts.“

Die Anfrage ist Ihr Maßstab. Alles im Diff, was sie nicht deckt, ist ein Fall für Fragen: berührte Dateien, entfernte Tests, ein größerer Umfang als verlangt.

Zwei Ordner vergleichen

Die Runs unten schreiben in einen Ordner demo-pruefung-diff/ zwei Fassungen: vorher/ und nachher/. Die zweite hat die Funktion bekommen, die Sie verlangt haben, und dazu drei Dinge, die Sie nicht verlangt haben.

Alles ist von Hand geschrieben und keine Antwort eines Agenten. Das Werkzeug diff zeigt die Unterschiede wie ein Agent sie zeigen würde.

Den Code von vorher schreiben

Befehl
docker exec -w /home/node/project agent sh -c "mkdir -p demo-pruefung-diff/vorher && printf '%s\n' '// Preise in Cent. Ab 8 Stueck gibt es 5 Prozent Rabatt.' 'function gesamtpreis(menge, cent) {' '  const brutto = menge * cent;' '  if (menge >= 8) return Math.round(brutto * 0.95);' '  return brutto;' '}' 'module.exports = { gesamtpreis };' > demo-pruefung-diff/vorher/preise.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Tests von vorher schreiben

Befehl
docker exec -w /home/node/project agent sh -c "mkdir -p demo-pruefung-diff/vorher && printf '%s\n' 'const { gesamtpreis } = require(\"./preise.js\");' 'let fehler = 0;' 'function pruefe(name, stimmt) {' '  if (stimmt === false) {' '    fehler = fehler + 1;' '    console.log(\"fehler: \" + name);' '  }' '}' 'pruefe(\"ein stueck\", gesamtpreis(1, 120) === 120);' 'pruefe(\"sieben stueck\", gesamtpreis(7, 120) === 840);' 'pruefe(\"acht stueck\", gesamtpreis(8, 120) === 912);' 'pruefe(\"neun stueck\", gesamtpreis(9, 125) === 1069);' 'pruefe(\"kein stueck\", gesamtpreis(0, 120) === 0);' 'console.log(require(\"path\").basename(__dirname) + \": \" + fehler + \" Fehler\");' > demo-pruefung-diff/vorher/tests.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Den Code von nachher schreiben

Befehl
docker exec -w /home/node/project agent sh -c "mkdir -p demo-pruefung-diff/nachher && printf '%s\n' '// Preise in Cent. Ab 8 Stueck gibt es 5 Prozent Rabatt.' 'function gesamtpreis(menge, cent) {' '  const brutto = menge * cent;' '  if (menge >= 8) return Math.floor(brutto * 0.95);' '  return brutto;' '}' 'function mitPfand(cent) {' '  return cent + 25;' '}' 'module.exports = { gesamtpreis, mitPfand };' > demo-pruefung-diff/nachher/preise.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Tests von nachher schreiben

Befehl
docker exec -w /home/node/project agent sh -c "mkdir -p demo-pruefung-diff/nachher && printf '%s\n' 'const { gesamtpreis } = require(\"./preise.js\");' 'let fehler = 0;' 'function pruefe(name, stimmt) {' '  if (stimmt === false) {' '    fehler = fehler + 1;' '    console.log(\"fehler: \" + name);' '  }' '}' 'pruefe(\"ein stueck\", gesamtpreis(1, 120) === 120);' 'pruefe(\"sieben stueck\", gesamtpreis(7, 120) === 840);' 'pruefe(\"acht stueck\", gesamtpreis(8, 120) === 912);' 'pruefe(\"kein stueck\", gesamtpreis(0, 120) === 0);' 'console.log(require(\"path\").basename(__dirname) + \": \" + fehler + \" Fehler\");' > demo-pruefung-diff/nachher/tests.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Eine Datei mehr schreiben

Befehl
docker exec -w /home/node/project agent sh -c "mkdir -p demo-pruefung-diff/nachher && printf '%s\n' '// Neu: Einstellungen fuer Rundung und Pfand, noch von nichts benutzt.' 'module.exports = { runden: \"ab\", pfandCent: 25 };' > demo-pruefung-diff/nachher/einstellungen.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die geänderten Dateien auflisten

Befehl
docker exec -w /home/node/project/demo-pruefung-diff agent env LC_ALL=C diff -rq vorher nachher

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Den ganzen Diff lesen

Befehl
docker exec -w /home/node/project/demo-pruefung-diff agent env LC_ALL=C diff -r vorher nachher

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein entfernter Test macht den Rest grün

Im Diff fehlt eine Prüfzeile: neun Stück zu 125 Cent. Der Agent hat außerdem in preise.js Math.round durch Math.floor ersetzt, was Sie nicht verlangt haben. Genau dieser Test hätte die Änderung bemerkt.

Mit dem Test weniger sind alle Tests grün. Ein entfernter Test ist immer eine Frage an den Agenten, nie ein Detail.

Tests laufen lassen und Prüfzeilen zählen

Befehl
docker exec -w /home/node/project/demo-pruefung-diff agent sh -c "node vorher/tests.js; node nachher/tests.js; grep -c ^pruefe vorher/tests.js nachher/tests.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Rundung für neun Stück vergleichen

Befehl
docker exec -w /home/node/project/demo-pruefung-diff agent node -e "console.log(require(\"./vorher/preise.js\").gesamtpreis(9, 125), require(\"./nachher/preise.js\").gesamtpreis(9, 125))"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein häufiger Fehler

Warnung

Viele denken, wenn der Agent meldet, alle Tests liefen durch, könne man die Änderung behalten. Das stimmt nur, wenn niemand Tests entfernt oder gelockert hat. Lesen Sie zuerst den Diff der Tests und zählen Sie, bevor Sie dem grünen Ergebnis glauben.

Beispiel: behalten, ändern oder verwerfen

Was der Diff zeigtEntscheidungGrund
Nur die verlangte Funktion und ihr TestBehaltenDeckt die Anfrage
Die richtige Funktion, aber eine Datei mehrÄndernDie Datei lässt sich ablehnen
Ein Test wurde gestrichenVerwerfenDer Schutz ist weg, Sie wissen nicht, was sonst passiert
Die Änderung ist viel größer als die AnfrageÄndernBitten Sie um einen kleineren Schritt

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Weiter: an einer anderen Änderung ausprobieren

Jetzt ist ein guter Moment, diese Ideen an einer anderen Änderung auszuprobieren. Der Fehler des Labs bleibt unberührt. Bitten Sie den Agenten um eine kleine Ergänzung in einer Kopie von shop.js.

Lesen Sie danach zuerst die Dateiliste, dann den Diff der Tests, dann jeden Hunk. Entscheiden Sie, ob Sie behalten, ändern oder verwerfen, und schreiben Sie den Grund auf.

Über dieses Lab und seinen Quellcode: Lab für KI-Coding-Agenten: mit opencode Code erklären und reparieren lassen und die Arbeit prüfen

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.