Polydesk-logotype
Polydesk.ai — Header

Short-Term Memory (Mémoire à Court Terme)

La short-term memory (STM) d’un agent IA est la mémoire de travail qui contient les informations du contexte immédiat : l’historique de la conversation en cours, les résultats des outils récemment appelés, les raisonnements intermédiaires et l’état de progression de la tâche. Elle correspond directement à la fenêtre de contexte du LLM.

C’est la forme de mémoire la plus fondamentale et la plus universelle. Chaque chatbot, chaque agent, chaque application LLM utilise une short-term memory : l’historique des messages que vous voyez dans votre conversation. Quand vous dites « comme je l’ai mentionné plus tôt », c’est la STM qui permet au modèle de comprendre votre référence.

Mais la STM est aussi la mémoire la plus fragile. Elle est volatile (effacée à la fin de la session), limitée en taille (par la fenêtre de contexte du LLM), et sujette au « context drift » (le modèle perd progressivement le fil des instructions initiales quand la conversation s’allonge). Comprendre et gérer correctement la STM est une compétence essentielle pour tout développeur d’agents IA.

Short-Term Memory en bref
Catégorie
Composant de memory-augmented agent
Autres noms
Working memory, mémoire de travail, in-context memory, conversation buffer
Substrat technique
La fenêtre de contexte du LLM (les tokens envoyés dans le prompt)
Durée de vie
Une session de conversation (volatile, effacée entre les sessions)
Taille
Limitée par la fenêtre de contexte : 128K (GPT-4o) à 1M tokens (Claude Opus 4.6, Gemini 3.1 Pro)
Gestion
Troncation, résumé (summarization), fenêtre glissante, compaction
Relation
Complémentaire à la mémoire à long terme (persistante entre sessions)

Comment fonctionne la STM

Les LLM sont fondamentalement stateless : chaque appel API est indépendant, sans aucune mémoire des appels précédents. L’illusion de mémoire dans les chatbots est créée par l’application, qui renvoie l’historique complet de la conversation à chaque nouveau message.

Concrètement, quand vous envoyez un message dans ChatGPT ou Claude, votre application envoie au LLM l’ensemble des messages précédents + votre nouveau message. Le modèle reçoit tout le contexte à chaque tour, « se souvient » de la conversation uniquement parce qu’on la lui rappelle intégralement. C’est pourquoi la mémoire à court terme est parfois appelée « in-context memory » : elle vit dans le contexte du prompt.

Les composants de la STM

La STM d’un agent contient plusieurs types d’informations :

L’historique des messages : la séquence de messages utilisateur et assistant de la conversation en cours. C’est la forme la plus basique de STM.

Le system prompt : les instructions initiales qui définissent le comportement de l’agent (rôle, ton, règles, outils disponibles). Ce system prompt consomme des tokens de contexte et reste en mémoire tout au long de la conversation.

Les résultats d’outils : dans un agent ReAct ou Think-Act-Observe, les observations (résultats de recherche, sortie de code, réponses d’API) s’accumulent dans le contexte.

Le scratchpad de raisonnement : les traces de pensée (Thoughts) de l’agent, les plans intermédiaires et les notes de progression. C’est la « mémoire de travail » au sens strict, où l’agent « réfléchit à voix haute ».

L’état custom : dans LangGraph, vous pouvez étendre l’état de l’agent avec des champs supplémentaires (user_id, préférences, variables de session) qui persistent au sein du thread.

Le défi : la fenêtre de contexte déborde

Le problème central de la STM est la finitude. Même avec 1M tokens (Claude Opus 4.6), une conversation suffisamment longue finira par dépasser la fenêtre. Et bien avant d’atteindre la limite technique, les performances se dégradent : les LLM peinent à exploiter efficacement les informations situées au milieu d’un long contexte (le problème « lost in the middle »).

