Parcourir la documentation

Mémoire : décisions, leçons et cerveau

Comment BMAD+ garde décisions, leçons et passations entre sessions : mémoire de projet, cerveau global ou de portefeuille et sa détection, Zecher, mem et memory, ce qui n’est jamais écrasé.

Sur cette page
  1. Deux niveaux : mémoire de projet et cerveau
  2. Comment un cerveau existant est détecté
  3. Les fichiers, et quand les agents y touchent
  4. Zecher, l’agent de mémoire
  5. Les commandes : memory, scan et mem
  6. Ce qui n’est jamais écrasé

Une nouvelle session d’un assistant IA démarre de zéro : il ne se souvient pas pourquoi vous avez choisi une bibliothèque la semaine dernière ni de ce qui a mal tourné mardi. Le pack Memory y remédie avec de simples fichiers Markdown dans votre projet, un protocole qui dit à chaque agent quand les lire et les écrire, et un agent, Zecher, qui les tient en ordre. Cette page explique où vit la mémoire, comment un cerveau existant est détecté et relié, quelles commandes y touchent, et ce qui n’est jamais écrasé. Elle s’adresse à qui travaille sur le même projet sur plusieurs sessions, ou sur plusieurs projets qui devraient partager ce qu’ils apprennent.

Remarque Le pack est facultatif et fondé sur des fichiers

La mémoire est le pack memory (installation avec --packs core,memory). Elle demande Node.js seulement. Le rappel vectoriel ou RAG est un complément facultatif, strictement local, via un serveur MCP déployé séparément qui ne fait pas partie du paquet npm ; sans lui, la mémoire Markdown et le scanner de projets fonctionnent à l’identique.

Deux niveaux : mémoire de projet et cerveau

Où vit la mémoire
NiveauEmplacementContenu
Mémoire de projet.agents/memory/ dans le projetDécisions, leçons, motifs, contexte et passations de session de ce seul projet.
Cerveau global~/.bmad-plus/brain/Votre fichier d’identité, décisions, leçons et motifs transversaux, et un index de vos projets BMAD+.
Cerveau de portefeuilleUn dossier _brain/ dans le projet ou dans un dossier parentLa même idée, à vous, avec votre propre organisation. Il prime sur le cerveau global.

La règle d’or : une information qui concerne un projet va dans la mémoire du projet ; une information qui concerne deux projets ou plus est candidate au cerveau. La remontée de l’un vers l’autre n’est jamais automatique. Zecher propose, vous approuvez.

Comment un cerveau existant est détecté

Quand le pack Memory est installé, BMAD+ cherche un cerveau avant de rien créer. La première correspondance l’emporte.

Ordre de résolution du cerveau
OrdreSourceType enregistré
1La variable d’environnement BMAD_PLUS_BRAIN, si elle désigne un dossier (sinon un avertissement et la règle suivante).portfolio
2Un dossier _brain/ dans le dossier du projet ou l’un de ses parents.portfolio
3~/.bmad-plus/brain/, s’il existe.bmad-global
4~/.claude/memory/, seulement si c’est un dossier non vide.claude-memory
5Rien trouvé : un nouveau cerveau global est créé dans ~/.bmad-plus/brain/.bmad-global

Le résultat est écrit dans .agents/memory/.brain-link pour que chaque agent et chaque commande retrouve le même cerveau. Un cerveau trouvé est relié, jamais copié ni réécrit : ni duplication, ni écrasement. Un cerveau de portefeuille ou claude-memory garde ses propres conventions ; BMAD+ n’y crée ni identity.yaml ni projects/, et n’ajoute une entrée d’index du projet que lorsque le cerveau relié est le cerveau global de BMAD+. Les agents ont pour consigne de lire d’abord le point d’entrée propre d’un cerveau de portefeuille (README.md, AGENTS.md ou HOT.md) et d’en suivre l’organisation.

.agents/memory/.brain-link après une première installation sur une machine sans cerveau
{
  "linked_brain": "/work/demo/home/.bmad-plus/brain",
  "brain_type": "bmad-global",
  "linked_at": "2026-10-19T02:13:36.733Z"
}

