La mémoire du projet¶
Mémoire¶
Le groupe grimoire memory pilote le sous-système mémoire. Concepts, backends
et projections : Système de mémoire.
| Commande | Description |
|---|---|
grimoire memory status |
Santé du backend, nombre d'entrées, configuration |
grimoire memory up |
Mettre en place la stack mémoire complète ; --start démarre (Docker) les services manquants — consentement explicite |
grimoire memory doctor |
Entretien minimal : santé des couches, pile démarrée ou non, dérive du graphe (nœuds orphelins), purge sur --apply |
grimoire memory remember <texte> |
Écriture typée idempotente — même texte et même agent n'écrivent qu'une fois ; --source (chemin, task:<id>, session:<id>, commit:<sha>) dit d'où vient le fait, sans quoi c'est une saisie libre, jamais « à jour » |
grimoire memory recall <requête> |
Rechercher parmi les mémoires typées |
grimoire memory search <requête> |
Recherche par mot-clé ou similarité sémantique — fusionne vectoriel et BM25 (RRF) dès que le projet possède les deux ; --no-hybrid force le backend seul. Chaque résultat porte sa source, ses dates et sa fraîcheur (à jour, périmé, non vérifié, hypothèse) ; --include-stale ajoute les sources disparues, --include-superseded les décisions remplacées |
grimoire memory supersede <ancien> <nouveau> |
Remplacer une décision : l'ancienne n'est plus servie mais reste lisible avec --include-superseded ; --reason est tracée dans le journal des écritures |
grimoire memory retract <id> --reason <pourquoi> |
Retirer un souvenir du service sans le supprimer : plus rendu par search, recall, list ni par le MCP (sauf --include-retracted), lisible avec qui, quand et pourquoi (memory show <id>). Refusé sur un backend qui ne sait pas modifier un souvenir et sur le souvenir d'un autre projet |
grimoire memory unretract <id> |
Annuler un retrait |
grimoire memory tags <id> --add a,b --remove c / --set x,y |
Ajouter, retirer ou remplacer les étiquettes (le texte ne change pas) |
grimoire memory show <id> |
Lire un souvenir par identifiant avec son état (live, superseded, retracted), retiré ou non |
grimoire memory reads [--days 7] |
Ce que le journal des lectures dit : combien de fois chaque souvenir a été servi (recall_count_7d), jamais de contenu |
grimoire memory list |
Lister les mémoires stockées, paginées ; remplacés et retirés masqués sauf --include-superseded / --include-retracted |
grimoire memory delete <id> |
Supprimer une entrée — définitif, contrairement à retract. Avec Neo4j, le contenu du nœud est effacé (pierre tombale vide) ; memory graph purge-orphans --apply retire ensuite la pierre tombale |
grimoire memory gc |
Consolider et compacter |
grimoire memory export / import |
Exporter vers JSON, réimporter |
grimoire memory reindex-lexical |
Reconstruire l'index lexical compagnon |
grimoire memory gate |
Gate de parité Memory OS entre Weaviate et Neo4j |
grimoire memory graph / vector |
Synchroniser et vérifier les projections |
grimoire memory bundle |
Construire, installer et vérifier les bundles de modèles d'embedding |
grimoire memory shared |
Mémoire transverse : ce qui reste vrai d'un projet à l'autre |
grimoire memory rules add / list / check |
Règles parsables par couche (ALWAYS\|NEVER <verbe> <objet> [@portée]) : conflits décidés par le code, plafond rules.max_tokens_per_layer, écriture via la frontière de confiance |
grimoire memory rules explain <chemin> |
Règles qui valent pour un fichier : rang, couche d'origine (organization > team > project > agent), ce qui la fait céder, et si host sync la livre (couches team et project seulement) |
grimoire memory rules pack list / show <id> / install <id> [--layer] / verify |
Packs de règles par stack (python) : chaque règle porte un vérificateur lu sur le code du projet, ou se déclare advisory (un pack de plus de 50 % d'advisory est refusé). install écrit les règles par la frontière de confiance ; verify rend pass, fail ou unevaluated par règle et sort en code 1 si l'une est violée |
grimoire memory rules propose / proposals [--pending] / accept <id> [--layer] / reject <id> |
Règles candidates tirées des refus de gate observés (TraceLedger, recette grimoire.task-gate) : une signature (transition, preuve manquante) vue sur au moins 2 tâches distinctes devient ALWAYS provide <preuve> before <transition>, avec ses citations de preuve. Rejouer propose ne réécrit rien ; accept passe par les contrôles de rules add (un refus n'écrit rien) ; une proposition refusée ne revient qu'une fois ses tâches doublées. Aucune question n'est posée pendant un flow |
grimoire memory rules effect [--min-tasks 5] |
Effet de chaque règle acceptée sur sa signature : before_rate, after_rate, n_before, n_after, status (effective, unproven, harmful, test exact de Fisher unilatéral à 5 %). Sous le seuil de tâches de chaque côté, unproven quel que soit l'écart ; retire_suggested sur harmful ou sur unproven après 20 tâches. JSON reproductible, aucun score de confiance |
grimoire memory facts / diary |
Graphe de faits temporels, journaux d'agents |
grimoire memory migrate |
Planifier et exporter les migrations Memory OS |
grimoire memory migrate run [--source B] [--source-collection C] [--project P] [--overwrite] [--all-projects] [--apply] |
Copier les souvenirs d'un autre backend, ou d'une autre collection du même backend, par upsert sous leur identifiant d'origine (superseded_by valide, created_at conservé). Ne crée que les identifiants absents de la cible : une relance ne défait pas une décision revue ; --overwrite remplace explicitement (l'aperçu en donne le nombre). Un registre des identifiants déjà copiés (_grimoire/_memory/migration/copied-*.json, par couple source/cible) empêche de recréer un souvenir copié puis supprimé dans la cible, même avec --overwrite. Un souvenir refusé par la cible (filtre d'injection, identifiant non UUID vers Qdrant, réponse 400) est listé, l'aperçu l'annonce, la copie continue ; si tout est refusé la commande sort en code 1. Une source inexistante est refusée sans rien créer. --project ne copie que metadata.project_name = P ; sur un segment partagé (--source-collection), sans --project la commande refuse (souvenirs sans project_name compris) tant que --all-projects n'est pas passé. Aperçu sans --apply |
grimoire memory split [--source-collection C] [--projects A,B] [--export F] [--allow-unassigned] [--apply] |
Découper un segment partagé entre projets en une collection <C>-<projet> par project_name, identifiants conservés. Aperçu par défaut ; --apply refuse si une cible désigne le même store que la source (avec Weaviate, weaviate_collection est résolu), si deux projets ne diffèrent que par la casse ou la ponctuation (même collection cible), si la source n'existe pas ou s'il reste des souvenirs sans project_name (ils deviendraient invisibles ; --allow-unassigned le dit explicitement). Puis : export JSON de la source, copie par upsert, vérification des comptes et des identifiants, memory.collection_prefix repointé dans chaque projet du registre qui lisait ce segment (tout ou rien : tout est rendu et écrit à côté avant le moindre remplacement). La source n'est jamais supprimée |
grimoire memory graph sync-code --backend neo4j\|codegraph-neo4j |
Destination du graphe de code : neo4j (défaut, graphe mémoire, celui que lisent verify et la fraîcheur) ou codegraph-neo4j (Neo4jCodeGraphBackend, requêtes d'impact Cypher) |
grimoire memory graph backfill-project [--paths src] [--collection C] [--apply] |
Rattrape la clé de projet et les identifiants préfixés <projet>:: des nœuds Neo4j antérieurs. Aperçu chiffré (avec la liste des conflits) sans --apply. --paths doit être une racine de code propre au projet (refus pour la racine du projet, un dossier hors projet ou inexistant) ; seuls les nœuds sans project sont attribués, jamais ceux d'un autre projet |
grimoire memory taxonomy |
Taxonomie aile / salle / pièce |