Memory Layer : Comment les agents stockent et récupèrent la mémoire

Couche qui stocke et restitue une memoire pertinente entre etapes et sessions sous controle de limites, qualite et vie privee.
Sur cette page
  1. Idee en 30 secondes
  2. Probleme
  3. Solution
  4. Comment Fonctionne Memory Layer
  5. Dans le Code, Cela Ressemble a Ceci
  6. Comment Cela se Voit Pendant l Execution
  7. Quand c est Adapte - et Quand Ce Ne l est Pas
  8. Adapte
  9. Non adaptee
  10. Problemes et Echecs Typiques
  11. Comment Cela se Combine avec les Autres Patterns
  12. En Quoi c est Different de Agent Runtime
  13. En Bref
  14. FAQ
  15. Et Ensuite

Idee en 30 secondes

Memory Layer n est pas juste un stockage de faits, mais une couche controlee de selection, ecriture et restitution de memoire.

L agent ne doit pas envoyer tout l historique a chaque requete. Il lit dans la memoire seulement ce qui aide vraiment au pas suivant. Memory Layer ne doit pas accumuler tout sans filtre. Sa mission est de renvoyer peu, mais juste.

Quand c est utile : quand l agent travaille en serie d etapes ou de sessions, ou coherence et personnalisation comptent.

LLM ne peut voir que ce qui est dans le contexte courant. Memory Layer decide ce qu il faut ramener du passe.


Probleme

Sans couche memoire separee, l agent travaille presque toujours "de zero".

Cela cree des problemes typiques :

  • l agent redemande ce qu il sait deja ;
  • les reponses deviennent incoherentes entre sessions ;
  • trop d historique inutile entre dans le contexte ;
  • les faits importants se perdent dans le bruit ;
  • des doublons ou versions conflictuelles du meme fait s accumulent en memoire ;
  • l agent personnalise les reponses sur des donnees obsoletes ou faiblement confirmees.

Resultat : les couts, la latence et les erreurs de reponse augmentent.

Solution

Ajouter Memory Layer comme couche separee de gestion memoire : quoi stocker, quoi renvoyer au contexte, quoi supprimer.

Elle separe la logique "comment se souvenir" de la logique "comment penser", donc l agent est plus stable.

Analogie : comme des notes de manager sur un client.

Le manager ne garde pas tout l archive des echanges en tete. Il ressort des notes courtes pertinentes : ce qui compte pour cette conversation.

Memory Layer fait pareil et renvoie a l agent seulement la memoire utile au bon moment.

Comment Fonctionne Memory Layer

Memory Layer est une couche controlee entre Agent Runtime et memory store qui decide quoi lire, ecrire et nettoyer.

Diagram
Description du flow complet : Retrieve → Rank → Inject → Write → Compact

Retrieve
Runtime demande a Memory Layer des faits pour le pas courant.

Rank
La couche selectionne les enregistrements les plus pertinents par theme, fraicheur et importance.

Inject
La memoire selectionnee est injectee dans le contexte avant l appel LLM.

Write
Apres le pas agent, la couche decide s il faut stocker un nouveau fait selon utilite, stabilite, sensibilite, source et TTL.

Compact
Les enregistrements anciens ou dupliques sont compresses, mis a jour ou supprimes selon les regles TTL/limites.

Ce cycle se repete a chaque etape et aide l agent a garder la coherence entre etapes et sessions.

Dans le Code, Cela Ressemble a Ceci

