Modèle / jeu de données
zjunlp/LightMem avatar
zjunlp/LightMem

LightMem : une couche mémoire pour agents, à monter soi-même

[ICLR 2026] LightMem: Lightweight and Efficient Memory-Augmented Generation

1 148 étoiles113 forksPythonMIT
GitHub

En bref

De quoi s’agit-il ?
LightMem est un cadre Python de gestion de mémoire à long terme pour LLM et agents, publié sous licence MIT et accepté à ICLR 2026. Le dépôt livre des scripts de reproduction pour LoCoMo et LongMemEval, mais aucune release ni aucun paquet installable : il faut cloner et lire le code.
À qui s’adresse-t-il ?
LightMem convient aux équipes qui veulent une couche mémoire modulaire en Python et qui acceptent de cloner le dépôt, puisque aucune release ni paquet n'est publié. Il ne convient pas à qui cherche un service hébergé ou une API stable : la surface publique est celle des fichiers de src/lightmem.
Puis-je l’utiliser commercialement ?
Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 11 jours.
En quel langage est-il écrit ?
Principalement Python, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Le problème visé : la mémoire qui survit à la fenêtre de contexte

Un agent conversationnel oublie tout ce qui sort de sa fenêtre de contexte. Le rappel par recherche vectorielle classique, souvent étiqueté RAG, stocke des fragments de texte et les réinjecte dans le prompt. LightMem se présente comme un cadre de gestion de mémoire pour LLM et agents, avec un mécanisme de stockage, de récupération et de mise à jour. La cible est donc l'application qui doit se souvenir d'un utilisateur entre deux sessions, pas le pipeline de questions-réponses sur un corpus figé. Le README annonce une intégration en quelques lignes de code et une compatibilité avec des API cloud (OpenAI, DeepSeek) comme avec des modèles locaux (Ollama, vLLM, Transformers). Cette double compatibilité est le point intéressant : la même couche mémoire peut tourner contre un service distant ou contre un serveur local, ce qui n'est pas le cas de toutes les bibliothèques du domaine. Les sujets déclarés du dépôt confirment le positionnement : agent, ai-agents, long-term-memory, personalization, memory-management.

Architecture modulaire et fabriques de fournisseurs

Le dépôt s'organise autour de src/lightmem, avec un sous-répertoire factory/memory_manager qui contient un fichier par fournisseur : ollama.py, vllm_offline.py, transformers.py. Un autre sous-répertoire, configs/memory_manager, héberge base_config.py, où sont définies les options de configuration. Cette séparation entre la fabrique du modèle et la configuration de la mémoire signifie que changer de moteur d'inférence ne demande pas de réécrire la logique de mémoire. Le README décrit une architecture modulaire qui accepte des moteurs de stockage et des stratégies de récupération personnalisés. C'est une affirmation de conception, pas une démonstration : le dépôt ne publie pas d'interface abstraite documentée dans l'extrait fourni, et l'étendue réelle de cette extensibilité se lit dans le code, pas dans la page d'accueil. Un point de méthode : le dépôt héberge aussi d'autres méthodes (FluxMem, StructMem, EM²Mem), chacune avec son propre fichier de documentation à la racine. LightMem n'est donc pas un projet isolé mais la première brique d'une famille, ce qui a une conséquence pratique sur la maintenance.

Mise en route : ce que le dépôt donne réellement

Le README ne fournit pas de commande pip install, et aucune release n'est référencée. La voie normale est donc le clonage du dépôt et l'exécution des scripts fournis. Pour reproduire les résultats annoncés, deux entrées existent : experiments/locomo/readme.md et experiments/longmemeval/readme.md. Le second décrit une exécution de LightMem sur LongMemEval incluant l'évaluation et la mise à jour hors ligne de la mémoire. La configuration passe par les fichiers de src/lightmem/configs/memory_manager. La prise en charge de DeepSeek, annoncée dans les notes de version du 24 avril 2026, cite les modèles deepseek-v4-flash et deepseek-v4-pro avec les paramètres reasoning_effort et le mode réflexion. Un serveur MCP est fourni dans mcp/server.py, ce qui permet d'exposer les outils de mémoire à un client compatible. Enfin, des notebooks de tutoriel sont présents dans tutorial-notebooks/, et une vidéo de démonstration est référencée pour le traitement de contextes longs. Rien de tout cela n'est un paquet versionné : il faut traiter ce dépôt comme un code source à lire avant de l'exécuter.

Ce que le dépôt ne dit pas