Les fichiers, et quand les agents y touchent

Fichiers de la mémoire de projet
FichierCe qu’on y metÉcrit quand
decisions.mdFiches de type architecture : contexte, décision, justification, conséquences, statut (active, remplacée, annulée).Un choix non évident est fait. Si vous expliqueriez le « pourquoi » à un collègue, c’est une décision.
lessons.mdContexte, impact et la règle à suivre la prochaine fois.Quelque chose d’inattendu arrive ou une hypothèse se révèle fausse. Tout de suite, pas en fin de session.
patterns.mdProblème, forme, compromis, statut (candidat, puis validé).Une solution fonctionne et pourrait être réutilisée.
context.mdL’état vivant du projet, lisible en 30 secondes.Le projet change de façon significative (nouveau module, changement de stack, bascule d’architecture).
sessions/Une passation datée par session : YYYY-MM-DD-<topic>.md.La fin d’une session où un travail significatif a été fait.
Le format d’une entrée de decisions.md (d’après le gabarit installé)
### YYYY-MM-DD — <short title>
- **Context**: why the decision was needed
- **Decision**: what was chosen
- **Rationale**: why
- **Consequences**: what this unlocks / forecloses
- **Status**: active / superseded / rolled-back

Le protocole de lecture et d’écriture

  1. Début de session (lecture) : identity.yaml du cerveau, puis context.md, decisions.md et lessons.md du projet, et la dernière passation de sessions/ en cas de reprise. Un fichier absent est ignoré en silence : la mémoire est toujours facultative.
  2. En cours de session (écriture sur déclencheur) : décisions, leçons, patterns et contexte comme dans le tableau ci-dessus.
  3. Fin de session (persistance) : une passation dans sessions/, un context.md mis à jour, un coup d’œil aux leçons en attente, et un contrôle transversal qui ne fait que proposer des remontées vers le cerveau global.

Les quatre garde-fous

Les instructions générées de chaque agent portent quatre règles de conduite, adaptées d’un projet communautaire inspiré des conseils d’Andrej Karpathy (voir la page de confiance pour le crédit). Elles relient les fichiers de mémoire au comportement quotidien.

G1 à G4
RègleEn brefLien avec la mémoire
G1 Think Before CodingÉnoncer ses hypothèses ; en cas de doute, demander.Consulter decisions.md avant de redécider.
G2 Simplicity FirstLe minimum qui résout le problème, rien de spéculatif.Chercher une solution existante dans patterns.md.
G3 Surgical ChangesNe toucher que ce qu’il faut ; respecter le style existant.Consigner les surprises dans lessons.md.
G4 Goal-Driven ExecutionDéfinir les critères de réussite avant d’implémenter.Consigner les décisions non évidentes dans decisions.md.

Zecher, l’agent de mémoire

Zecher (le nom signifie « souvenir » en hébreu) est un agent utilitaire : vous ou un autre agent l’appelez quand la mémoire demande de l’attention. Ce n’est pas un orchestrateur. Ses règles : ne jamais supprimer de mémoire (archiver, consolider, jamais détruire), toujours demander avant toute remontée vers le cerveau, des dates ISO 8601 (YYYY-MM-DD, jamais « la semaine dernière »), des entrées concises lisibles en dix secondes, et des renvois entre une leçon et la décision qu’elle concerne.

Ce que vous pouvez demander à Zecher
Vous ditesCe qui se passe
« Zecher, consolide la mémoire »Audit : lit les fichiers de mémoire et les sessions ; propose les doublons à fusionner, les décisions actives de plus de 90 jours à revoir et les leçons à remonter vers le cerveau global ; n’applique que ce que vous approuvez ; archive les entrées périmées avec un préfixe [ARCHIVED].
« Zecher, scanne les projets dans ~/dev »Parcourt le dossier à la recherche de marqueurs de projet, détecte la stack et un statut, présente un tableau et vous laisse confirmer, modifier, ignorer ou installer BMAD+ pour chaque projet ; puis écrit l’index.
« Zecher, où en étions-nous ? »Reconstruit l’état du projet à partir de context.md, de la dernière passation, de l’entrée du projet dans le cerveau, des 10 derniers commits Git et du fichier d’instructions ; présente un bref résumé.
« Zecher, bilan de santé »Vérifie que les fichiers de mémoire existent et sont bien formés, signale les décisions actives anciennes et les leçons qui reviennent, et rapporte des statistiques.
« Zecher, que savons-nous sur [sujet] ? »Recoupe tous les fichiers de mémoire.
« Zecher, remonte la leçon [X] vers le global »Propose de déplacer un enseignement vers le cerveau ; ne le fait qu’avec votre approbation.