Pour un agent qui effectue une boucle Think-Act-Observe avec 15 itérations, chacune ajoutant 500 à 2 000 tokens (pensée + action + observation), le contexte peut grossir de 7 500 à 30 000 tokens sur une seule tâche. Ajoutez le system prompt (~1 000 tokens), les définitions d’outils (~2 000 tokens) et l’historique de conversation, et le budget de contexte se consomme rapidement.

Les stratégies de gestion de la STM sont donc essentielles pour tout agent de production.

Stratégies de gestion de la STM

Troncation (Window Buffer)

La méthode la plus simple : conserver uniquement les N derniers messages et supprimer les plus anciens. C’est l’approche « fenêtre glissante ». Rapide à implémenter, mais brutale : les informations anciennes (y compris le contexte important de début de conversation) sont perdues définitivement.

LangChain implémente cette stratégie via le paramètre de troncation configurable : suppression des premiers messages, des derniers messages, ou d’un nombre spécifique de messages.

Résumé (Summarization)

Une stratégie plus sophistiquée : utiliser un LLM pour résumer les messages anciens en un texte compact qui capture les informations essentielles. Ce résumé remplace les messages originaux dans le contexte, libérant de l’espace tout en conservant le sens.

LangChain propose ConversationSummaryBufferMemory : un hybrid qui garde les messages récents en intégralité et résume progressivement les messages plus anciens quand le budget de tokens est dépassé. C’est le meilleur compromis entre fidélité (messages récents) et compression (messages anciens).

Bonnes pratiques pour la summarization Le OpenAI Cookbook recommande plusieurs principes pour les résumés de qualité : inclure les jalons importants (quand un problème est résolu, quand une information clé est découverte), structurer le résumé en catégories plutôt qu’en paragraphes longs, vérifier les contradictions avec les instructions système, inclure les timestamps pour le flux temporel, et ne jamais halluciner d’informations dans le résumé (même de petites inventions se propagent dans le contexte futur).

Compaction (Claude)

Claude Opus 4.6 intègre un mécanisme de compaction automatique : quand le contexte approche de la limite, le système résume automatiquement les parties anciennes de la conversation. Cette compaction est transparente pour l’utilisateur et préserve les informations essentielles tout en libérant du contexte pour les interactions suivantes.

Externalisation dans des fichiers

L’approche de Claude Code et LangChain Deep Agents : plutôt que garder tous les résultats intermédiaires dans le contexte, l’agent les écrit dans des fichiers et les relit sélectivement quand il en a besoin. C’est le principe de « Dynamic Context Discovery » : la STM du LLM ne contient que ce qui est immédiatement nécessaire, le reste est stocké en fichiers accessibles à la demande.

C’est analogue au swap mémoire dans un système d’exploitation : les données peu utilisées sont déplacées sur disque pour libérer la RAM. Letta (ex-MemGPT) formalise cette analogie : le contexte du LLM est la « RAM », le stockage externe est le « disque », et l’agent pagine les informations entre les deux.

Filtrage intelligent

Les approches les plus avancées (AgeMem, janvier 2026) utilisent le LLM lui-même pour décider quelles informations garder en STM et lesquelles archiver en mémoire à long terme. L’opération FILTER sélectionne les messages pertinents pour la tâche en cours, l’opération SUMMARY compresse les messages non filtrés. Le tout est entraîné par reinforcement learning pour optimiser la gestion du contexte.

STM vs LTM : deux mémoires complémentaires

Critère Short-Term Memory Long-Term Memory
Durée de vie Une session (volatile) Persistante entre sessions
Substrat Fenêtre de contexte du LLM Base vectorielle, graphe, fichiers, BDD
Taille Limitée (128K à 1M tokens) Potentiellement illimitée
Accès Direct (dans le prompt) Par récupération (retrieval)
Coût Proportionnel à la taille (tokens d’input) Coût de stockage + récupération
Contenu type Conversation en cours, résultats d’outils, raisonnement Faits appris, préférences, expériences passées
Analogie humaine Mémoire de travail (ce à quoi vous pensez maintenant) Mémoire déclarative (ce que vous savez)