PYTHON
class MemoryLayer:
    def __init__(self, store, max_items_per_user=200):
        self.store = store
        self.max_items_per_user = max_items_per_user

    def retrieve(self, user_id: str, query: str, top_k: int = 4):
        # Renvoyer seulement la memoire pertinente, pas tout l historique.
        items = self.store.search(
            user_id=user_id,
            query=query,
            limit=top_k,
            min_score=0.7,
            exclude_expired=True,
        )
        return [item["text"] for item in items]

    def write(
        self,
        user_id: str,
        observation: str,
        tags: list[str],
        source: str = "user",
        sensitivity: str = "low",
        ttl_days: int = 30,
    ):
        if not self._worth_storing(
            observation=observation,
            tags=tags,
            source=source,
            sensitivity=sensitivity,
            ttl_days=ttl_days,
        ):
            return

        self.store.insert(
            user_id=user_id,
            text=observation,
            tags=tags,
            source=source,
            sensitivity=sensitivity,
            ttl_days=ttl_days,
        )
        self.store.enforce_limit(user_id=user_id, max_items=self.max_items_per_user)

    def _worth_storing(
        self,
        observation: str,
        tags: list[str],
        source: str,
        sensitivity: str,
        ttl_days: int,
    ) -> bool:
        text = observation.strip()
        if len(text) < 20:
            return False

        # Ne pas stocker les courtes phrases de service.
        if text.lower() in {"ok", "merci", "fait", "pret"}:
            return False

        # Ne pas ecrire de donnees sensibles dans la memoire standard.
        if sensitivity == "high":
            return False

        # Faire confiance seulement aux sources definies.
        if source not in {"user", "tool", "policy"}:
            return False

        # La memoire doit etre stable et utile, pas du bruit aleatoire.
        stable_tags = {"preference", "constraint", "profile", "goal"}
        if not any(tag in stable_tags for tag in tags):
            return False

        if ttl_days < 1 or ttl_days > 365:
            return False

        return True

Comment Cela se Voit Pendant l Execution

TEXT
Requete : "Prepare-moi un plan alimentaire pour la semaine"

Step 1
Agent Runtime : appelle Memory Layer.retrieve(...)
Memory Layer : renvoie faits pertinents -> ["allergie aux cacahuetes", "regime vegetarien"]
Agent Runtime : ajoute ces faits au Context
Agent Runtime : appelle LLM.decide(...)

Step 2
LLM : renvoie -> final_answer (plan sans cacahuetes ni viande)
Agent Runtime : transmet nouvelle observation a Memory Layer.write(...)
Memory Layer : stocke le fait -> "utilisateur veut budget jusqu a $80/semaine"

Memory Layer aide l agent a ne pas oublier l important et a ne pas surcharger le contexte de details inutiles.

Quand c est Adapte - et Quand Ce Ne l est Pas

Memory Layer est utile quand l agent doit memoriser des faits entre etapes ou sessions. Pour des requetes one-shot, elle est souvent inutile.

Adapte

SituationPourquoi Memory Layer est adaptee
L agent travaille avec l utilisateur sur plusieurs sessionsLa memoire conserve les faits importants et supprime les clarifications repetitives.
Une personnalisation de la reponse est necessaireLa couche renvoie preferences et contraintes utilisateur avant le pas LLM.
L agent execute un long workflow multi-step dans un meme runLa couche conserve conclusions intermediaires et faits importants sans gonfler le contexte en permanence.
Le contexte grossit vite et a des limitesAu lieu de tout l historique, l agent recoit seulement les top-k faits pertinents.

Non adaptee

SituationPourquoi Memory Layer n est pas adaptee
Requete one-shot sans suite de dialogueUne couche memoire separee ajoute de la complexite sans benefice visible.
Faits necessaires qui changent vite : prix, statuts, disponibilite, donnees liveIci, il vaut mieux faire fresh retrieval ou un tool call que compter sur la memoire.
La policy produit interdit de stocker des donnees entre sessionsLa memoire long terme violera les exigences de vie privee et conformite.

Dans ces cas, un appel modele suffit souvent :

PYTHON
response = llm(prompt)

Problemes et Echecs Typiques

ProblemeCe qui se passeComment prevenir
Memoire obsoleteL agent utilise un vieux fait et donne une mauvaise reponseTTL, versions d enregistrements et mise a jour periodique
Personnalisation incorrecteL agent personnalise trop confiant sur une memoire faible ou obsoleteVerification de fraicheur, seuil de confiance, et confirmation utilisateur avant personnalisation
Bruit en memoireTrop d enregistrements peu utiles entrent dans le contexteRegles d ecriture, ranking et limite top_k
Fuite entre utilisateursL agent lit la memoire d un autre utilisateur ou tenant (client separe)Isolation par user_id/tenant_id et verifications d acces
Memoire empoisonneeUne instruction dangereuse ou fausse entre en memoireSanitization, sources de confiance, revue manuelle des enregistrements critiques
Depassement de limite de contexteLe volume memoire dans le contexte devient trop grand pour LLMCompression, deduplication et resumes courts au lieu d historique brut

