Dokumentation durchsuchen

bmad-plus mem

Entscheidungen und Ereignisse abrufen, Agentenarbeit festhalten, ein Muster mit Belohnungssignalen verstärken, eine Erkenntnis an abgenommene Nexus-Arbeit binden. Optionen, Ausgabe, Fehler.

Auf dieser Seite
  1. Syntax
  2. Was gelesen und geschrieben wird
  3. Die fünf Aktionen
  4. Exit-Codes
  5. Die Ausgabe lesen
  6. Fehler und was zu tun ist
  7. Beispiele

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.

Syntax

Im Terminal deines Projekts
npx bmad-plus mem recall <query...> [--scope project|portfolio] [--portfolio <path>] [--limit <n>] [--ranking lexical|evidence] [--context-scope <paths>] [--json]
npx bmad-plus mem write --agent <name> [--cli <name>] [--model <id>] [--task <text>] [--outcome <outcome>] [--eval <0-1>] [--accept <bool>] [--ci <result>] [--json]
npx bmad-plus mem reinforce --pattern <id> [--eval <0-1>] [--accept <bool>] [--ci <result>] [--evidence <ids>] [--json]
npx bmad-plus mem observe --input <file> [--json]
npx bmad-plus mem outcomes [--json]

Argumente und Optionen von mem
OptionArgumentStandardWirkung
<action>recall, write, reinforce, observe, outcomesPflichtDie auszuführende Aktion.
[query...]WörterkeinerDer Suchtext von recall. Mehrere Wörter werden mit Leerzeichen verbunden.
-d, --directory <path>Pfadaktuelles VerzeichnisProjektordner mit .agents/memory/ und .bmad/memory/.
--scope <scope>project oder portfolioprojectNur recall. portfolio durchsucht zusätzlich den Memory-Ordner eines Portfolio-Brains.
--portfolio <path>PfadkeinerOrdner des Portfolio-Brains; sein Unterordner memory/ wird mit --scope portfolio durchsucht.
--limit <n>Zahl8recall: wie viele Treffer behalten werden.
--ranking <mode>lexical oder evidencelexicalrecall: evidence bevorzugt Notizen mit einem abgenommenen Ergebnis als Beleg. Nur Projektumfang.
--context-scope <paths>relative Pfade, durch Kommas getrenntkeinerPflicht bei --ranking evidence: die Projektpfade, um die es in der Frage geht.
--input <file>projektrelativer Pfadkeinerobserve: JSON-Datei, die das Ergebnis beschreibt.
--agent <name>Textkeinerwrite: der Agent, der das Ereignis erzeugt hat. Pflicht.
--cli <name>Textkeinerwrite: der Assistent, der ihn gesteuert hat (zum Beispiel claude-code, gemini-cli, codex-cli, cursor, opencode, aider, antigravity). Wird unverändert gespeichert.
--model <id>Textkeinerwrite: Modellkennung, unverändert gespeichert.
--task <text>Textleerwrite: was versucht wurde.
--outcome <outcome>success, failure, partial, abandonedkeinerwrite: Ergebnis des Versuchs.
--pattern <id>Textkeinerreinforce: die Überschrift des Musters in patterns.md. Pflicht.
--eval <score>Zahl von 0 bis 1keinerBelohnungssignal: Ergebnis einer Evaluierungssuite.
--accept <bool>true, false (oder yes, no) oder eine Zahl von 0 bis 1keinerBelohnungssignal: ob die Person das Ergebnis akzeptiert hat.
--ci <result>pass, fail oder eine Zahl von 0 bis 1keinerBelohnungssignal: Ergebnis der kontinuierlichen Integration.
--evidence <ids>Ereignis-IDs, durch Kommas getrenntkeinerreinforce: Journal-Ereignisse, die die Verstärkung belegen; werden in einen Übernahmevorschlag kopiert.
--jsonkeinerausGibt JSON statt Text aus. Fehler werden zu {"error": "..."}.