En production, les deux mémoires interagissent : la LTM récupère des informations pertinentes et les injecte dans la STM du contexte courant. La STM accumule des expériences qui sont périodiquement consolidées en LTM. C’est le même flux que chez l’humain : la mémoire de travail traite l’information immédiate, et les éléments importants sont transférés en mémoire à long terme pendant le « repos » (entre les sessions).

Implémentation pratique

Avec LangChain / LangGraph

LangGraph gère la STM via des checkpointers qui persistent l’état du thread. Chaque thread représente une conversation, et l’état (incluant l’historique des messages) est sauvegardé après chaque étape. MongoDB, PostgreSQL et le stockage en mémoire sont supportés comme backends de checkpointing.

Pour gérer la croissance du contexte, LangGraph offre des stratégies de troncation configurables et des résumeurs intégrés. L’état peut être étendu avec des champs custom (user_id, variables de session) qui persistent tout au long du thread.

Avec LlamaIndex

LlamaIndex propose un composant Memory modulaire avec un chat message store (STM basique), un StaticMemoryBlock pour les informations de contexte fixes, un FactExtractionMemoryBlock qui extrait automatiquement des faits des conversations, et un VectorMemoryBlock qui archive les messages anciens dans un vector store quand la STM atteint sa limite de tokens.

Avec OpenAI Agents SDK

Le OpenAI Agents SDK introduit le concept de « sessions » pour le context engineering. Les sessions gèrent automatiquement la STM avec des stratégies de compression configurables. Le résumeur utilise un LLM dédié pour compresser les messages anciens, avec des garde-fous contre les hallucinations dans les résumés et un tracking des jalons importants de la conversation.

Défis de la STM

Context drift

Le context drift est la dégradation progressive de l’adhérence de l’agent à ses instructions initiales. Plus la conversation s’allonge, plus les instructions du system prompt sont « noyées » dans l’historique des messages. L’agent peut commencer à dévier de son rôle, oublier des contraintes, ou ignorer des consignes.

Les contre-mesures : rappeler périodiquement les instructions clés dans la conversation, utiliser la summarization pour compresser l’historique tout en gardant le system prompt intact, et monitorer la conformité des réponses aux instructions initiales.

Lost in the middle

Les recherches montrent que les LLM exploitent mieux les informations au début et à la fin du contexte qu’au milieu. Dans une conversation de 50 messages, les informations mentionnées au message 15 sont plus susceptibles d’être ignorées que celles des messages 1-5 ou 45-50. La summarization atténue ce problème en condensant les messages intermédiaires.

Coût croissant

Chaque message ajouté au contexte augmente le nombre de tokens d’input facturés. Une conversation de 20 tours avec un historique complet consomme progressivement plus de tokens : le message 20 inclut les 19 messages précédents en contexte. La troncation et la summarization ne sont pas juste des optimisations techniques : elles sont des optimisations financières essentielles.

STM dans les systèmes multi-agents

Dans un système multi-agent, la STM pose un défi supplémentaire : comment partager le contexte entre agents ? Une shared memory (mémoire partagée) peut être utilisée pour la coordination. MongoDB propose une intégration de shared memory pour les systèmes multi-agents dans LangGraph, où les agents accèdent à un espace de contexte commun.

Ne sous-estimez pas la gestion de la STM La majorité des bugs des agents de production sont liés à la STM : contexte trop long (le LLM se perd), contexte trop court (informations essentielles perdues), ou contexte pollué (résultats d’outils non pertinents qui diluent l’attention). Investissez dans le monitoring de l’utilisation du contexte (combien de tokens sont consommés par catégorie) et dans des stratégies de compaction adaptées à votre cas d’usage.

Bonnes pratiques