Plusieurs zones restent floues dans le matériel disponible. La structure exacte d'un enregistrement mémoire, la politique d'expiration ou de fusion des entrées, et le coût d'un appel de récupération ne sont pas décrits. Le README parle de stockage, de récupération et de mise à jour sans préciser quel magasin est utilisé par défaut, ni si une base externe est nécessaire. Le nombre de dépendances Python n'est pas visible non plus. Ces manques ne sont pas rédhibitoires, mais ils déplacent le travail d'évaluation : impossible de juger la consommation de ressources annoncée sans lire src/lightmem et sans exécuter un script de reproduction. Le terme léger dans le titre du projet est une promesse de conception, pas une mesure publiée dans l'extrait. Un lecteur qui a besoin d'un chiffre de latence ou de mémoire avant de choisir doit aller le chercher lui-même dans les résultats de LoCoMo et de LongMemEval, ou dans l'article arXiv 2510.18866.

Limites et cas où LightMem n'est pas le bon outil

L'absence de release et de paquet installable est la contrainte la plus concrète. Une équipe qui veut épingler une version dans un fichier de dépendances ne peut pas le faire avec ce dépôt tel qu'il est publié. Il faut vendorer le code ou suivre la branche main, dont le dernier commit date du 5 septembre 2026. Autre limite : le dépôt héberge plusieurs méthodes concurrentes sous la même licence et la même racine. La documentation de LightMem est le README principal, tandis que FluxMem, StructMem et EM²Mem ont leurs propres fichiers. Un correctif dans la couche partagée peut donc affecter des méthodes voisines. Enfin, LightMem n'est pas un moteur de recherche documentaire. Si le besoin est d'indexer un corpus statique et de citer des passages, un pipeline RAG classique reste plus direct : LightMem ajoute une étape de gestion d'état et de mise à jour qui n'a de sens que si le contenu évolue entre les sessions.

Face à Mem0 : mémoire gérée contre mémoire possédée

Le README cite Mem0 comme référence de comparaison dans son cadre d'évaluation, aux côtés de A-MEM, EverMemOS et LangMem, avec des scripts sur LoCoMo et LongMemEval. La différence d'approche tient au mode de distribution. Mem0 se présente comme une couche mémoire intégrée, avec un service et des SDK, ce qui réduit le travail d'assemblage mais place la persistance chez un tiers ou dans son infrastructure. LightMem reste un cadre à assembler : on choisit son moteur d'inférence via src/lightmem/factory/memory_manager, on branche son magasin, on configure via base_config.py. Le prix est l'intégration, le bénéfice est le contrôle et l'absence de dépendance à un service externe. Un troisième cas existe dans le même dépôt : StructMem, décrit comme une mémoire hiérarchique conservant les liaisons au niveau des événements et les connexions entre événements. Si le besoin est de relier des événements entre eux plutôt que de retrouver un fait isolé, StructMem est plus adapté que LightMem, et il est dans le même dépôt.

Maintenance, licence et coût de mise à jour

La licence est MIT, indiquée dans le badge du README et dans le fichier LICENSE. Elle autorise l'usage commercial, la modification et la redistribution, sans garantie. Aucune clause de brevet n'y figure, contrairement à Apache 2.0. Pour un produit qui embarque cette couche mémoire, cela signifie que le code peut être modifié et redistribué, mais qu'aucun contributeur ne concède de droits de brevet explicites. Le coût de maintenance dépend de l'absence de versionnement : sans release, chaque mise à jour se fait en comparant les commits de la branche main, et une rupture d'API dans factory/ ou configs/ ne sera signalée par aucun numéro de version. Le projet est actif (dernier commit en septembre 2026, plusieurs méthodes en cours de publication) et soutenu par un programme open source, mais cette activité porte sur l'ensemble de la famille, pas seulement sur LightMem. La bonne pratique ici est de figer un commit précis plutôt que de suivre main, et de relire base_config.py à chaque montée de version.

Conclusion éditoriale

LightMem convient aux équipes qui veulent une couche mémoire modulaire en Python et qui acceptent de cloner le dépôt, puisque aucune release ni paquet n'est publié. Il ne convient pas à qui cherche un service hébergé ou une API stable : la surface publique est celle des fichiers de src/lightmem. Avant d'adopter, vérifier deux points précis : le contenu réel de src/lightmem/configs/memory_manager/base_config.py, qui détermine les clés de configuration disponibles, et la licence MIT, qui autorise la modification et la redistribution mais n'offre aucune garantie.

Sources officielles

  1. Issues
  2. License: MIT
  3. README
  4. zjunlp/LightMem on GitHub
Notes de la communauté

Notes de la communauté