Aller au contenu

Mémoire autonome

Lorsqu’elle est activée, l’agent extrait automatiquement les connaissances durables des sessions passées et injecte un résumé compact dans chaque nouvelle session. Au fil du temps, il construit un magasin de mémoire à l’échelle du projet — décisions techniques, flux de travail récurrents, pièges — qui se perpétue sans effort manuel.

Désactivée par défaut. Activez-la via /settings ou config.yml :

memories:
enabled: true

Au démarrage de la session, si un résumé de mémoire existe pour le projet en cours, il est injecté dans le prompt système sous forme de bloc Memory Guidance. L’agent reçoit l’instruction de :

  • Traiter la mémoire comme un contexte heuristique — utile pour les processus et les décisions antérieures, mais ne faisant pas autorité sur l’état actuel du dépôt.
  • Citer le chemin de l’artefact mémoire lorsque la mémoire modifie le plan, et l’associer à des preuves issues du dépôt actuel avant d’agir.
  • Privilégier l’état du dépôt et les instructions de l’utilisateur en cas de conflit avec la mémoire ; traiter la mémoire conflictuelle comme obsolète.

L’agent peut lire directement les fichiers mémoire en utilisant les URL memory:// avec l’outil read :

URLContenu
memory://rootRésumé compact injecté au démarrage
memory://root/MEMORY.mdDocument complet de mémoire à long terme
memory://root/skills/<name>/SKILL.mdUn guide procédural de compétence généré
Sous-commandeEffet
viewAfficher le contenu d’injection mémoire actuel
clear / resetSupprimer toutes les données mémoire et les artefacts générés
enqueue / rebuildForcer la consolidation à s’exécuter au prochain démarrage

Les mémoires sont construites par un pipeline en arrière-plan qui s’exécute au démarrage ou est déclenché manuellement via une commande slash.

Phase 1 — extraction par session : Pour chaque session passée ayant changé depuis son dernier traitement, un modèle lit l’historique de la session et extrait le signal durable : décisions techniques, contraintes, échecs résolus, flux de travail récurrents. Les sessions trop récentes, trop anciennes ou actuellement actives sont ignorées. Chaque extraction produit un bloc de mémoire brut et un court synopsis pour cette session.

Phase 2 — consolidation : Après l’extraction, une seconde passe de modèle lit toutes les extractions par session et produit trois sorties écrites sur le disque :

  • MEMORY.md — un document de mémoire à long terme organisé
  • memory_summary.md — le texte compact injecté au démarrage de la session
  • skills/ — des guides procéduraux réutilisables, chacun dans son propre sous-répertoire

La Phase 2 utilise un bail pour empêcher les doubles exécutions lorsque plusieurs processus démarrent simultanément. Les répertoires de compétences obsolètes issus d’exécutions précédentes sont automatiquement élagués.

Toutes les sorties sont analysées pour détecter les secrets avant d’être écrites sur le disque.

Le comportement d’extraction et de consolidation de la mémoire est entièrement piloté par des fichiers de prompts statiques dans src/prompts/memories/.

FichierObjectifVariables
stage_one_system.mdPrompt système pour l’extraction par session
stage_one_input.mdModèle de tour utilisateur encapsulant le contenu de la session{{thread_id}}, {{response_items_json}}
consolidation.mdPrompt pour la consolidation inter-sessions{{raw_memories}}, {{rollout_summaries}}
read_path.mdGuidance mémoire injectée dans les sessions actives{{memory_summary}}

La mémoire s’appuie sur le système de rôles de modèle.

PhaseRôleObjectif
Phase 1 (extraction)defaultExtraction de connaissances par session
Phase 2 (consolidation)smolSynthèse inter-sessions

Si smol n’est pas configuré, la Phase 2 se rabat sur le rôle default.

ParamètreDéfautDescription
memories.enabledfalseInterrupteur principal
memories.maxRolloutAgeDays30Les sessions plus anciennes que cette valeur ne sont pas traitées
memories.minRolloutIdleHours12Les sessions actives plus récemment que cette valeur sont ignorées
memories.maxRolloutsPerStartup64Plafond de sessions traitées lors d’un seul démarrage
memories.summaryInjectionTokenLimit5000Nombre maximal de tokens du résumé injecté dans le prompt système

Des paramètres de réglage supplémentaires (concurrence, durées de bail, budgets de tokens) sont disponibles dans la configuration pour un usage avancé.

  • src/memories/index.ts — orchestration du pipeline, injection, gestion des commandes slash
  • src/memories/storage.ts — file d’attente de tâches et registre de threads basés sur SQLite
  • src/prompts/memories/ — modèles de prompts mémoire
  • src/internal-urls/memory-protocol.ts — gestionnaire d’URL memory://