Cycle mémoire

La mémoire d'Elora n'est pas un simple historique de chat. Elle sépare capture brute, mémoire canonique, mémoire opérationnelle, mémoire relationnelle, retrieval et propositions d'apprentissage.

Décision actuelle: PostgreSQL + pgvector est le stockage canonique de Memory V2. Ollama fournit les embeddings locaux par défaut. Le fallback local est un spool append-only rejouable, pas une seconde vérité mémoire. Le miroir Markdown est un export privé généré depuis PostgreSQL, pas une source éditable.

Ordre dur d'ingestion

1. Capture verbatim

Un message, document, ticket ou artefact est d'abord archivé tel qu'il existe, avec source, temps, surface et provenance. La capture doit réussir avant toute synthèse.

2. Archive ou spool

Si PostgreSQL est disponible, l'objet va dans l'archive locale. S'il est indisponible, Elora écrit dans un spool local append-only pour rejouer plus tard.

3. Découpage et indexation

Les contenus longs sont chunkés. Les embeddings locaux via Ollama améliorent le rappel sémantique, mais le texte original reste conservé.

4. Candidats mémoire

Elora peut proposer des entries canoniques: fait, préférence, décision, contrainte, événement, hypothèse, pattern ou expression. Une proposition n'est pas encore vérité durable.

6. Contradictions

Une nouvelle information ne détruit pas l'ancienne. Elle peut la confirmer, la contredire, la remplacer, la déprécier ou la limiter dans le temps.

7. Export miroir

À la demande, Elora génère un snapshot Markdown privé: README canonique, index, manifest JSON et fichiers par entrée. Ce miroir sert à lire, auditer, exporter ou alimenter des outils.

Quand la mémoire intervient dans une réponse

  1. La surface reçoit une demande: terminal, cockpit, Telegram ou futur avatar.
  2. Elora classe la demande et décide si le contexte mémoire est nécessaire.
  3. Le retrieval récupère d'abord les `memory.entries` maintenues, puis les archive.chunks comme preuves secondaires.
  4. Le contexte est assemblé en evidence pack limité: faits utiles, sources, dates, confiance, contradictions et limites.
  5. Le provider local ou le worker reçoit ce pack, pas toute la base mémoire, puis fait une inférence bornée par ce contexte.
  6. La réponse doit respecter les preuves injectées ou marquer explicitement l'incertitude.
  7. Après exécution, les logs, scores, feedbacks et propositions d'apprentissage restent inspectables avant promotion.
  8. Quand une revue humaine ou un outil externe en a besoin, `elora-memory export-markdown` crée un snapshot lisible sans modifier PostgreSQL.

Les quatre couches de rappel

Ces couches sont maintenant exposées dans le contrat JSON d'elora-context. Elles ne sont pas un simple concept rédactionnel: elles permettent de voir ce qu'Elora sait localement, ce qu'elle infère du routage, ce qui manque, et quand une clarification ou une recherche profonde est nécessaire.

L0 identity wake-up

État minuscule toujours disponible: identité opérateur, mission, persona active, priorités, préférences stables.

L1 operational essentials

Faits et contraintes durables, projets en cours, définitions stables, open loops et préférences importantes.

L2 focused topic recall

Rappel ciblé pour un projet, une personne, un incident, un repo, une mission ou un sujet précis.

L3 deep search

Recherche plus coûteuse: sémantique large, lexical, graphe, temps, contradictions et preuves faibles.

Fallback mémoire

Le premier système historique était plus file-backed. Memory V2 garde la leçon de simplicité, mais ne garde pas un deuxième canon caché: la vérité durable vit dans PostgreSQL. Le fallback sert à ne pas perdre une capture ou une entrée quand la base n'est pas joignable.

Miroir Markdown

Le miroir Markdown répond à un besoin différent du fallback. Le fallback protège une capture quand PostgreSQL est indisponible. Le miroir Markdown expose une photographie lisible de ce qui est déjà dans PostgreSQL.