Mesurez votre consommation de contexte. Utilisez tiktoken (OpenAI) ou l’API de comptage de tokens de votre fournisseur pour monitorer combien de tokens votre STM consomme à chaque tour. Identifiez les sources de bloat : les résultats d’outils verbeux, les traces de raisonnement longues, ou les messages système redondants.

Adoptez la summarization hybride. Le pattern le plus efficace : gardez les 5 à 10 derniers messages en intégralité (messages récents = haute fidélité) et résumez tout ce qui précède en un paragraphe compact. C’est le fonctionnement de ConversationSummaryBufferMemory dans LangChain.

Externalisez les résultats d’outils volumineux. Un résultat de recherche web de 5 000 tokens n’a pas besoin de rester intégralement dans le contexte. Extrayez les informations pertinentes (quelques phrases) et archivez le reste dans un fichier ou une base vectorielle accessible si nécessaire.

Protégez le system prompt. Le system prompt est l’ancre de la STM : c’est lui qui définit le comportement de l’agent. Ne le laissez jamais être « poussé hors du contexte » par un historique trop long. Certains frameworks le placent en position protégée (toujours en tête du contexte, jamais tronqué).

Testez la dégradation. Simulez des conversations de 30, 50, 100 tours et mesurez si l’agent maintient ses instructions et sa qualité de réponse. La dégradation est souvent graduelle et ne se révèle qu’en test de stress.


Questions fréquentes

Quelle est la différence entre short-term memory et fenêtre de contexte ?

La fenêtre de contexte est la capacité technique maximale du LLM (nombre de tokens qu’il peut traiter en une fois). La short-term memory est le contenu effectivement chargé dans cette fenêtre pour une conversation donnée. La fenêtre de contexte est le contenant ; la STM est le contenu. Vous pouvez avoir une fenêtre de 1M tokens mais une STM de seulement 5 000 tokens si la conversation est courte.

Faut-il utiliser toute la fenêtre de contexte ?

Non. Remplir une fenêtre de 1M tokens coûte cher (chaque token d’input est facturé) et peut dégrader la qualité des réponses (« lost in the middle »). La bonne pratique est d’utiliser le minimum de contexte nécessaire pour la tâche. Typiquement, 5 000 à 20 000 tokens de STM suffisent pour la plupart des conversations. Les fenêtres larges sont utiles pour les tâches spécifiques (analyse de longs documents, codebases entiers) mais pas pour le chat quotidien.

La summarization perd-elle des informations importantes ?

Oui, inévitablement. La compression implique une perte. La clé est de contrôler ce qui est perdu : un bon résumeur conserve les faits essentiels, les décisions prises et les éléments non résolus, tout en éliminant les détails conversationnels (« bonjour », « merci », reformulations). La qualité du résumé dépend directement de la qualité du prompt de résumé. Testez systématiquement en rejouant des conversations longues avec et sans summarization et mesurez la différence de qualité des réponses.

Comment gérer la STM dans un agent qui fait beaucoup d’appels d’outils ?

Les résultats d’outils sont souvent les plus gros consommateurs de contexte. Trois stratégies : (1) Tronquez les résultats d’outils à une longueur maximale (500 tokens par résultat, par exemple). (2) Résumez les résultats d’outils anciens tout en gardant les récents intacts. (3) Externalisez les résultats dans des fichiers et ne gardez dans le contexte qu’un résumé d’une ligne + un lien vers le fichier complet. C’est l’approche de LangChain Deep Agents et Claude Code.

La STM persiste-t-elle quand je ferme la conversation ?

Par défaut, non. La STM est volatile : elle disparaît quand la session se termine. Cependant, les frameworks modernes (LangGraph avec checkpointers, OpenAI Sessions) peuvent persister l’état de la STM entre les reconnexions à un même thread. Et les informations importantes de la STM peuvent être transférées en mémoire à long terme avant la fin de la session pour être récupérées dans les conversations futures.

Polydesk.ai — Footer