[Shubham Saboo](https://x.com/Saboo_Shubham_) (un PM Google) [open-source un agent de mémoire Always-On](https://github.com/GoogleCloudPlatform/generative-ai/tree/main/gemini/agents/always-on-memory-agent) la semaine dernière dans le cadre du dépôt GCP generative-ai. [VentureBeat l'a couvert](https://venturebeat.com/orchestration/google-pm-open-sources-always-on-memory-agent-ditching-vector-databases-for) comme signal sur la direction que prend l'infrastructure d'agent. Il s'agit d'un système de mémoire persistante qui s'exécute 24 heures sur 24 et 7 jours sur 7 en arrière-plan, ingérant des fichiers, consolidant selon une minuterie et répondant aux requêtes. Aucune base de données vectorielles. Aucune intégration. Juste un LLM qui lit, réfléchit et écrit de la mémoire structurée sur SQLite.

Le projet valide quelque chose que j'ai développé avec [Neotoma](https://github.com/markmhendrickson/neotoma) : la mémoire persistante pour les agents est un besoin réel et croissant. Mais les deux projets font des choix architecturaux opposés. Cet article les compare.

## Qu'est-ce que l'agent de mémoire permanent

Le projet est une implémentation de référence construite avec [Google ADK (Agent Development Kit)](https://google.github.io/adk-docs/) et [Gemini 3.1 Flash-Lite](https://ai.google.dev/gemini-api/docs/models). Il s'exécute comme un processus d'arrière-plan léger avec trois sous-agents spécialisés : un pour l'ingestion, un pour la consolidation et un pour les requêtes.

1. **Ingestion.** Un observateur de fichiers surveille un répertoire de boîte de réception. Déposez un fichier et l’agent le récupère. Il accepte également les entrées via HTTP POST. Il gère le texte, les images, l'audio, la vidéo et les PDF. Le LLM extrait des résumés, des entités, des sujets et des scores d'importance.

2. **Consolidation.** Sur une minuterie, l'agent de consolidation lit toutes les mémoires stockées, trouve des connexions et des modèles entre elles, compresse les éléments associés et écrit de nouvelles informations synthétisées. Cela s'exécute en arrière-plan sans invite.

3. **Requête.** Vous posez une question. L'agent de requête lit les souvenirs pertinents et les informations consolidées, synthétise une réponse et la renvoie avec des citations vers des enregistrements de mémoire spécifiques.

Le stockage est SQLite. Pas de base de données vectorielle, pas d'index d'intégration. L'architecture parie qu'un LLM peut gérer la récupération directement sur des enregistrements de texte structuré sans avoir besoin de recherche de similarité.

## Là où il excelle

**Simplicité.** Clonez le dépôt, définissez une clé API Gemini, exécutez-le. Observateur de fichiers, API HTTP et tableau de bord Streamlit. Dépendances minimales et aucune infrastructure à gérer au-delà du processus unique. Pour les développeurs explorant la mémoire des agents avec Gemini, il s’agit du chemin le plus rapide vers une démo fonctionnelle.

**Le récit « pas de base de données vectorielle ».** La suppression de la base de données vectorielle réduit la complexité opérationnelle et conceptuelle. Aucun modèle d'intégration à choisir, aucun index à maintenir, aucun réglage de récupération. Pour les déploiements à petite échelle, il s’agit d’une véritable simplification.

**Consolidation active.** La consolidation basée sur un minuteur est la partie la plus distinctive. La plupart des systèmes de mémoire sont passifs : stockent des choses, récupèrent des choses. Celui-ci connecte, compresse et synthétise activement. Il trouve des modèles sur lesquels vous n'avez pas demandé. Cela trouve un écho chez tous ceux qui veulent « une mémoire qui pense » plutôt qu’une mémoire qui attend.

## Là où les approches divergent

L'agent de mémoire permanent et Neotoma partagent un objectif (mémoire d'agent persistante) mais divergent sur presque toutes les décisions de conception. Les divergences ne sont pas fortuites. Ils reflètent différentes prémisses de départ sur ce pour quoi la mémoire doit être optimisée.

### Ingestion automatique ou explicite

L'observateur de fichiers est automatique. Tout ce qui arrive dans la boîte de réception est traité. Il n'y a aucune étape d'approbation, aucune validation du schéma d'abord, aucune confirmation de l'utilisateur avant les extractions et les magasins LLM. Neotoma adopte l'approche inverse : rien n'entre dans le système à moins qu'un agent ou un utilisateur ne l'écrive explicitement via MCP. Pour les notes personnelles, l’ingestion automatique est pratique. Pour tout ce qui a des exigences de confidentialité ou de conformité, le contrôle explicite est la valeur par défaut la plus sûre.

### Qui décide de ce qu'il faut retenir

Neotoma s'appuie sur l'agent client pour appeler le stockage mémoire. L'agent avec qui vous parlez (ChatGPT, Claude, Cursor) décide de ce qui mérite d'être retenu et comment le structurer. Lorsqu'il conclut qu'un fait, un contact ou une tâche doit persister, il invoque l'opération de stockage via MCP. La responsabilité de « ce qu'il faut retenir » reste dans la couche agent, dans le même processus que votre conversation.

L'agent de mémoire permanent répartit cette responsabilité entre des sous-agents spécialisés. L'agent d'ingestion décide ce qu'il faut extraire des fichiers. L'agent de consolidation décide ce qu'il faut fusionner et quelles connexions établir. L'agent de requête décide quoi renvoyer. « Ce qu'il faut retenir » et « comment » sont répartis entre ces sous-agents, qui fonctionnent indépendamment de la conversation. L'utilisateur n'approuve pas chaque décision. Les sous-agents les fabriquent en arrière-plan.

### Extraction basée sur LLM ou déterministe

L'Always-On Memory Agent utilise le LLM pour tout : extraire des entités, attribuer une importance, générer des résumés. Exécutez deux fois la même extraction sur le même fichier et les résultats peuvent différer. Neotoma utilise [l'extraction déterministe basée sur le schéma](/posts/truth-layer-agent-memory). La même entrée produit les mêmes entités, les mêmes identifiants canoniques, les mêmes relations. L'interprétation LLM facultative s'exécute au-dessus de cette couche déterministe, et non à sa place.