La plupart des problemes Memory Layer se resolvent via regles d ecriture claires, bon ranking et controle d acces.

Comment Cela se Combine avec les Autres Patterns

Memory Layer ne pilote pas tout l agent. Elle repond seulement du travail memoire de qualite a chaque etape.

  • Agent Runtime — Runtime decide quand interroger la memoire, et Memory Layer decide quoi lire, ecrire ou supprimer.
  • Tool Execution Layer — les tool calls peuvent lire ou mettre a jour la memoire via la couche d execution controlee.
  • Memory-Augmented Agent — ce pattern repose directement sur Memory Layer.
  • RAG Agent — RAG recupere du savoir externe, et Memory Layer garde l experience interne d un agent/utilisateur specifique.

Autrement dit :

  • Agent Runtime definit quand l agent consulte la memoire
  • Memory Layer definit ce qui est stocke et ce qui est renvoye

En Quoi c est Different de Agent Runtime

Agent RuntimeMemory Layer
Ce que cela controleToute la boucle agentEcriture, recherche et qualite de memoire
Quand cela agitA chaque etape de la boucle d executionPendant lecture/ecriture memoire
Ce que cela renvoieEtat suivant ou reponse finaleFaits pertinents pour le contexte
Risque principalMauvais controle de boucle et de limitesEnregistrements obsoletes, bruyants ou dangereux

Agent Runtime est le "chef d orchestre" de tout le processus.

Memory Layer est la "memoire du systeme" qui maintient la coherence des reponses.

En Bref

En bref

Memory Layer:

  • stocke des faits importants entre etapes et sessions
  • renvoie au contexte seulement les enregistrements pertinents
  • compresse ou supprime la memoire obsolete selon des regles
  • protege les donnees via isolation d acces et regles d ecriture

FAQ

Q : Ne suffit-il pas de passer tout l historique dans le prompt ?
A : Pour des scenarios courts, parfois oui. Mais sur de longs dialogues c est cher, lent et bruyant. Memory Layer donne une memoire courte et pertinente au lieu du log complet.

Q : Quelle difference entre memoire short-term et long-term ?
A : Short-term sert au run ou a la session courante. Long-term conserve des faits importants entre sessions et est reutilisee.

Q : Peut-on ecrire chaque etape agent en memoire ?
A : Techniquement oui, mais c est une mauvaise pratique. Mieux vaut stocker seulement les faits utiles via regles d ecriture, sinon la memoire devient vite du bruit.

Q : Memory Layer remplace-t-elle RAG ou les tool calls ?
A : Non. Memory Layer stocke les faits internes et l experience agent/utilisateur. Pour des donnees externes fraiches, retrieval ou tool calls sont en general necessaires.

Et Ensuite

La memoire est utile seulement si elle reste sous controle. Ensuite, voyez ou la memoire se connecte a l execution et aux policies:

  • Agent Runtime - comment runtime injecte la memoire a chaque iteration.
  • Multi-Tenant - comment eviter de melanger contexte et donnees entre clients.
  • Policy Boundaries - comment limiter l acces a la memoire sensible.
  • Production Stack - comment combiner qualite memoire, audit et controle operationnel.
⏱️ 10 min de lectureMis à jour 7 mars 2026Difficulté: ★★★
Intégré : contrôle en productionOnceOnly
Ajoutez des garde-fous aux agents tool-calling
Livrez ce pattern avec de la gouvernance :
  • Budgets (steps / plafonds de coût)
  • Permissions outils (allowlist / blocklist)
  • Kill switch & arrêt incident
  • Idempotence & déduplication
  • Audit logs & traçabilité
Mention intégrée : OnceOnly est une couche de contrôle pour des systèmes d’agents en prod.
Auteur

Cette documentation est organisée et maintenue par des ingénieurs qui déploient des agents IA en production.

Le contenu est assisté par l’IA, avec une responsabilité éditoriale humaine quant à l’exactitude, la clarté et la pertinence en production.

Les patterns et recommandations s’appuient sur des post-mortems, des modes de défaillance et des incidents opérationnels dans des systèmes déployés, notamment lors du développement et de l’exploitation d’une infrastructure de gouvernance pour les agents chez OnceOnly.