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

Änderungen eines Coding-Agenten nach Risiko prüfen

Nach dieser Lektion: Ich kann den Änderungssatz eines Coding-Agenten nach Risiko ordnen, bevor ich ihn lese.

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

Wie Sie die Änderungen eines Agenten prüfen

Ein Änderungssatz sind alle Dateien, die ein Coding-Agent für einen Auftrag angelegt, geändert oder gelöscht hat. Ein Agent kann in einer Minute zwanzig Dateien ändern. Alle mit derselben Sorgfalt zu lesen, schafft niemand.

Eine Prüfung nach Risiko findet die riskanten Dateien und liest diese zuerst. Eine Lektion zuvor liest einen kleinen Diff mit dem Auge; diese Lektion ordnet einen ganzen Änderungssatz.

Am Ende dieser Lektion

Notiz

Ich kann den Änderungssatz eines Coding-Agenten nach Risiko ordnen, bevor ich ihn lese.

Schlüsselwörter

BegriffWas er bedeutet
Änderungssatzalle Dateien, die für einen Auftrag geändert wurden
AusufernÄnderungen über das hinaus, was der Auftrag verlangte
Abhängigkeitein Paket, das der Code zum Laufen braucht
Warnzeichenein Hinweis, dass eine Änderung Sorgfalt braucht
Gewichtwie viele Punkte ein Warnzeichen wert ist

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

Fünf Zeichen, dass eine Änderung Sorgfalt braucht

Eine Datei, die der Auftrag nicht nannte, heißt Ausufern. Ein gelöschter Test oder ein Test mit weniger Zeilen kann eine kaputte Funktion verstecken. Eine geänderte Konfigurationsdatei kann ändern, wie alles gebaut wird.

Eine sehr große neue Datei ist schwer zu lesen. Eine neue Abhängigkeit bringt Code mit, den niemand im Team geschrieben hat. Jedes davon ist ein Warnzeichen.

Durchgerechnetes Beispiel: Warnzeichen und Gewichte

WarnzeichenWann es gesetzt wirdGewicht
Test gelöschtEine Testdatei wird gelöscht5
Test geschrumpftEine Testdatei verliert mehr Zeilen, als sie gewinnt3
außerhalb des AuftragsDer Auftrag nannte die Datei nicht3
Konfigurationpackage.json, package-lock.json oder ci.yml2
großMehr als 200 Zeilen hinzu und weg1

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

Punkte zählen, ordnen, dann lesen

Addieren Sie die Gewichte der Warnzeichen einer Datei zu ihrer Punktzahl. Ordnen Sie die Dateien mit der höchsten Punktzahl zuerst. Bei Gleichstand bleibt die ursprüngliche Reihenfolge.

Lesen Sie dann die obersten Dateien ganz, Zeile für Zeile. Die unteren Dateien werden trotzdem gelesen, aber sie verstecken die riskanten nicht mehr. Ein gelöschter Test schickt die ganze Änderung zurück.

Ein häufiger Fehler

Warnung

Viele denken, eine Prüfung heiße, jede Zeile mit derselben Sorgfalt zu lesen. Bei 400 Zeilen verstecken sich die zehn riskanten unter den sicheren. Ordnen Sie zuerst nach Risiko und lesen Sie dann jede riskante Datei ganz.

Die Modellhilfe schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const basis = process.env.AI_URL || \"http://ai:4000\";' '// Die Token einer Antwort oder null, wenn sie keine nennt.' 'function zaehlen(daten, name) {' '  return daten.usage && typeof daten.usage[name] === \"number\" ? daten.usage[name] : null;' '}' > model.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 Modellhilfe schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function fragen(nachrichten, probe, max) {' '  try {' '    const res = await fetch(basis + \"/v1/chat/completions\", {' '      method: \"POST\",' '      headers: { \"content-type\": \"application/json\", authorization: \"Bearer lab\" },' '      body: JSON.stringify({ model: \"lab\", messages: nachrichten, max_tokens: max || 100 }),' '      signal: AbortSignal.timeout(30000),' '    });' '    if (res.ok === false) throw new Error(\"Status \" + res.status);' '    const d = await res.json();' '    return { text: d.choices[0].message.content, eingabe: zaehlen(d, \"prompt_tokens\"), ausgabe: zaehlen(d, \"completion_tokens\"), aufgezeichnet: false };' '  } catch (fehler) {' '    console.log(\"Aufgezeichnete Probe: Kein Modell hat geantwortet (\" + fehler.message + \").\");' '    return { text: probe, eingabe: null, ausgabe: null, aufgezeichnet: true };' '  }' '}' 'module.exports = { fragen };' >> model.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.

