v1.16.6 — Long-term memory precision overhaul
🧠 Long-term memory — Precision overhaul
Refonte complète du pipeline mémoire long-terme sur trois axes : prompt d'extraction, formule de rétention, et consolidation sémantique quotidienne. Corrige au passage deux bugs silencieux dans l'ancien système de purge.
✨ Highlights user-facing
- Vos corrections factuelles tiennent vraiment — « en fait j'ai changé de job, je suis chez Meta » met à jour la mémoire au lieu de créer un doublon contradictoire.
- Mémoires épinglées strictement protégées — plus aucun risque que LIA les modifie ou les supprime automatiquement.
- Moins de doublons — un nouveau job quotidien fusionne les mémoires quasi-identiques accumulées au fil des conversations.
- Mémoires qui vieillissent mieux — préférences moyennes purgées autour de 30 jours, informations importantes (famille, identité) préservées durablement.
🛠️ Côté technique
Added
memory_consolidationjob quotidien à 5h UTC (cosine similarity ≥ 0.9, skip pinned/catégories-différentes/emotional-divergent)- Tag
[PINNED]dans le prompt d'extraction + règle explicite de non-modification - Détection active de contradictions factuelles dans le prompt
- 9 nouveaux settings Pydantic exposés via
.env, 2 dedup constants promues en settings - Log structuré
memory_action_appliedsur chaque create/update/delete - 26 nouveaux tests unitaires
Changed
- Prompt
memory_extraction_prompt.txtentièrement réécrit (WHAT/WHAT NOT, 7 règles refined, catégories précises, 3 few-shots) - Formule de rétention :
0.7 * importance + 0.3 * recency_factor+ pénalité négative* 0.5siusage_count==0past 30j - Seuil dédup 0.5 → 0.4 pour capter les contradictions factuelles
logger.exception()pour stack trace complète dans les handlers scheduler
Fixed
recency_factorétait systématiquement à 0 en pratique (double-usage demax_age_dayscomme gate ET dénominateur decay)- Mémoires importance 0.5 n'étaient jamais purgées malgré leur âge
- Corrections factuelles utilisateur créaient des doublons contradictoires
- Protections obsolètes dans les ADRs qui n'étaient jamais implémentées
Removed
- 3 settings obsolètes :
MEMORY_MAX_AGE_DAYS,MEMORY_MIN_USAGE_COUNT,MEMORY_RETENTION_WEIGHT_USAGE - Règle
Exact words onlydu prompt (remplacée parFacts exact, affect interpretable)
📚 Documentation
- ADR-037, ADR-042, ADR-046 mis à jour (formule + protections)
docs/ARCHITECTURE.md:memory_consolidationajouté aux cron jobsdocs/guides/GUIDE_BACKGROUND_JOBS_APSCHEDULER.md: settings alignésdocs/knowledge/03_settings.md: section mémoire enrichie
Voir CHANGELOG.md pour le détail technique complet.
🤖 Generated with Claude Code