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

Checkpoints und Rückgängig für Agenten

Nach dieser Lektion: Ich kann jede Änderung eines Laufs aufzeichnen, um die Dateien auf jeden Schritt zurückzuspulen.

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

Jede Änderung umkehrbar machen

Rückgängig machen heißt bei einem Agenten, aufzuzeichnen, was jedes Schreiben ersetzt hat, damit sich die Dateien auf jeden früheren Schritt zurücksetzen lassen. Agenten irren sich in Schritt sieben, und der Fehler zeigt sich erst in Schritt neun.

Mit einem Änderungsprotokoll spulen Sie auf Schritt sechs zurück. Ohne eines lesen Sie ein Diff und raten.

Am Ende dieser Lektion

Notiz

Ich kann jede Änderung eines Laufs aufzeichnen, um die Dateien auf jeden Schritt zurückzuspulen.

Schlüsselwörter

BegriffWas er bedeutet
Schnappschusseine Kopie einer Datei, bevor sie sich ändert
Änderungsprotokolldie Liste aller Änderungen, der Reihe nach
Schritteine nummerierte Aktion eines Laufs
Rückgängigeine Datei wieder so machen, wie sie war
Zurückspulenalle Änderungen nach einem gewählten Schritt rückgängig machen
Vorher-Textwas eine Datei vor einem Schreiben enthielt

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

Rückgängig ist nicht Fortsetzen

Ein Checkpoint sichert einen Lauf, damit er nach einem Stopp fortgesetzt werden kann. Das geht vorwärts. Rückgängig führt die Dateien rückwärts zu ihrem früheren Stand.

Beide führen verschiedene Aufzeichnungen. Ein Checkpoint hält den Zustand des Agenten. Ein Änderungsprotokoll hält, was jedes Schreiben ersetzt hat.

Den Vorher-Text protokollieren

Notieren Sie vor jedem Schreiben oder Löschen die Schrittnummer, den Pfad und was die Datei enthielt. Gab es sie nicht, notieren Sie auch das, als nichts.

Um bis Schritt n zurückzugehen, laufen Sie das Protokoll vom Ende bis Schritt n + 1 durch. Setzen Sie jeden Vorher-Text wieder ein. War das Vorher nichts, entfernen Sie die Datei. Den letzten zuerst, sonst werden zwei Änderungen an einer Datei in falscher Reihenfolge zurückgenommen.

Ein durchgerechnetes Beispiel: vier Schritte

SchrittAktionVorher-Text
1app.py schreibenx = 1
2neu.py schreibennichts: es gab sie nicht
3notizen.txt löschenoffen
4app.py schreibenx = 2

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

Ein häufiger Fehler

Warnung

Viele machen nur mit git rückgängig. Git geht aber nur bis zum letzten Commit zurück, nicht Schritt für Schritt, und eine neue Datei, die Git noch nicht verfolgt, bleibt dabei liegen. Führen Sie ein eigenes Protokoll jedes Schreibens.

Das Änderungsprotokoll schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const dateien = { \"app.py\": \"x = 1\", \"notizen.txt\": \"offen\" };' 'const ops = [' '  { op: \"schreiben\", pfad: \"app.py\", text: \"x = 2\" },' '  { op: \"schreiben\", pfad: \"neu.py\", text: \"y = 1\" },' '  { op: \"loeschen\", pfad: \"notizen.txt\" },' '  { op: \"schreiben\", pfad: \"app.py\", text: \"x = 3\" },' '];' 'function kopie(d) { return Object.assign({}, d); }' > rueckgaengig5.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 Änderungsprotokoll schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' '// Vor jeder Op notieren, was die Datei enthielt: ihren Text oder null, wenn es sie nicht gab.' 'function serieAnwenden(start, liste) {' '  const jetzt = kopie(start);' '  const protokoll = [];' '  liste.forEach(function (o, i) {' '    protokoll.push({ schritt: i + 1, pfad: o.pfad, vorher: o.pfad in jetzt ? jetzt[o.pfad] : null });' '    if (o.op === \"schreiben\") jetzt[o.pfad] = o.text;' '    else delete jetzt[o.pfad];' '  });' '  return { dateien: jetzt, protokoll: protokoll };' '}' >> rueckgaengig5.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 Änderungsprotokoll schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' '// Die Einträge nach einem Schritt rückgängig machen, den letzten zuerst.' 'function bisSchritt(aktuell, protokoll, schritt) {' '  const zurueck = kopie(aktuell);' '  for (const e of protokoll.slice().reverse()) {' '    if (e.schritt <= schritt) continue;' '    if (e.vorher === null) delete zurueck[e.pfad];' '    else zurueck[e.pfad] = e.vorher;' '  }' '  return zurueck;' '}' >> rueckgaengig5.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 Änderungsprotokoll schreiben, Teil 4

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function zeigen(titel, d) { console.log(titel + \" \" + JSON.stringify(d)); }' 'const serie = serieAnwenden(dateien, ops);' 'zeigen(\"Anfang\", dateien);' 'zeigen(\"nach 4 Schritten\", serie.dateien);' 'zeigen(\"zurück bis 3\", bisSchritt(serie.dateien, serie.protokoll, 3));' 'zeigen(\"zurück bis 1\", bisSchritt(serie.dateien, serie.protokoll, 1));' 'zeigen(\"zurück bis 0\", bisSchritt(serie.dateien, serie.protokoll, 0));' 'console.log(\"Protokoll: \" + serie.protokoll.map(function (e) { return e.schritt + \":\" + e.pfad; }).join(\" \"));' >> rueckgaengig5.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.

Ausführen und zurückspulen

Befehl
docker exec -w /home/node/project agent node rueckgaengig5.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 Dateien sind hier ein Dictionary

Die Dateien liegen in einem Dictionary im Skript, auf der Festplatte ändert sich also nichts. Ein echtes Harness schreibt echte Dateien und hält das Protokoll in einer eigenen Datei oder einem eigenen Speicher.

Der Run ruft kein Modell auf, braucht also keine Hilfe und hat nichts zu ersetzen.

Ausgabe des Runs

ZeileWas sie zeigt
Anfang {"app.py":"x = 1","notizen.txt":"offen"}Die Dateien vor der Serie
nach 4 Schritten {"app.py":"x = 3","neu.py":"y = 1"}Die Serie schrieb, fügte hinzu und löschte
zurück bis 3 {"app.py":"x = 2","neu.py":"y = 1"}Nur Schritt 4 wurde zurückgenommen
zurück bis 1 {"app.py":"x = 2","notizen.txt":"offen"}Die Schritte 2 bis 4 wurden zurückgenommen
zurück bis 0 ...Die Dateien wie am Anfang
Protokoll: 1:app.py 2:neu.py 3:notizen.txt 4:app.pyEin Eintrag je Schritt

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.