Mémoire de l'agent
Dans Notarium, la mémoire de l'agent n'a rien d'une magie cachée ni d'une base à part : ce sont de simples notes de classe agent-memory, que l'agent rédige à partir de ses observations et que vous pouvez lire, corriger et supprimer. L'agent consigne des faits via remember_about_user et remember_about_project, et va chercher du contexte via recall. La discipline essentielle : chercher avant d'écrire, pour ne pas engendrer de doublons.
Deux axes : sur l'utilisateur et sur le projet
La mémoire se déploie sur deux axes orthogonaux :
- Sur l'utilisateur —
remember_about_userinscrit des faits pérennes vous concernant (préférences, contexte, travail en cours) dans la mémoire privée de votre domaine personnel. Elle reste la même quel que soit l'espace où vous travaillez — elle ne se mélange pas à chaque espace. - Sur le projet —
remember_about_projectinscrit de la mémoire sur un projet précis dans son sous-répertoire. Symétrique à l'écriture sur l'utilisateur, mais rattachée au projet.
Les deux axes reposent sur la classe agent-memory. L'agent ne choisit ni la classe, ni le dossier, ni l'espace : c'est l'outil lui-même qui impose tout cela. La connaissance partagée, qui doit vivre dans l'arborescence du projet en tant que user-doc, est écrite par un outil distinct, create_note, et non par « remember ».
Un fichier par catégorie, pas un fichier par observation
remember_about_user(observation, category) ajoute l'observation au fichier de la catégorie au lieu d'engendrer un micro-fichier pour chaque fait. category est une étiquette (« preferences »), pas un chemin. Une nouvelle catégorie, c'est un nouveau fichier. Le summary optionnel est un condensé d'une ligne de la catégorie, qui alimente l'index dérivé du profil.
Corriger ou supprimer un seul fait consigné, c'est simplement éditer une note ordinaire : edit_note par l'id de la note de mémoire (retourné par remember_*) en mode findReplace (un content vide retire l'extrait) ou en mode replace pour toute la catégorie. Il n'existe pas d'« adressage par observation » distinct — la mémoire s'édite avec les mêmes modes fondés sur les mots que n'importe quelle note.
recall ≠ search
Les deux outils lisent, mais résolvent des problèmes différents :
search | recall | |
|---|---|---|
| Ce qu'il renvoie | des extraits classés avec score et path | un bloc de contexte cohérent tenant dans un budget de tokens |
| Portée | les notes pertinentes | les notes pertinentes plus leurs voisines dans le graphe (depth sauts à travers le graphe) |
| Mémoire | voit la mémoire (pour la déduplication) | puise dans la connaissance et dans la mémoire personnelle |
| Quand l'appeler | trouver quelque chose de précis, vérifier avant d'écrire | assembler du contexte autour d'un sujet à traiter |
recall est plus riche : il parcourt le graphe autour de ce qu'il a trouvé et compose le résultat dans la limite de budgetTokens, tandis que maxPerSource empêche une note volumineuse de dévorer tout le bloc. search est précis : c'est le mécanisme même derrière « chercher avant d'écrire ».
Chercher avant d'écrire
La mémoire est la seule classe sans protection contre les doublons fondée sur le titre ; c'est pourquoi search couvre délibérément aussi la mémoire de l'agent. Cherchez toujours avant d'écrire : cela déduplique à la fois la connaissance et la mémoire.
Avant remember_*, appelez search sur le sujet du fait. Si la catégorie existe déjà, ajoutez-y via ce même remember_* (il ajoute) ou corrigez-la avec edit_note, au lieu de créer un synonyme.
Ce que voit le propriétaire
La mémoire est masquée de la navigation ordinaire (l'arborescence, le Fil, la recherche courante), mais elle ne vous est pas cachée : elle apparaît via une vue Memory dédiée dans l'arborescence de l'explorateur (les notes s'ouvrent comme n'importe quelle autre, à l'adresse /m/<id>), et vous pouvez mettre une catégorie en sourdine dans Agents → Context. L'entrée du journal des révisions montre exactement ce que l'agent a consigné — c'est ainsi que vous repérez ce qu'une injection aurait pu y glisser. Vous ne pouvez pas réorganiser la mémoire : la section appartient à l'agent (un ensemble plat plus un index dérivé), mais la déplacer est techniquement sans risque — l'identité tient à l'id de la note.
Pour aller plus loin
- Jeux de contexte et épingles — comment mettre une catégorie de mémoire en sourdine et ce qui se charge au démarrage.
- Audit de récupération — ce que l'agent a cherché via
search/recallet s'il l'a trouvé. - Outils d'intention — l'ensemble complet des outils.