---
title: "Mémoire de l'agent"
description: "Mémoire durable de l'agent sur l'utilisateur et le projet : remember écrit des notes lisibles, recall tient le budget, search déduplique avant l'écriture."
---

# 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_user` inscrit 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_project` inscrit 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`](/docs/agents/intent-tools/), 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.

> [!tip] La discipline de déduplication
> 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](/docs/concepts/versioning/) 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](/docs/agents/context-pins/) — comment mettre une catégorie de mémoire en sourdine et ce qui se charge au démarrage.
- [Audit de récupération](/docs/agents/audit/) — ce que l'agent a cherché via `search`/`recall` et s'il l'a trouvé.
- [Outils d'intention](/docs/agents/intent-tools/) — l'ensemble complet des outils.