Les commandes : memory, scan et mem

Commandes liées à la mémoire
CommandeCe qu’elle fait
memory statusBilan de santé de la mémoire du projet et du cerveau relié, en pourcentage de contrôles.
memory exportÉcrit bmad-brain-export-<YYYY-MM-DD>.md dans le dossier du projet : une archive Markdown portable du cerveau.
scan [path]Trouve les projets, détecte les stacks et les indexe dans le cerveau global. --depth (4 par défaut), --active-days (30), --paused-days (180), --yes pour indexer sans demander. Statut : actif sous 30 jours, en pause de 30 à 180, archivé au-delà.
mem recall <query>Recherche classée dans le journal et les notes de mémoire. --limit (8 par défaut), --scope project|portfolio, --portfolio PATH, --json.
mem recall ... --ranking evidence --context-scope PATHSClassement facultatif qui revérifie les sources et l’acceptation Nexus et donne un coup de pouce borné aux preuves actuelles et pertinentes. Il exige un périmètre explicite non vide.
mem writeAjoute un événement structuré au journal .bmad/memory/journal.ndjson : --agent, --cli (claude-code, gemini-cli, codex-cli, cursor, opencode, aider, antigravity), --model, --task, --outcome success|failure|partial|abandoned, et signaux facultatifs --eval 0-1, --accept true|false|0-1, --ci pass|fail|0-1.
mem reinforce --pattern IDIntègre une récompense au score d’un motif (.bmad/memory/pattern-scores.json). Une remontée vers le cerveau global est seulement PROPOSÉE, quand la moyenne atteint 0,7 sur au moins 3 mises à jour. Ces signaux sont auto-déclarés et n’alimentent pas le classement par preuves.
mem observe --input FILEAssocie une section Markdown exacte de votre mémoire à une tâche Nexus déjà vérifiée et acceptée (entrée : exécution, tâche, fichier et titre, chemins du périmètre, votre interprétation, remplace ou contredit en option). Cela consigne une provenance ; cela ne prouve pas que la leçon a causé le succès.
mem outcomesListe les observations enregistrées et dit si chacune est encore éligible (un changement de source ou d’artefact, une substitution ou une contradiction rend une observation inéligible).
Écrire dans le journal, rappeler, exporter
npx bmad-plus mem write --agent atelier --cli claude-code --task "Design read for the Orbit landing page: one job, the loyalty card sign-up" --outcome success --ci pass
mem write: event 912e91734848 appended (2026-10-19T02:13:48.840Z)
  agent=atelier cli=claude-code model=- outcome=success
  task: Design read for the Orbit landing page: one job, the loyalty card sign-up
npx bmad-plus mem recall "loyalty card sign-up"
mem recall: 2 match(es) for "loyalty card sign-up" (scope: project)
  1. [0.707] event journal.ndjson#912e91734848
     atelier claude-code Design read for the Orbit landing page: one job, the loyalty card sign-up success {"ci":"pass"}
  2. [0.522] note decisions.md § 2026-10-18 — The landing page has one job, the loyalty card sign-up
     2026-10-18 — The landing page has one job, the loyalty card sign-up - **Context**: design read for the Orbit landing pa…
npx bmad-plus mem outcomes
mem outcomes: no observations.
npx bmad-plus memory export
◆  📦 Brain exported to: /work/demo/app/bmad-brain-export-2026-10-19.md
Avant le rappel, une entrée de décision au format ci-dessus a été ajoutée à la main à decisions.md. Sans tâche Nexus acceptée, il n’y a pas d’observation : le classement par preuves n’ajoute donc rien au classement simple.

