Le problème de l’amnésie des agents autonomes
Les agents d’IA actuels fonctionnent souvent par sessions isolées. Une fois l’interaction terminée, ils perdent le contexte des décisions précédentes, des conventions d’équipe ou des préférences de l’utilisateur. Les équipes doivent alors répéter les mêmes informations, ou voient l’agent proposer des solutions déjà écartées. Cette situation entraîne des inefficacités et des erreurs récurrentes.
La mémoire persistante vise à résoudre ce problème en permettant à l’agent de conserver des informations utiles d’une session à l’autre. Mais toute information ne mérite pas d’être mémorisée indéfiniment. Il est essentiel de distinguer les faits durables des états temporaires afin d’éviter l’accumulation de données obsolètes ou sans pertinence, qui risquerait de dégrader les résultats de l’agent.
La distinction entre mémoire et historique aide aussi à comprendre ce que signifie réellement « se souvenir » pour un agent. Il ne s’agit pas nécessairement de conserver toute la conversation ni de la rejouer intégralement lors d’une nouvelle interaction. L’objectif est plutôt de rendre disponibles certains éléments sélectionnés, lorsqu’ils peuvent éclairer une tâche ultérieure. La qualité de cette sélection compte autant que la durée de conservation : une mémoire abondante mais peu pertinente peut compliquer la récupération au lieu d’améliorer les réponses.
Cette continuité n’est utile que si l’information conservée reste adaptée à son contexte. Une décision prise pour un projet ne devrait pas être interprétée comme une préférence générale, et un état provisoire ne devrait pas être considéré comme toujours valable après la fin de la tâche. Il faut donc penser ensemble à la conservation, au champ d’application et à la manière dont l’agent retrouvera l’information. Une mémoire persistante n’est pas, à elle seule, une garantie que le bon élément sera choisi ou correctement compris.
Distinguer les différents types de mémoire
Il est important de ne pas confondre quatre notions : la mémoire persistante, l’historique de conversation, l’état temporaire d’une tâche et le cache de contexte. La mémoire persistante conserve à long terme des faits et des préférences. L’historique est la transcription de la session en cours. L’état temporaire décrit la progression d’une tâche en cours, tandis que le cache de contexte facilite l’accès à des données récentes et peut réduire les coûts d’inférence.
Chaque type d’information a son propre cycle de vie. La mémoire persistante doit pouvoir être auditée et modifiée, tandis que l’état temporaire peut être supprimé une fois la tâche terminée. Confondre ces catégories peut conduire l’agent à traiter une préférence ponctuelle comme un fait durable, ou à perdre une information importante en vidant le cache.
Ces catégories décrivent des fonctions différentes, même si elles peuvent coexister au cours d’une même interaction. L’historique retrace ce qui s’est dit pendant la session ; l’état de tâche représente où en est un travail qui n’est pas terminé ; le cache facilite l’accès à certains éléments récents ; la mémoire persistante rend accessibles des informations jugées utiles au-delà de la session. Les distinguer évite de traiter un mécanisme de performance comme une archive durable, ou de supposer que la fermeture d’une tâche doit effacer une préférence à long terme.
La durée indiquée pour chaque catégorie est une caractéristique générale, et non une règle uniforme applicable à toutes les configurations. En particulier, une mémoire dite persistante peut nécessiter des opérations de révision, d’expiration ou de suppression ; le terme ne signifie pas qu’elle doit conserver chaque entrée sans limite. De même, vider un cache et supprimer une mémoire persistante ne sont pas des opérations équivalentes. Une équipe doit vérifier ce que fait effectivement le système lorsqu’une tâche se termine, qu’une session se ferme ou qu’une information est modifiée.
L’auditabilité et la possibilité de modifier la mémoire ont aussi une fonction pratique : elles rendent possible l’examen d’une entrée qui influence une réponse, puis sa correction si elle ne convient plus. Cela ne signifie pas que chaque type de mémoire possède les mêmes outils de gestion. L’historique, l’état de tâche et le cache peuvent avoir des règles distinctes, tandis que les informations persistantes demandent une attention particulière à leur portée et à leur validité dans le temps.
Comparaison des types de mémoire
Cette comparaison distingue quatre types de mémoire selon leur durée, leur contenu et leur mode de gestion.
| Type | Durée | Contenu courant | Gestion |
|---|---|---|---|
| Persistante | Long terme | Préférences, décisions, faits | Modification, expiration, suppression |
| Historique | Session en cours | Messages de l’utilisateur et de l’agent | Suppression à la fin de la session |
| État de tâche | Durée de la tâche | Variables intermédiaires, progression | Libération à la fin de la tâche |
| Cache de contexte | Minutes ou heures | Résumés récents, jetons fréquemment utilisés | Invalidation selon le temps ou l’usage |
Déterminer quelles informations conserver
Tout ce que l’agent traite ne doit pas nécessairement devenir une mémoire persistante. Un filtre fondé sur quatre dimensions peut aider : la finalité — à quoi servira l’information ? —, la portée — quel utilisateur ou projet concerne-t-elle ? —, la source — qui l’a fournie ? — et la nécessité de la conserver — restera-t-elle probablement valable ?
Par exemple, pour un agent de programmation, retenir le choix d’une bibliothèque peut être utile ; mémoriser une erreur de syntaxe isolée dans une ligne de code ne l’est généralement pas. La provenance compte : les informations données par l’utilisateur ne doivent pas être confondues avec les suppositions du modèle. Ces dernières devraient être écartées ou signalées comme incertaines, plutôt que présentées comme des faits.
Les quatre dimensions du filtre se complètent plutôt qu’elles ne se remplacent. La finalité précise l’utilité attendue ; le champ d’application empêche de généraliser une information au-delà de la personne ou du projet concerné ; la source permet de distinguer ce qui a été fourni de ce qui a été déduit ; enfin, la nécessité de conservation invite à se demander si l’information sera vraisemblablement encore utile. Une entrée peut être exacte au moment où elle est recueillie sans mériter pour autant une conservation durable.
La provenance est particulièrement importante lorsque plusieurs types d’éléments sont présents dans le même contexte. Une déclaration de l’utilisateur et une interprétation produite par le modèle ne doivent pas recevoir le même statut simplement parce qu’elles apparaissent dans une réponse. Conserver la source avec l’information facilite la vérification ultérieure et aide à éviter qu’une supposition soit réutilisée comme si elle avait été confirmée. Lorsque le degré de certitude est insuffisant, le signaler ou ne pas mémoriser l’élément limite le risque de transformer une hypothèse en fait apparent.
Les exemples de préférences, de choix techniques ou de questions ponctuelles illustrent une règle de sélection, pas une obligation de mémoriser automatiquement ces éléments. Leur utilité dépend de la tâche future et de leur portée. Avant de conserver une information, il est donc utile de pouvoir répondre à trois questions liées : à quoi servira-t-elle, dans quel contexte s’applique-t-elle, et quelle raison justifie qu’elle reste accessible après la session ? Si ces réponses ne sont pas claires, la conservation persistante risque d’ajouter du bruit plutôt que du contexte utile.
Concevoir une entrée de mémoire
Chaque entrée devrait comporter des métadonnées permettant de la gérer : son contenu, sa provenance, sa date de création, son champ d’application et une condition d’expiration ou de révision. La date aide à repérer les informations potentiellement obsolètes. Le champ d’application indique si l’information concerne un utilisateur, un projet ou un contexte plus général.
La règle de révision ou d’expiration peut dépendre d’une durée ou d’un événement : par exemple, revoir une information lorsque l’utilisateur change de formule ou met à jour son profil. Sans ces métadonnées, le stockage risque de devenir un ensemble de données que l’agent ne sait ni filtrer ni actualiser de façon fiable. Il faut toutefois éviter de supposer qu’un système applique automatiquement ces règles : leur mise en œuvre doit être vérifiée pour chaque configuration.
Les métadonnées ne sont pas un simple complément descriptif : elles déterminent si une entrée pourra être interprétée et révisée correctement. La provenance indique d’où vient le contenu ; la date permet d’évaluer son ancienneté ; le champ d’application précise à quel utilisateur, projet ou contexte il se rapporte ; la règle de révision ou d’expiration indique quand il faut le réexaminer. Sans ces éléments, deux informations qui se ressemblent peuvent être confondues, ou une entrée ancienne peut rester disponible sans que l’agent ou l’équipe sache qu’elle mérite une vérification.
Une condition fondée sur un événement décrit un motif de réexamen, mais ne prouve pas que le système détectera cet événement ni qu’il modifiera l’entrée de lui-même. De même, une date d’expiration enregistrée ne garantit pas automatiquement la suppression ou l’exclusion d’une information. Le comportement dépend de la configuration et de la mise en œuvre ; il faut donc vérifier que la règle est effectivement appliquée et que le résultat attendu se produit. Cette précaution évite de confondre une politique définie dans les métadonnées avec une fonction opérationnelle démontrée.
La structure minimale proposée permet de garder ensemble le contenu et les éléments nécessaires à son suivi. Une date de dernière vérification complète la date de création : elle aide à distinguer une information simplement ancienne d’une information qui a été réexaminée récemment. De même, préciser si une entrée concerne un utilisateur, un projet ou un contexte plus général limite les erreurs de portée. Ces champs facilitent la gestion, mais leur présence ne remplace ni une vérification de la validité ni une règle claire sur ce qui doit arriver lorsque l’information change.
Structure minimale d’une entrée
Une structure de base pour définir une entrée de mémoire persistante.
- 01Définir le contenu de l’information, sous forme textuelle ou structurée.
- 02Enregistrer sa provenance : utilisateur, système ou source externe.
- 03Ajouter une date de création et une date de dernière vérification.
- 04Définir son champ d’application : utilisateur, projet ou contexte général.
- 05Préciser la règle d’expiration ou de révision.
Récupération, mise à jour et correction
La récupération doit tenir compte de la tâche en cours. Elle peut s’appuyer sur une recherche lexicale, qui repère les mots employés, ou sur une recherche sémantique, qui rapproche les significations. La recherche sémantique peut mieux traiter les différences de formulation, mais elle nécessite des représentations vectorielles et peut entraîner des coûts supplémentaires. Aucune méthode ne garantit, à elle seule, que les résultats seront pertinents.
Lorsqu’un utilisateur corrige une information, le système doit traiter l’entrée concernée et vérifier les représentations dérivées susceptibles d’être récupérées : résumés, index ou vecteurs. Si une ancienne version reste disponible dans l’un de ces éléments, l’agent pourrait continuer à s’appuyer sur elle. La propagation de la correction doit donc être conçue et testée ; les éléments disponibles ne permettent pas de supposer que toutes les implémentations la garantissent automatiquement.
Les méthodes lexicales et sémantiques répondent à des besoins différents. Une recherche lexicale s’appuie sur les termes présents dans la requête et dans les éléments stockés ; une recherche sémantique vise une proximité de sens, y compris lorsque la formulation varie. Le choix de méthode ne dispense pas d’évaluer les résultats : une correspondance de mots peut retrouver un élément hors contexte, tandis qu’une proximité sémantique ne garantit pas que l’information récupérée convient à la tâche. La pertinence dépend aussi du champ d’application et de l’état de l’entrée.
Les représentations dérivées compliquent la mise à jour parce qu’un même contenu peut être accessible sous plusieurs formes. Modifier l’entrée d’origine ne suffit donc pas à démontrer que toutes les versions utilisées pour la recherche ont changé. Il faut identifier les éléments dérivés qui existent dans la configuration concernée, puis vérifier qu’ils sont actualisés ou rendus indisponibles lorsqu’une correction ou une suppression est demandée. Les éléments disponibles ne permettent pas d’affirmer qu’une propagation complète est automatique dans toutes les implémentations.
La correction et la suppression méritent d’être vérifiées séparément. Après une correction, l’ancienne version ne devrait pas continuer à orienter la réponse comme si elle était valide ; après une suppression, il faut vérifier qu’une recherche pertinente ne la fait pas réapparaître. L’examen du stockage principal peut apporter une information utile, mais il ne suffit pas nécessairement à établir ce que la recherche pourra encore récupérer. Le contrôle doit porter sur le comportement observable, y compris les éventuels résumés ou index disponibles dans le système testé.
Tester le cycle de vie de la mémoire
Pour vérifier le fonctionnement de la mémoire, prévoyez des tests portant sur l’obsolescence, le contexte, les corrections et les suppressions. Il faut notamment vérifier si une information ancienne est écartée ou signalée, si une correction est reflétée dans les réponses et si une donnée supprimée réapparaît dans les résultats de recherche.
Un test pratique consiste à enregistrer une information, à la corriger, puis à poser une question qui aurait auparavant permis de la retrouver. Le résultat doit être conforme à la version corrigée, et l’équipe doit pouvoir examiner quels souvenirs ont été récupérés. Pour tester une suppression, supprimez l’information, relancez une requête susceptible de la faire remonter et contrôlez aussi, dans la mesure du possible, les index et résumés dérivés. Répétez ces essais dans des tâches et des sessions distinctes.
Des tests reproductibles rendent les règles de cycle de vie vérifiables au lieu de les laisser au niveau de la conception. Pour chaque cas, il est utile de préciser l’information initiale, l’action appliquée et la requête qui permet d’observer le résultat. L’équipe peut alors comparer ce que l’agent répond avec ce qui devrait être conservé, corrigé, écarté ou isolé. Cette méthode aide aussi à distinguer une réponse incorrecte d’un problème de récupération : examiner quels souvenirs ont été sélectionnés apporte un indice sur l’étape où l’écart s’est produit.
Les essais d’obsolescence, de correction et de suppression ne couvrent pas le même risque. Le premier vérifie si une information dont la validité est incertaine est utilisée sans contrôle ; le deuxième vérifie que la version corrigée a remplacé l’ancienne dans les réponses ; le troisième vérifie qu’une entrée supprimée n’est plus accessible par la recherche testée. Pour que ces contrôles soient interprétables, la requête doit être assez pertinente pour faire ressortir l’information si elle est encore récupérable, sans confondre le résultat avec un souvenir sans rapport.
Le contrôle du contexte vérifie qu’une mémoire utile dans une situation ne déforme pas une réponse à une autre tâche. Le contrôle d’isolation porte, lui, sur la séparation des informations associées à des utilisateurs différents. Ce sont deux vérifications distinctes : une entrée peut être correctement rattachée à un utilisateur tout en étant hors sujet dans une tâche, ou être pertinente pour la tâche mais accessible dans le mauvais contexte utilisateur. Les tests doivent donc conserver séparément ces cas, plutôt que de les regrouper sous un seul résultat général.
Répéter les essais dans des tâches et des sessions distinctes permet de vérifier que le résultat ne dépend pas uniquement de l’interaction immédiatement précédente. Il est également utile d’examiner les souvenirs effectivement récupérés, puis de refaire les requêtes après une correction ou une suppression. Cette démarche ne présume pas que toutes les configurations se comportent de la même façon : elle sert précisément à établir ce qui se passe dans le système évalué et à repérer les écarts avant de se fier à la mémoire persistante.
Cas de test recommandés
Des contrôles reproductibles pour évaluer le cycle de vie des informations mémorisées.
| Test | Action | Résultat attendu |
|---|---|---|
| Obsolescence | Enregistrer une information devenue ancienne, ou dont la date de validité est dépassée | L’information n’est pas utilisée sans vérification, ou son caractère ancien est signalé |
| Correction | Modifier une information existante | L’agent s’appuie sur la version corrigée, et non sur l’ancienne |
| Suppression | Supprimer une information puis lancer une recherche pertinente | L’information supprimée ne figure plus parmi les résultats récupérables |
| Contexte | Interroger l’agent sur une tâche sans rapport avec un souvenir enregistré | Le souvenir hors contexte n’influence pas la réponse |
| Isolation | Rechercher une information dans le contexte d’un autre utilisateur | Les informations d’un autre utilisateur ne sont pas récupérées |
Questions ouvertes
- Les éléments disponibles ne détaillent pas de mécanismes d’expiration automatique communs à toutes les implémentations.
- L’efficacité de la propagation des corrections et des suppressions aux index et autres représentations dérivées n’a pas été vérifiée de manière indépendante pour tous les systèmes.
- Le guide de l’AEPD sur l’IA agentique n’a pas été consulté intégralement ; aucune recommandation précise ne lui est donc attribuée ici.
Poursuivre l’exploration
Sources consultées
Corrections et transparence
Si vous repérez une information incorrecte ou obsolète, envoyez-nous la page et la source à vérifier.
Proposer une correction