### Consolidation vs vérité immuable

L'agent de consolidation décide des éléments à fusionner, des connexions à établir et des éléments à compresser. Il mute la mémoire au fil du temps. Les vieux souvenirs sont absorbés par de nouvelles idées synthétisées. Le néotome ne se consolide pas. Il s'ajoute. Chaque observation est immuable. L’histoire est événementielle. Si vous avez besoin de voir ce qui a changé, quand et pourquoi, la piste complète est là. Rien n'est écrasé ou compressé.

### Plateforme unique ou multiplateforme

Le projet est construit sur Gemini et Google ADK. La mémoire réside dans un fichier SQLite local accessible uniquement via cette pile d'agents spécifique. Neotoma expose la mémoire via MCP, ce qui signifie que les mêmes entités sont accessibles depuis ChatGPT, Claude, Cursor et tout autre outil compatible MCP. Une couche mémoire, plusieurs consommateurs.

### Aucune provenance vs lignée complète

Les enregistrements de mémoire dans Always-On Memory Agent contiennent des résumés et des entités extraites, mais ne remontent pas au fichier, à la ligne ou à la session spécifique qui les a produits. Si une information consolidée est erronée, il n’y a aucune piste d’audit à suivre. Dans Neotoma, chaque champ de chaque entité renvoie à une observation source. Vous pouvez vérifier n’importe quel fait jusqu’à son origine.

### Compromis d'échelle

Sans intégrations ni index vectoriel, le système lit les enregistrements de texte structuré directement à l'aide du LLM. Cela fonctionne à petite échelle. À mesure que les réserves de mémoire augmentent, cette approche risque de ne plus tenir. La suppression de la base de données vectorielle ne supprime pas la conception de récupération. Il déplace la complexité dans la fenêtre contextuelle LLM. Neotoma utilise des requêtes structurées sur des entités typées, qui évoluent indépendamment des limites du contexte LLM.

## Substrat vs agent

La distinction la plus claire est le rôle. L'agent de mémoire permanente est un agent. Il ingère automatiquement, consolide selon un calendrier et synthétise les réponses. Il possède sa propre boucle de raisonnement. Il décide quoi fusionner, quelles connexions établir et quand compresser.

Neotoma n'est pas un agent. C'est un substrat. Il stocke les entités typées avec des identifiants canoniques. Il conserve la provenance. Il répond à des requêtes déterministes. Il ne décide rien tout seul. Aucune ingestion en arrière-plan. Pas de consolidation automatique. Aucun traitement basé sur une minuterie. Les agents le lisent et y écrivent via [MCP](/posts/agentic-search-and-the-truth-layer). Le raisonnement se déroule dans la couche agent. La vérité vit dans le substrat.

Cela est important en raison de ce qui se passe lorsque l’agent se trompe. Si la consolidation de l’agent de mémoire Always-On produit une mauvaise information, cette information fait désormais partie de la mémoire. Il n’y a pas de couche distincte à vérifier. L'agent est la vérité.

Avec une couche de vérité en dessous, vous pouvez retracer ce que l'agent a lu, quand il l'a lu et ce qu'il a répondu. Si la nouvelle idée est erronée, vous pouvez revenir en arrière. Le résultat de l’agent de consolidation est une observation au-dessus de l’état déterministe, et non une mutation de celui-ci.

