Entscheidungen und Ereignisse abrufen, Agentenarbeit festhalten, ein Muster mit Belohnungssignalen verstärken, eine Erkenntnis an abgenommene Nexus-Arbeit binden. Optionen, Ausgabe, Fehler.
Das Pack Memory legt in Markdown-Dateien ab, was ein Projekt gelernt hat: Entscheidungen, Erkenntnisse und Muster. bmad-plus mem ist der kleine, deterministische Werkzeugkasten, mit dem jeder Assistent diese Dateien gleich nutzt, ob in Claude Code, Gemini CLI, Codex CLI, Cursor, OpenCode, Aider oder Antigravity. Er hat fünf Aktionen: recall findet passende frühere Notizen und Ereignisse, write hängt ein Ereignis an ein Journal an, reinforce hebt oder senkt den Wert eines Musters, observe bindet eine Erkenntnis an unabhängig geprüfte und abgenommene Arbeit, und outcomes listet diese Bindungen. Er stellt keine Fragen im Terminal und ruft nie ein Modell auf, ein Agent kann ihn also starten und das Ergebnis auswerten. Die Seite ist für alle, die wollen, dass sich ein Agent mit Belegen erinnert, und für alle, die dieses Gedächtnis prüfen.
Der Suchtext von recall. Mehrere Wörter werden mit Leerzeichen verbunden.
-d, --directory <path>
Pfad
aktuelles Verzeichnis
Projektordner mit .agents/memory/ und .bmad/memory/.
--scope <scope>
project oder portfolio
project
Nur recall. portfolio durchsucht zusätzlich den Memory-Ordner eines Portfolio-Brains.
--portfolio <path>
Pfad
keiner
Ordner des Portfolio-Brains; sein Unterordner memory/ wird mit --scope portfolio durchsucht.
--limit <n>
Zahl
8
recall: wie viele Treffer behalten werden.
--ranking <mode>
lexical oder evidence
lexical
recall: evidence bevorzugt Notizen mit einem abgenommenen Ergebnis als Beleg. Nur Projektumfang.
--context-scope <paths>
relative Pfade, durch Kommas getrennt
keiner
Pflicht bei --ranking evidence: die Projektpfade, um die es in der Frage geht.
--input <file>
projektrelativer Pfad
keiner
observe: JSON-Datei, die das Ergebnis beschreibt.
--agent <name>
Text
keiner
write: der Agent, der das Ereignis erzeugt hat. Pflicht.
--cli <name>
Text
keiner
write: der Assistent, der ihn gesteuert hat (zum Beispiel claude-code, gemini-cli, codex-cli, cursor, opencode, aider, antigravity). Wird unverändert gespeichert.
--model <id>
Text
keiner
write: Modellkennung, unverändert gespeichert.
--task <text>
Text
leer
write: was versucht wurde.
--outcome <outcome>
success, failure, partial, abandoned
keiner
write: Ergebnis des Versuchs.
--pattern <id>
Text
keiner
reinforce: die Überschrift des Musters in patterns.md. Pflicht.
--eval <score>
Zahl von 0 bis 1
keiner
Belohnungssignal: Ergebnis einer Evaluierungssuite.
--accept <bool>
true, false (oder yes, no) oder eine Zahl von 0 bis 1
keiner
Belohnungssignal: ob die Person das Ergebnis akzeptiert hat.
--ci <result>
pass, fail oder eine Zahl von 0 bis 1
keiner
Belohnungssignal: Ergebnis der kontinuierlichen Integration.
--evidence <ids>
Ereignis-IDs, durch Kommas getrennt
keiner
reinforce: Journal-Ereignisse, die die Verstärkung belegen; werden in einen Übernahmevorschlag kopiert.
--json
keiner
aus
Gibt JSON statt Text aus. Fehler werden zu {"error": "..."}.
Nur anhängbares Ereignisjournal, ein JSON-Objekt pro Zeile.
write
.bmad/memory/pattern-scores.json
Wert jedes verstärkten Musters (eine Elo-Zahl und eine Beta-Verteilung).
reinforce
.bmad/memory/promotions.ndjson
Übernahmevorschläge. Immer Status PROPOSED.
reinforce
.bmad/memory/outcomes.ndjson
Belege, die einen Memory-Abschnitt an abgenommene Nexus-Arbeit binden.
observe
.bmad/memory/writer.lock
Kurzlebige Sperre, die Schreibzugriffe nacheinander ordnet.
jede schreibende Aktion
decisions.md, lessons.md, patterns.md in .agents/memory/ und .bmad/memory/
Menschliche Notizen, an jeder Überschrift ### in Abschnitte geteilt. Nur lesen.
du und deine Agenten
Jeder Speicher ist auf 2 MiB begrenzt, der Ergebnisspeicher auf 1000 Belege, und Pfade müssen im Projekt bleiben, ohne symbolischen Links zu folgen. Eine beschädigte Journalzeile wird beim Lesen übersprungen, nie ein Abbruch.
Durchsucht die Journalereignisse und die ### -Abschnitte von decisions.md, lessons.md und patterns.md, sowohl in .agents/memory/ als auch in .bmad/memory/. Das Ranking ist lexikalisch: Wörter der Anfrage in einem Eintrag, mit abnehmendem Ertrag bei Wiederholungen, einem Bonus für den abgedeckten Anteil der Anfrage und einer Längennormierung. Journalereignisse verlieren alle 30 Tage die Hälfte ihres Gewichts. Ein Suchdienst oder Python ist nicht nötig. Mit --scope portfolio --portfolio <path> wird auch der Ordner memory/ eines Portfolio-Brains durchsucht. Mit --ranking evidence (nur Projektumfang, dann ist --context-scope Pflicht) wird der Wert einer Notiz mit gültigem Beleg eines abgenommenen Ergebnisses für die angegebenen Pfade mit 1,25 multipliziert; eine Notiz, deren Belege alle veraltet, ersetzt oder widersprochen sind, entfällt, statt stillschweigend zurückzufallen; Notizen ganz ohne Beleg bleiben, markiert als unverified.
Hängt ein Ereignis an .bmad/memory/journal.ndjson an, mit der Zeit des Aufrufs, dem Agenten und, falls angegeben, Assistent, Modell, Aufgabe, Ergebnis und den übergebenen Belohnungssignalen. Die Ereignis-ID leitet sich aus Zeit, Agent und Aufgabe ab und ist daher reproduzierbar. Nichts im Ereignis ist eine Messung von BMAD+: Die Signale sind das, was der Aufrufer meldet.
Faltet die Signale zu einer Belohnung zwischen 0 und 1 zusammen: --eval wiegt 0,5, --accept 0,3 und --ci 0,2, weggelassene Signale werden mit neu normierten Gewichten ignoriert, sodass auch ein Aufruf nur mit CI eine brauchbare Belohnung liefert. Die Belohnung bewegt die Elo-Zahl des Musters (Start 1200, K-Faktor 32) und seine Beta-Verteilung (Start 1 und 1, mit Vergessen, damit alte Belege verblassen). Erreicht der Beta-Mittelwert 0,7 bei mindestens 3 Aktualisierungen, wird eine Übernahme von candidate auf validated in promotions.ndjson geschrieben, stets mit Status PROPOSED. Sie anzuwenden verlangt eine Freigabe durch einen Menschen oder Shield, die dieser Befehl nie festhalten kann. Das Ergebnis nennt evidenceStatus: self-reported und rankingEligible: false: Eine Verstärkung ist die Behauptung des Aufrufers, kein abgenommener Beleg.
observe ist der einzige Weg, wie eine Erkenntnis einen Beleg bekommt. Es liest eine JSON-Datei und schreibt nur dann einen Beleg, wenn die genannte Nexus-Aufgabe abgenommen ist, ihr letzter Versuch abgeschlossen, ihre unabhängige Prüfung bestanden und ihr Nachweis noch aktuell ist, und nur wenn der genannte Memory-Abschnitt genau einmal existiert. Der Beleg hält den Hash dieses Abschnitts und die Aufgabe fest und nennt lessonCausality: unmeasured: BMAD+ behauptet nicht, die Erkenntnis habe den Erfolg verursacht. outcomes prüft jeden Beleg gegen die heutigen Dateien neu und gibt accepted-current aus oder den Grund, warum er nicht mehr zählt: superseded, contradictory, stale-memory-section (der Abschnittstext hat sich geändert), stale-outcome-source (die Nexus-Aufgabe hat sich geändert) oder unavailable-or-ineligible-source.
Eingabedatei von observe
{
"runId": "<nexus run id>",
"taskId": "<accepted task id>",
"memory": { "file": ".agents/memory/lessons.md", "heading": "<exact ### heading>" },
"scope": ["src/auth"],
"interpretation": "Why this accepted work supports the lesson.",
"supersedes": [],
"contradicts": []
}
memory.file muss decisions.md, lessons.md oder patterns.md unter .agents/memory/ oder .bmad/memory/ sein. scope listet 1 bis 30 relative Pfade und muss im Umfang der abgenommenen Aufgabe bleiben. supersedes und contradicts nennen frühere Beleg-IDs, die denselben Umfang überlappen; keine ID darf in beiden stehen. Ein Aufgabenversuch kann nur einen Beleg erzeugen.
Die Aktion lief. Ein recall ohne Treffer bleibt 0.
1
Unbekannte Aktion, fehlende Pflichtoption, ungültiger Wert, gesperrter Speicher oder jeder andere Fehler. Mit --json erscheint der Fehler auf der Standardausgabe als {"error": "..."}, sonst auf dem Fehlerstrom als mem <action>: <message>.
$ npx bmad-plus mem recall auth strategymem recall: 1 match(es) for "auth strategy" (scope: project) 1. [0.412] note decisions.md § Auth strategy Use short-lived sessions with server-side revocation.
npx bmad-plus mem recall auth strategy
Beispielhafter Ablauf, nicht bei einem echten Lauf aufgezeichnet. Quelle: tools/cli/commands/memory-journal-cmd.js (Meldungsvorlagen von runRecall); Punktzahlen und Text sind erfunden
write, dann reinforce (aus den Formeln berechnet, IDs beispielhaft)Simuliert
$ npx bmad-plus mem write --agent forge --cli claude-code --task "Add login rate limit" --outcome success --ci passmem write: event 3f9a1c7b02de appended (2026-10-18T09:30:00.000Z) agent=forge cli=claude-code model=- outcome=success task: Add login rate limit$ npx bmad-plus mem reinforce --pattern "Rate limit on auth routes" --accept true --ci passmem reinforce: pattern "Rate limit on auth routes" reward 1.000 (from {"acceptance":true,"ci":"pass"}) elo 1200.0 -> 1216.0 mean 0.667 (alpha=2.00, beta=1.00, updates=1) promotion: none proposed (needs mean >= 0.7 and >= 3 updates)
Beispielhafter Ablauf, nicht bei einem echten Lauf aufgezeichnet. Quelle: tools/cli/commands/memory-journal-cmd.js (runWrite, runReinforce) und lib/memory-journal.js (computeReward, updatePatternScore); Ereignis-ID und Zeit sind erfunden
Bevor du die Authentifizierung anfasst, soll der Agent prüfen, was das Projekt schon entschieden hat.
In deinem KI-Assistenten
Führe `bmad-plus mem recall auth strategy --json` aus und zitiere die drei besten Treffer mit Quelldatei und Abschnitt.
Das solltest du erhalten Der Befehl gibt ein JSON-Objekt mit query, scope, ranking, count und einem nach Wert sortierten Array results aus. Jedes Ergebnis ist entweder eine note (mit source wie decisions.md, ref als ### -Überschrift und dem Abschnittstext) oder ein event aus dem Journal. Ohne Treffer ist count 0 und der Exit-Code bleibt 0.
Ein Ergebnis festhalten und ein Muster verstärken#
Eine Änderung wurde akzeptiert, und die CI ist grün. Das Gedächtnis soll das festhalten und das leitende Muster stärken.
In deinem KI-Assistenten
Schreibe ein Journalereignis für den Agenten forge, Aufgabe „Add login rate limit“, Ergebnis success, CI pass, und verstärke dann das Muster „Rate limit on auth routes“ mit Akzeptanz true und CI pass.
Das solltest du erhaltenmem write hängt eine Zeile an .bmad/memory/journal.ndjson an und gibt ihre ID aus. mem reinforce berechnet eine Belohnung von 1,000 (Akzeptanz 0,3 und CI 0,2, neu normiert), hebt das Elo des Musters bei der ersten Aktualisierung von 1200,0 auf 1216,0 und zeigt einen Mittelwert von 0,667. Eine Übernahme wird erst vorgeschlagen, wenn der Mittelwert bei mindestens 3 Aktualisierungen 0,7 erreicht, und ein Vorschlag wird nur als PROPOSED gespeichert.
Eine Nexus-Aufgabe, die ein Ratenlimit einführt, wurde geprüft und abgenommen. Die passende Erkenntnis soll diesen Beleg tragen.
In deinem KI-Assistenten
Schreibe die Ergebnisdatei für die abgenommene Nexus-Aufgabe T-12 des Laufs <run id>, verknüpft mit der Erkenntnis „Rate limit on auth routes“ in .agents/memory/lessons.md mit Umfang src/auth, und führe dann `bmad-plus mem observe --input` darauf aus sowie `bmad-plus mem outcomes`.
Das solltest du erhaltenmem observe gibt mem observe: <receipt id> recorded; lesson causality remains unmeasured. aus und hängt den Beleg an .bmad/memory/outcomes.ndjson an. mem outcomes gibt danach <receipt id>: accepted-current aus. Ist die Aufgabe nicht abgenommen, fehlt der Abschnitt oder ist mehrdeutig oder verlässt der Umfang den der Aufgabe, lehnt observe mit der Meldung aus der Fehlertabelle ab und schreibt nichts.