Das Skript zur Risikoprüfung schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' '// Der Auftrag nannte zwei Dateien. Der Agent gab sieben zurück.' 'const erlaubt = [\"kiosk.js\", \"kiosk.test.js\"];' 'const KONFIG = [\"package.json\", \"package-lock.json\", \"ci.yml\"];' 'const GEWICHT = { \"Test gelöscht\": 5, \"Test geschrumpft\": 3, \"außerhalb des Auftrags\": 3, \"Konfiguration\": 2, \"groß\": 1 };' > risiko.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.

Das Skript zur Risikoprüfung schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const aenderungen = [' '  { pfad: \"kiosk.js\", hinzu: 12, weg: 2, art: \"geändert\" },' '  { pfad: \"kiosk.test.js\", hinzu: 1, weg: 9, art: \"geändert\" },' '  { pfad: \"preise.json\", hinzu: 1, weg: 1, art: \"geändert\" },' '  { pfad: \"alt.test.js\", hinzu: 0, weg: 40, art: \"gelöscht\" },' '  { pfad: \"package.json\", hinzu: 1, weg: 0, art: \"geändert\" },' '  { pfad: \"README.md\", hinzu: 3, weg: 0, art: \"geändert\" },' '  { pfad: \"utils/format.js\", hinzu: 230, weg: 0, art: \"neu\" },' '];' 'const vorher = [\"datum-tools\"];' 'const nachher = [\"datum-tools\", \"geld-format\"];' >> risiko.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.

Das Skript zur Risikoprüfung schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function zeichen(a) {' '  const aus = [];' '  const istTest = a.pfad.indexOf(\".test.\") >= 0;' '  if (istTest && a.art === \"gelöscht\") aus.push(\"Test gelöscht\");' '  if (istTest && a.art === \"geändert\" && a.weg > a.hinzu) aus.push(\"Test geschrumpft\");' '  if (erlaubt.indexOf(a.pfad) < 0) aus.push(\"außerhalb des Auftrags\");' '  if (KONFIG.indexOf(a.pfad) >= 0) aus.push(\"Konfiguration\");' '  if (a.hinzu + a.weg > 200) aus.push(\"groß\");' '  return aus;' '}' 'function punkte(a) {' '  return zeichen(a).reduce(function (summe, z) { return summe + GEWICHT[z]; }, 0);' '}' >> risiko.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.

Das Skript zur Risikoprüfung schreiben, Teil 4

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  const reihe = aenderungen.slice().sort(function (a, b) { return punkte(b) - punkte(a); });' '  reihe.forEach(function (a) {' '    console.log(punkte(a) + \" \" + a.pfad + (zeichen(a).length ? \": \" + zeichen(a).join(\", \") : \"\"));' '  });' '  nachher.filter(function (d) { return vorher.indexOf(d) < 0; })' '    .forEach(function (d) { console.log(\"neue Abhängigkeit: \" + d); });' >> risiko.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.

Das Skript zur Risikoprüfung schreiben, Teil 5

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' '  const weg = aenderungen.some(function (a) { return zeichen(a).indexOf(\"Test gelöscht\") >= 0; });' '  console.log(weg ? \"zurückschicken: ein Test wurde gelöscht\" : \"in dieser Reihenfolge prüfen\");' '  const f = \"Schreiben Sie in einem kurzen Satz, warum man eine gelöschte Testdatei zuerst ansieht.\";' '  const probe = \"Ein gelöschter Test kann eine kaputte Funktion verstecken, weil sie niemand mehr prüft.\";' '  const antwort = await fragen([{ role: \"user\", content: f }], probe, 60);' '  console.log(\"Das Modell sagte: \" + antwort.text);' '}' 'main();' >> risiko.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 Risikoprüfung ausführen

Befehl
docker exec -w /home/node/project agent node risiko.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.

Was der Run ausgibt

ZeileWas sie zeigt
8 alt.test.js: Test gelöscht, außerhalb des AuftragsDie riskanteste Datei, zuerst gelesen
5 package.json: außerhalb des Auftrags, KonfigurationEine Konfigurationsdatei, die der Auftrag nie nannte
4 utils/format.js: außerhalb des Auftrags, großEine große neue Datei, die niemand wollte
3 kiosk.test.js: Test geschrumpftDer genannte Test hat Zeilen verloren
3 preise.json: außerhalb des AuftragsEine Preisdatei, die der Auftrag nie nannte
3 README.md: außerhalb des AuftragsEine Textdatei, die der Auftrag nie nannte
0 kiosk.jsDie eine Datei, um die es im Auftrag ging
neue Abhängigkeit: geld-formatNeuer Code von außerhalb des Teams
zurückschicken: ein Test wurde gelöschtDie Entscheidung für den ganzen Änderungssatz

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

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