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

Agentengedächtnis, das mit Absicht vergisst

Nach dieser Lektion: Ich kann einem Agenten ein Gedächtnis geben, das mit Absicht vergisst.

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

Ein Gedächtnis, das vergisst

Ein Agentengedächtnis ist ein kleiner Speicher mit Notizen, die der Agent später nachschlagen kann. Ein gutes vergisst mit Absicht: Alte Notizen laufen ab, und manches wird nie gespeichert.

Das ist wichtig, weil ein Gedächtnis, das alles behält, auch Passwörter behält und Tatsachen, die nicht mehr stimmen. Im Modul „Agenten bauen“ haben Sie ein Gedächtnis gebaut. Diese Lektion ergänzt das Vergessen.

Am Ende dieser Lektion

Notiz

Ich kann einem Agenten ein Gedächtnis geben, das mit Absicht vergisst.

Schlüsselwörter

BegriffWas er bedeutet
Gedächtnisspeichereine Liste von Notizen, die der Agent nachschlagen kann
Stichwortein Wort, mit dem man eine Notiz findet
Lebensdauerwie viele Tage eine Notiz aufbewahrt wird
Ablaufenvergessen werden, weil eine Notiz zu alt ist
Sperrregelein Test, der eine Notiz schon am Eingang abweist

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

Notizen laufen mit dem Alter ab

Jede Notiz trägt den Tag, an dem sie geschrieben wurde. Ihr Alter ist heute minus dieser Tag. Ist das Alter größer als die Lebensdauer, ist die Notiz abgelaufen und wird nicht benutzt.

Zum Nachschlagen zählen Sie, wie viele Suchwörter in jeder Notiz stehen. Ordnen Sie nach dieser Zahl, dann nach dem neuesten Tag.

Durchgerechnetes Beispiel: Tag 40, Lebensdauer 30

NotizTagAlterBenutzt?
Rollout auf dem Teststand am Freitag535Nein: abgelaufen
der Teststand heisst kiste72020Ja, 1 Treffer
Rollout braucht zwei Freigaben337Ja, 1 Treffer
Rollout Teststand Korrektur ist eingespielt391Ja, 2 Treffer, zuerst

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

Ein häufiger Fehler

Warnung

Viele denken, ein Gedächtnis solle alles behalten, weil mehr hilfreicher sei. Das stimmt nicht. Alte Notizen können falsch sein, und eine Notiz mit einem Passwort ist ein Leck, das nur wartet. Entscheiden Sie erst, was vergessen wird, dann, was bleibt.

Manches wird nie gespeichert

Prüfen Sie jede Notiz am Eingang, bevor sie gespeichert wird. Weisen Sie Wörter wie Passwort ab, eine E-Mail-Adresse oder eine lange Ziffernfolge wie eine Kartennummer.

Solche Regeln sind einfach, und sie übersehen Dinge. Sie sind ein Sicherheitsnetz, daher gehört eine Regel für den Agenten dazu: Schreibe nie ein Geheimnis auf.

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.

Den Gedächtnisspeicher schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const gesperrt = [\"passwort\", \"geheim\", \"token\"];' 'function pruefen(text) {' '  const klein = text.toLowerCase();' '  for (const g of gesperrt) { if (klein.indexOf(g) >= 0) return \"abgelehnt: enthält das Wort \" + g; }' '  if (text.indexOf(\"@\") >= 0) return \"abgelehnt: enthält eine E-Mail-Adresse\";' '  if (/[0-9]{12}/.test(text)) return \"abgelehnt: enthält eine lange Zahl\";' '  return \"ok\";' '}' 'const speicher = [];' 'function ablegen(text, tag) {' '  const grund = pruefen(text);' '  if (grund === \"ok\") speicher.push({ text: text, tag: tag });' '  return grund;' '}' > gedaechtnis.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 Gedächtnisspeicher schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function finden(suche, heute, ttl) {' '  const woerter = suche.toLowerCase().split(\" \");' '  const lebend = speicher.filter(function (n) { return heute - n.tag <= ttl; });' '  const bewertet = lebend.map(function (n) {' '    const habe = n.text.toLowerCase().split(\" \");' '    return { text: n.text, tag: n.tag, treffer: woerter.filter(function (w) { return habe.indexOf(w) >= 0; }).length };' '  });' '  return bewertet.filter(function (n) { return n.treffer > 0; }).sort(function (a, b) { return b.treffer - a.treffer || b.tag - a.tag; });' '}' >> gedaechtnis.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 Gedächtnisspeicher schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const notizen = [' '  [\"Rollout auf dem Teststand am Freitag\", 5],' '  [\"der Teststand heisst kiste7\", 20],' '  [\"Rollout braucht zwei Freigaben\", 33],' '  [\"mein Passwort ist hunter2\", 38],' '  [\"schreib mir an [email protected]\", 38],' '  [\"Rollout Teststand Korrektur ist eingespielt\", 39],' '];' >> gedaechtnis.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 Gedächtnisspeicher schreiben, Teil 4

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  notizen.forEach(function (n) { console.log(\"Notiz Tag \" + n[1] + \": \" + ablegen(n[0], n[1])); });' '  console.log(\"gespeichert \" + speicher.length + \", noch gültig \" + speicher.filter(function (n) { return 40 - n.tag <= 30; }).length);' '  finden(\"rollout teststand\", 40, 30).forEach(function (n) { console.log(\"Treffer \" + n.treffer + \", Alter \" + (40 - n.tag) + \": \" + n.text); });' '  const q = \"Schreiben Sie in einem kurzen Satz, warum ein Agent alte Notizen vergessen sollte.\";' '  const probe = \"Alte Notizen können inzwischen falsch sein, und ein Gedächtnis, das alles behält, behält auch, was es nicht sollte.\";' '  const antwort = await fragen([{ role: \"user\", content: q }], probe, 60);' '  console.log(\"Das Modell sagte: \" + antwort.text);' '}' 'main();' >> gedaechtnis.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 Gedächtnisspeicher ausführen

Befehl
docker exec -w /home/node/project agent node gedaechtnis.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
Notiz Tag 5: okDie Notiz wird gespeichert
Notiz Tag 38: abgelehnt: enthält das Wort passwortDie Regel stoppte ein Geheimnis
Notiz Tag 38: abgelehnt: enthält eine E-Mail-AdresseDie Regel stoppte eine Adresse
gespeichert 4, noch gültig 3Eine Notiz ist abgelaufen
Treffer 2, Alter 1: Rollout Teststand Korrektur ist eingespieltDer beste Treffer kommt zuerst, das Alter steht in Tagen
Das Modell sagte: ...Ein Satz. Die Worte ändern sich bei jedem Lauf oder zeigen Aufgezeichnete Probe

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.