| Dimensions | Agent de mémoire toujours actif | Couche de vérité (Neotoma) |
|---------------|--------------|------------------------|
| Rôle | Agent avec boucle de raisonnement | Substrat sans comportement d'agent |
| Qui décide quoi stocker | Sous-agents spécialisés (ingestion, consolidation) | Agent client (via MCP) |
| Ingestion | Automatique (observateur de fichiers, API) | Explicite uniquement (MCP, CLI, téléchargement) |
| Extraction | Piloté par LLM ; probabiliste | Le schéma d'abord ; déterministe |
| Consolidation | Consolidation LLM basée sur un minuteur | Aucun; vérité immuable, mises à jour événementielles |
| Provenance | Basique (source/résumé dans les enregistrements) | Lignée complète ; chaque champ remonte à la source |
| Plateforme | Gemini/Google ADK uniquement | Multiplateforme via MCP (ChatGPT, Claude, Cursor) |
| Confidentialité | Pas positionné comme étant axé sur la confidentialité d'abord | Contrôlé par l'utilisateur ; pas d'accès au fournisseur |
| Restauration | Non; la mémoire est mutée par la consolidation | Oui; en ajout uniquement, versionné, réversible |
| Maquette | LLM lit tous les enregistrements ; délimité par le contexte | Requêtes structurées sur des entités typées |

## Comment ils pourraient travailler ensemble

Les deux approches ne s’excluent pas mutuellement. Un agent de consolidation et une couche de vérité résolvent différents problèmes. On trouve des modèles. L’autre maintient la confiance. L'architecture intéressante combine les deux.

Le croquis est simple. Un agent de consolidation (comme celui de Always-On Memory Agent) lit les entités d'une couche de vérité via MCP. Il a accès à l’état structuré complet : entités typées, relations, chronologies, provenance. Il exécute sa boucle de recherche de modèles sur cet état, à la recherche de connexions, de lacunes ou d'informations que l'utilisateur n'a pas demandées. Lorsqu'il trouve quelque chose, il réécrit le résultat dans la couche de vérité en tant que nouvelle observation, étiquetée avec ses entités sources et son raisonnement.

La couche de vérité traite ces informations de la même manière qu’elle traite toute autre écriture. Il l'enregistre comme une observation avec une provenance complète : quelles entités l'agent a lu, quand, ce qu'il a conclu. L’insight devient une partie du graphique d’entité. Si les informations sont fausses, vous pouvez voir exactement ce que l'agent a consommé, retracer le raisonnement et annuler l'observation sans affecter les entités sous-jacentes à partir desquelles il a lu.

Ceci est différent du fonctionnement actuel de la consolidation dans Always-On Memory Agent. Là, l'agent de consolidation mute directement la mémoire. Les vieux souvenirs sont absorbés dans de nouveaux enregistrements synthétisés. L'état précédent a disparu. Si la synthèse était erronée, il n’y a pas de couche distincte avec laquelle comparer.

Avec une couche de vérité en dessous, la consolidation devient une opération non destructive. L'agent ajoute une couche d'interprétation en plus de l'état déterministe. L’État lui-même reste immuable. Vous bénéficiez des avantages de la découverte active de modèles (la force de l'agent de mémoire permanent) ainsi que des avantages de l'auditabilité et de la restauration (la force de la couche de vérité). Intelligence au-dessus, confiance en-dessous.

## Ce que cela valide

L'agent de mémoire Always-On est une implémentation de référence et non un produit. Ce que cela confirme, c’est que la demande en mémoire d’agent dynamique et persistante est réelle. "[Vector DB plus RAG](/posts/why-agent-memory-needs-more-than-rag)" n'est pas le seul modèle de récupération. Les [tendances structurelles à l’origine de cela](/posts/six-agentic-trends-betting-on) sont claires : les agents deviennent stateful, les erreurs sont tarifées et les plateformes restent opaques. Le projet indique que l'industrie s'oriente vers des systèmes de mémoire toujours actifs qui vont au-delà du simple stockage et de la récupération.

Là où les deux projets s'accordent : la mémoire passive ne suffit pas. Là où ils ne sont pas d'accord : si la couche mémoire elle-même doit raisonner, ou si le raisonnement doit avoir lieu dans une couche distincte au-dessus de l'état déterministe. C’est actuellement une question centrale dans l’architecture de la mémoire des agents. Le marché soutiendra probablement les deux approches. Je m'attends à ce que l'architecture converge vers des agents de consolidation qui pensent, fonctionnant au-dessus de couches de vérité auxquelles vous pouvez faire confiance.

## Ce que je construis

Je construis [Neotoma](https://github.com/markmhendrickson/neotoma) comme couche de confiance. Entités typées, identifiants canoniques, fusion déterministe, provenance, accès multiplateforme via MCP. Je l'utilise quotidiennement sur ChatGPT, Claude et Cursor. La [version développeur](/posts/neotoma-developer-release) est désormais disponible sur [neotoma.io](https://neotoma.io).

L'exemple de Google montre que le secteur converge vers la mémoire d'agent persistante. La question ouverte n’est pas de savoir si les agents s’en souviendront, mais comment. Capacité ou gouvernance. Agent ou substrat. Consolidation probabiliste ou vérité déterministe. Je parie sur ce dernier.