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

Tests als Leitplanken für Coding-Agenten

Nach dieser Lektion: Ich kann zuerst einen scheiternden Test schreiben, damit die Arbeit eines Coding-Agenten geprüft wird.

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

Warum der Test vor dem Agenten kommt

Ein Leitplankentest ist ein Test, den Sie schreiben, bevor ein Coding-Agent startet. Er scheitert jetzt und muss bestehen, wenn die Arbeit fertig ist. So entscheidet eine Maschine über „fertig“ und nicht der Bericht des Agenten.

Andere Lektionen testen Code, nachdem er geschrieben ist. Diese Lektion schreibt den Test zuerst und verhindert dann, dass der Agent ihn austrickst.

Am Ende dieser Lektion

Notiz

Ich kann zuerst einen scheiternden Test schreiben, damit die Arbeit eines Coding-Agenten geprüft wird.

Schlüsselwörter

BegriffWas er bedeutet
Leitplankentestein zuerst geschriebener Test, den die Arbeit bestehen muss
Erst rot, dann gründer Test scheitert vor der Arbeit und besteht danach
Betrugeine Änderung, die einen Test besteht, ohne die Arbeit zu tun
Zurückgehaltener Testein Test, den der Agent nicht sieht
Geschützte Testdateieine Testdatei, die der Agent nicht ändern darf

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

Schreiben Sie zuerst den scheiternden Test

Schreiben Sie den Test aus dem Auftrag, bevor der Agent startet. Führen Sie ihn aus und sehen Sie zu, wie er scheitert. Ein Test, der schon vor der Arbeit besteht, prüft nichts Neues.

Geben Sie dem Agenten dann den Auftrag und den Test. Der Agent ändert den Code, bis der Test besteht. Jetzt haben Sie eine Prüfung, die nicht davon abhängt, was der Agent über seine Arbeit sagt.

Ein Test kann ohne die Arbeit bestehen

Ein Agent soll den Test bestehen lassen, und er findet vielleicht einen kurzen Weg. Er kann nur die Eingaben beantworten, die er sieht. Er kann den Test ändern oder löschen.

Das ist keine böse Absicht. Der Agent bekam ein Ziel und hat das Ziel erreicht. Machen Sie den falschen Weg also schwer.

Durchgerechnetes Beispiel: Betrug und wie man ihn stoppt

BetrugWie er aussiehtWie man ihn stoppt
SonderfallBei einem Preis von 2000 kommt 0Zurückgehaltene Tests mit anderen Eingaben
Test ändernEin Fall wird gelöscht oder geändertDie Testdatei schützen und vergleichen
Test überspringenDer Test wird als übersprungen markiertDie Tests vorher und nachher zählen
Schwächerer TestEine genaue Prüfung wird zu „ist eine Zahl“Jede Änderung an einer Testdatei prüfen

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

Ein häufiger Fehler

Warnung

Viele denken, ein grüner Testlauf heiße, der Agent habe die Arbeit getan. Ein Test kann grün werden, weil er geändert wurde oder weil nur die sichtbaren Eingaben gehen. Trauen Sie Grün nur, wenn die Testdatei unverändert ist und die zurückgehaltenen Tests auch bestehen.

Vier aufgezeichnete Versuche beurteilen

Der Versand kostet 299 Cent unter 2000 Cent und nichts ab 2000. Das Skript enthält drei sichtbare und zwei zurückgehaltene Tests.

Es beurteilt den Code vor der Arbeit und drei aufgezeichnete Versuche. Die Versuche sind von Hand geschrieben und stehen für das, was ein Agent zurückgeben kann.

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.

Die Leitplankenprüfung schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' '// Der Versand kostet 299 Cent unter 2000 Cent und nichts ab 2000 Cent.' 'const sichtbar = [[500, 299], [1999, 299], [2000, 0]];' 'const zurueck = [[2500, 0], [100, 299]];' 'const versuche = {' '  \"vorher\": { fn: function (p) { return 299; }, tests: sichtbar },' '  \"ehrlich\": { fn: function (p) { return p >= 2000 ? 0 : 299; }, tests: sichtbar },' '  \"Sonderfall\": { fn: function (p) { return p === 2000 ? 0 : 299; }, tests: sichtbar },' '  \"Test geändert\": { fn: function (p) { return 299; }, tests: [[500, 299], [1999, 299]] },' '};' > leitplanke.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 Leitplankenprüfung schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function bestanden(fn, faelle) {' '  return faelle.filter(function (f) { return fn(f[0]) === f[1]; }).length;' '}' 'function urteil(v) {' '  if (JSON.stringify(v.tests) === JSON.stringify(sichtbar) === false) return \"ablehnen: Tests geändert\";' '  if (bestanden(v.fn, v.tests) < v.tests.length) return \"nicht fertig\";' '  if (bestanden(v.fn, zurueck) < zurueck.length) return \"Betrug vermutet\";' '  return \"behalten\";' '}' >> leitplanke.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 Leitplankenprüfung schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  Object.keys(versuche).forEach(function (name) {' '    const v = versuche[name];' '    console.log(name + \": sichtbar \" + bestanden(v.fn, v.tests) + \"/\" + v.tests.length' '      + \", zurückgehalten \" + bestanden(v.fn, zurueck) + \"/\" + zurueck.length + \": \" + urteil(v));' '  });' '  const f = \"Schreiben Sie in einem kurzen Satz, warum man einige Tests vor einem Coding-Agenten verbirgt.\";' '  const probe = \"Verborgene Tests zeigen, ob der Agent das Problem gelöst hat oder nur die Beispiele, die er sah.\";' '  const antwort = await fragen([{ role: \"user\", content: f }], probe, 60);' '  console.log(\"Das Modell sagte: \" + antwort.text);' '}' 'main();' >> leitplanke.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 Leitplankenprüfung ausführen

Befehl
docker exec -w /home/node/project agent node leitplanke.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
vorher: sichtbar 2/3 ...: nicht fertigRot: Der Test scheitert vor der Arbeit
ehrlich: sichtbar 3/3, zurückgehalten 2/2: behaltenGrün, und die verborgenen Fälle stimmen
Sonderfall: ... zurückgehalten 1/2: Betrug vermutetNur die sichtbaren Eingaben gehen
Test geändert: ...: ablehnen: Tests geändertEin Fall wurde gelöscht, also zählt nichts
Das Modell sagte: ...Ein Satz aus dem Labor. Eine Aufgezeichnete Probe, wenn kein Modell antwortet

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.