Mémoire persistante et auto-évolution (memory)
Principe fondamental : Sauvegarder activement, sans attendre la demande de l'utilisateur. Transformez l'environnement utilisateur en un système « qui vous comprend de mieux en mieux à chaque utilisation » : Mémoire à trois niveaux (faits/modèles/leçons) + résumé de session + routage des leçons (auto-évolution).
🚀 Démarrage de la session (à chaque nouvelle session)
- Si
~/.agents/memory/MEMORY.mdexiste, le lire d'abord pour comprendre rapidement le contexte, les préférences et les sessions récentes de l'utilisateur. - Si des détails sont nécessaires, utiliser
memory.py get <id>oumemory.py search <mot-clé>pour approfondir. - Présenter brièvement à l'utilisateur les informations clés mémorisées (synthèse), démontrant la continuité.
📌 Sauvegarde proactive (TOUJOURS ACTIVE, sauvegarder dès que rencontré, sans attendre la fin de la session)
Dès que l'une des situations suivantes se produit, appeler immédiatement memory.py add <type> <contenu> pour sauvegarder :
| Type | Moment de sauvegarde | Exemple |
|---|---|---|
fact | L'utilisateur révèle une préférence/habitude/information d'identité ; décision importante du projet, choix technique, convention ; l'utilisateur dit explicitement « retiens ça » | « L'utilisateur préfère les réponses en français » « Le projet utilise pnpm + TypeScript » |
pattern | Un même comportement/problème apparaît 2 fois ou plus (cette occurrence incluse) | « À chaque installation de compétence, l'utilisateur demande d'abord une évaluation des dépendances » |
lesson | Expérience apprise après un écueil, conclusion de dépannage, piège découvert | « Le backend par défaut de ddgs pour DuckDuckGo passe par Yandex et expire, il faut utiliser backend='html' » |
- La sauvegarde peut être accompagnée de
--tag a,bpour faciliter la recherche. - L'outil effectue automatiquement une déduplication approximative ; les contenus en double seront signalés plutôt que stockés à nouveau.
🗂️ Fin de session (ou demande de l'utilisateur « résumer la session / capitaliser »)
Exécuter dans l'ordre :
- Passer en revue la session en cours, extraire 2 à 5 informations les plus importantes.
- Classer et sauvegarder :
fact(nouvelle préférence/décision) →pattern(nouveau schéma) →lesson(nouvelle expérience). - Routage des leçons (auto-évolution) : pour chaque leçon, déterminer :
- S'agit-il d'une méthodologie réutilisable (ex. « procédure standard pour un certain type de tâche ») → Créer ou mettre à jour une compétence dans
~/.agents/skills/(avec les outils write/edit) pour qu'elle s'applique automatiquement la prochaine fois ; - S'agit-il d'un fait ponctuel → Stocker en tant que fact ;
- S'agit-il d'une information propre à l'environnement/compte (ex. configuration d'un outil) → Stocker en tant que lesson uniquement.
- S'agit-il d'une méthodologie réutilisable (ex. « procédure standard pour un certain type de tâche ») → Créer ou mettre à jour une compétence dans
- Utiliser
memory.py session-save "<résumé de la session en une phrase>" --key mot-clé1,mot-clé2pour sauvegarder l'enregistrement de session. - Exécuter
memory.py syncpour actualiser la vue d'ensemble MEMORY.md.
🔍 Interrogation de la mémoire
Si l'utilisateur demande « j'ai dit précédemment / la dernière fois / mes préférences » → memory.py search <mot-clé> ; pour lister tout → memory.py list.
⚙️ Aide-mémoire des outils
P=~/.agents/skills/pi-memory-evo/memory.py
$P init # Première initialisation
$P add fact "contenu" --tag préférence # Stocker un fait/modèle/leçon
$P session-save "résumé" --key a # Stocker un résumé de session
$P search mot-clé # Rechercher
$P list # Tout lister
$P get <id> / update <id> <nouveau_contenu> / delete <id> # Gestion
$P stats # Statistiques
$P sync # Actualiser la vue d'ensemble MEMORY.md
📂 Emplacement de stockage
- Données :
~/.agents/memory/memory.json(mémoire à quatre niveaux, JSON) - Vue d'ensemble :
~/.agents/memory/MEMORY.md(lu au début de chaque session) - Compétence elle-même :
~/.agents/skills/pi-memory-evo/(outil + cette documentation)
⚠️ Limites
- Ne pas stocker d'informations sensibles : token, mot de passe, clé — rien n'est sauvegardé.
- Respecter la volonté de l'utilisateur : si l'utilisateur dit « ne note pas ça », ne pas sauvegarder ; s'il dit « oublie X », utiliser
deletepour supprimer l'entrée correspondante. - La mémoire est une aide, elle ne remplace pas la confirmation : pour les actions importantes, c'est toujours l'intention actuelle de l'utilisateur qui prévaut.