Sortie capturée lors d’une exécution réelle. Source: bmad-plus 0.23.0, 2026-10-19

Ce qui n’est jamais écrasé

  • Installer et mettre à jour n’écrasent jamais decisions.md, lessons.md ni patterns.md, ne suppriment jamais sessions/, et gardent vos modifications de context.md et identity.yaml. Les fichiers manquants sont créés depuis des gabarits ; les existants sont laissés tels quels.
  • Un cerveau détecté est relié, pas copié ni réécrit. Les fichiers du cerveau global ne sont créés que s’ils manquent ; une ancienne installation interrompue pouvait laisser un « demi-cerveau », et le code actuel le complète de façon idempotente sans toucher à l’existant.
  • La désinstallation retire les fichiers dont BMAD+ est propriétaire et garde .agents/memory/, _bmad/config.yaml et tout ce qui est à vous ou modifié (voir le bloc suivant).
  • Un échec d’initialisation de la mémoire n’est pas fatal : si le dossier personnel est en lecture seule (conteneur, CI), l’installation continue et avertit.
  • Les écrivains partagés utilisent .bmad/memory/writer.lock. Après une interruption, inspectez le propriétaire et les fichiers avant toute reprise manuelle ; ne retirez pas le verrou d’un écrivain vivant, et des preuves de résultats corrompues ne sont jamais réinitialisées automatiquement.
Après la désinstallation, la mémoire est toujours là
npx bmad-plus uninstall --yes
●  BMAD+ v0.23.0 (installed 2026-10-19)
●  Selected packs: core, memory
◇  ✅ BMAD+ removed (60 items)
└  Project memory, settings, and unknown or modified files have been preserved.
find . -path ./.git -prune -o -print | sort
./.agents/memory/.brain-link
./.agents/memory/context.md
./.agents/memory/decisions.md
./.agents/memory/lessons.md
./.agents/memory/patterns.md
./.agents/memory/sessions
./.bmad/memory/journal.ndjson
./_bmad/config.yaml
./bmad-brain-export-2026-10-19.md
Les dossiers qui ne contenaient que des répertoires vides et les fichiers propres au projet (README.md, docs) sont omis de cet extrait. Le cerveau global du dossier personnel n’a pas été touché.

Sortie capturée lors d’une exécution réelle. Source: bmad-plus 0.23.0, 2026-10-19

Reprendre un projet à froid avec Zecher

À utiliser au début d’une session quand vous ou l’assistant avez perdu le fil, avec le pack Memory installé.

Dans votre assistant IA
Zecher, où en étions-nous ? Reconstruis l’état de ce projet à partir de context.md, de la dernière passation de session, de l’entrée du cerveau et des derniers commits. Dis-moi ce qui a été décidé, ce qui est inachevé et quelles leçons s’appliquent à la prochaine tâche. Dis clairement ce que tu n’as pas trouvé, sans deviner.

Ce que vous devriez obtenir Un bref « état du projet » : ce qu’est le projet, sa stack, ce sur quoi on a travaillé en dernier, les questions ouvertes de la dernière session, les problèmes connus et les leçons. Les sources absentes sont nommées comme absentes. Rien n’est écrit sauf si vous demandez une passation.

Mettre la mémoire en ordre sans rien perdre

À utiliser quand les fichiers de mémoire ont grossi et contiennent des entrées répétées ou périmées.

Dans votre assistant IA
Zecher, consolide la mémoire. D’abord, audite seulement : liste les doublons et les décisions actives de plus de 90 jours, et propose ce qu’il faut fusionner, archiver ou remonter vers le cerveau global. N’applique rien tant que je n’ai pas approuvé chaque changement, archive au lieu de supprimer, et écris les dates en YYYY-MM-DD.

Ce que vous devriez obtenir Une liste de constats (N doublons, M entrées périmées, K candidats à la remontée vers le cerveau global) et une question par changement proposé. Après votre approbation, les doublons sont fusionnés en gardant la version la plus riche, les entrées périmées sont déplacées en bas avec un préfixe [ARCHIVED] et les enseignements approuvés remontent vers le cerveau. Rien n’est supprimé.

Voir aussi