Was gelesen und geschrieben wird

Von mem genutzte Dateien
DateiAufgabeGeschrieben von
.bmad/memory/journal.ndjsonNur anhängbares Ereignisjournal, ein JSON-Objekt pro Zeile.write
.bmad/memory/pattern-scores.jsonWert 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.ndjsonBelege, die einen Memory-Abschnitt an abgenommene Nexus-Arbeit binden.observe
.bmad/memory/writer.lockKurzlebige 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.

Die fünf Aktionen

recall

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.

write

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.

reinforce

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 und outcomes

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.

Exit-Codes

Exit-Codes von mem
CodeBedeutung
0Die Aktion lief. Ein recall ohne Treffer bleibt 0.
1Unbekannte 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>.

Die Ausgabe lesen

recall (Werte und Notiz beispielhaft)Simuliert
npx bmad-plus mem recall auth strategy
mem 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.

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 pass
mem 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 pass
mem 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

Fehler und was zu tun ist

Von mem ausgegebene Meldungen
MeldungUrsacheWas tun
mem: unknown action '<x>' — expected recall | write | reinforce | observe | outcomesDas erste Wort ist keine der fünf Aktionen.Den Namen der Aktion korrigieren.
mem recall: recall: query must be a non-empty stringrecall wurde ohne Suchwörter aufgerufen.Suchwörter nach recall ergänzen.
mem recall: Evidence ranking supports project-local lexical recall only.--ranking evidence zusammen mit --scope portfolio.Für das Beleg-Ranking den Projektumfang verwenden.
mem recall: An explicit non-empty project scope is required.--ranking evidence ohne --context-scope.--context-scope src/auth,src/session angeben (1 bis 30 relative Pfade).
mem write: appendEvent: event.agent is requiredwrite ohne --agent.--agent <name> angeben.
mem write: appendEvent: event.outcome must be one of success|failure|partial|abandonedUngültiges --outcome.Einen der vier Werte verwenden.
mem reinforce: mem reinforce: --pattern <id> is required (the pattern heading in patterns.md)reinforce ohne --pattern.Die genaue ### -Überschrift des Musters angeben.
mem observe: Outcome source is not an accepted task with current independently verified evidence.Die Nexus-Aufgabe ist nicht abgenommen, ihre Prüfung nicht bestanden oder ihr Nachweis veraltet.Zuerst nexus verify und nexus accept abschließen, dann erneut beobachten.
mem observe: Memory heading must identify exactly one section.Die Überschrift fehlt oder kommt zweimal in der Datei vor.Den genauen, eindeutigen Text der ### -Überschrift verwenden.
mem observe: Duplicate outcome: this task attempt already supplied a receipt.Für diesen Lauf, diese Aufgabe und diesen Versuch gibt es schon einen Beleg.Nichts zu tun; bei geänderter Erkenntnis supersedes bei einem späteren Versuch nutzen.
mem observe: Outcome scope exceeds the accepted task scope.Ein Pfad in scope liegt außerhalb des deklarierten Umfangs der Aufgabe.scope auf Pfade beschränken, die die Aufgabe besitzt.
... Memory writer lock is occupied. Inspect writer.lock and its owner; do not remove a live lock.Ein anderer Prozess hält .bmad/memory/writer.lock länger als etwa zwei Sekunden, oder ein Absturz hat sie hinterlassen.Auf den anderen Schreiber warten. Die Datei nur löschen, wenn sicher kein mem-Prozess läuft.
... Memory store is full; archive it explicitly before adding records.Ein Speicher hat 2 MiB erreicht.Die Datei von Hand archivieren oder kürzen und erneut versuchen.

Beispiele

Sich an eine frühere Entscheidung erinnern

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 erhalten mem 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 Erkenntnis an abgenommene Arbeit binden

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 erhalten mem 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.