La mémoire est ce qui fait que Crew donne l'impression de vous connaître. Les nouvelles sessions héritent des préférences, du contexte de projet et des corrections apprises de chaque session précédente — sans rejouer les anciennes conversations jeton par jeton.
Il existe six couches de mémoire indépendantes, chacune ayant un objectif précis.
Habitudes de l'utilisateur, préférences d'outils, style de communication. Remplacées intégralement par le consolidateur tous les 30 messages — pas seulement en ajout.
~/.kiro/crew/workspace/memory/preferences.mdExemple :
- Prefers Slack for communication and monitoring - Uses standard Python build system (setuptools/pip) - Prefers deep code analysis with hidden information uncovered - Wants diagrams in documentation for complex flows
CR, paquets, branches, statut. Même cycle de vie que les préférences.
~/.kiro/crew/workspace/memory/projects.md| Ancienneté | Niveau de détail |
|---|---|
| 0–13 jours | Entrées complètes avec horodatage |
| 14–60 jours | Première entrée par jour + décompte |
| 61–180 jours | Date + décompte des entrées seulement |
| 181–364 jours | Non chargé (conservé sur disque) |
| 365+ jours | Supprimé du disque |
~/.kiro/crew/workspace/memory/history/Faits structurés stockés dans SQLite. Toujours active — les embeddings s'activent automatiquement une fois le modèle téléchargé.
semantic_memory + index FAISS optionnelpref.*, project.*, user.* (plus des extras configurables par l'utilisateur)0.6 × vector_score + 0.4 × keyword_score (repli sur mots-clés seulement si le modèle d'embedding n'a pas encore été téléchargé)Exemples d'entrées :
user.dev_desktop_host_current: dev-host.example.com project.kirocrew.zoom_fix_implemented: True pref.prefers_configregions_over_null_guards: True
Le contrôle de confiance empêche les écritures hallucinées. Les écritures du LLM exigent une confiance ≥ 0,8. Les écritures explicites de l'utilisateur gagnent toujours, quel que soit le niveau de confiance. En cas de conflit, la confiance la plus élevée gagne; à confiance égale, la plus récente gagne.
De courts extraits de texte capturant des événements passés précis — « fixed the zoom bug by adding CSS custom properties », « user prefers pytest-asyncio strict mode ». Voyez-les comme des repères consultables dans les conversations passées.
episodic_memories + index FAISS optionnelLa recherche utilise une notation par décroissance avec un reclassement de diversité MMR (basé sur Jaccard, λ=0,6) pour éviter les résultats redondants. Un filtre en deux étapes élimine d'abord les correspondances non pertinentes selon le cosinus brut, puis un classement ajusté à la décroissance ordonne les résultats restants.
Règles enseignées par l'utilisateur qui prennent le pas sur le comportement par défaut. Créées lorsque vous dites « fais toujours X » ou lorsqu'un motif de correction est détecté dans une conversation.
lesson.<md5hash> (confiance 1,0)[Learned corrections]Exemple :
- Dashboard auto-scroll should only trigger when the user is near bottom (within 80px). - Task Runner resets the agent session after each step — the agent can't carry context forward.
User Message │ ├──► learn_add MCP tool ──► write_lesson() ──► Immediate lesson save │ (user says "remember X" or agent is corrected) │ ├──► 30 messages ──► HistoryConsolidator (prefs path) │ ├── Updates preferences.md (wholesale replace) │ ├── Updates projects.md (wholesale replace) │ └── Extracts semantic entries (max 20) │ ├──► 3h idle ──► HistoryConsolidator (history path) │ ├── Appends to history/{date}.md │ ├── Extracts episodic entries (max 10) │ └── Extracts implicit lessons (corrections without "remember")
| Voie | Déclencheur | Mises à jour | Suivi de décalage |
|---|---|---|---|
| Préférences / projets | 30 messages | preferences.md, projects.md, entrées sémantiques | Dictionnaire de décalage en mémoire |
| Historique + leçons | 3 h d'inactivité | history/{date}.md, épisodique, leçons implicites | last_consolidated persisté |
La voie des préférences ne fait pas avancer le marqueur persisté last_consolidated — la consolidation de l'historique couvre toujours tous les messages, même si la consolidation des préférences s'est déclenchée plus tôt.
learn_addLes deux passent par write_lesson(), qui assure la déduplication par sous-chaîne et par chevauchement de sujet.
Trois mécanismes de décroissance indépendants empêchent les mémoires périmées de saturer le contexte.
L'historique plus ancien perd progressivement du détail (voir le tableau ci-dessus). Des marqueurs « quelque chose s'est passé » remplacent éventuellement les entrées complètes, puis sont retirés du contexte tout en étant conservés sur disque comme sauvegarde, puis sont supprimés définitivement à 365 jours.
score = cosine_sim × (0.7 + 0.3 × importance) × exp(-0.03 × days_old)
cosine_sim — pertinence sémantique par rapport à la requête actuelle0.7 + 0.3 × importance — les mémoires très importantes décroissent plus lentementexp(-0.03 × days_old) — décroissance exponentielle : 50 % à ~23 jours, 10 % à ~77 joursÀ 10 000 entrées, les plus anciennes et les moins importantes sont purgées en premier.
1. Lessons (user-explicit, confidence 1.0) 2. Semantic memory (user-explicit writes) 3. Semantic memory (LLM writes, confidence ≥ 0.8) 4. Preferences / projects (consolidation-generated) 5. Episodic memory (relevance-scored fragments) 6. History (time-decayed summaries)
Les leçons gagnent à égalité parce qu'elles sont injectées dans un bloc distinct [Learned corrections] qui indique « ALWAYS follow these. They override default behavior. ».
Le générateur de contexte assemble toutes les sources dans la requête. Différents contenus sont injectés à différents moments.
| Composant | Plafond |
|---|---|
| Règles critiques | ~500 caractères |
| Date/heure actuelle | ~50 caractères |
| Requête système de l'agent | Variable |
| Historique de conversation du fil | 45 000 caractères (compressé par le LLM) |
| Préférences | 4 250 caractères |
| Projets | 6 400 caractères |
| Historique récent | 26 600 caractères |
| Skills (toujours actifs + résumés) | Variable |
| Leçons | 37 250 caractères |
| Mémoire sémantique | 12 000 caractères |
| Composant | Source |
|---|---|
| Mémoire épisodique | Interrogée selon le texte du message, 8 meilleurs fragments (jusqu'à 3 000 caractères) |
| Historique de canal | Contexte de canal de groupe (mode observation Slack) |
| Skills déclenchées | Skills à la demande correspondant aux mots-clés du message |
| Contexte du Hook | Règles de contexte pilotées par configuration |
Le même magasin de mémoire est partagé entre tous les canaux, mais le comportement d'enregistrement varie :
| Canal | Activation | Tampon d'historique | Consolidation de la mémoire |
|---|---|---|---|
| MP | always | Basé sur la session (natif ACP) | ✅ Oui |
| Canal de groupe | mention | 50 msg, TTL de 5 min, en mémoire | ✅ Si mentionné (@) |
| Canal de groupe | observe | 200 msg, TTL de 1 semaine, persisté sur disque | ✅ Si mentionné (@) |
| Canal de groupe | off | Aucun | ❌ Non |
| Onglet du tableau de bord | N/A | Basé sur la session (natif ACP) | ✅ Oui |
Sécurité en mode observation. Seuls les messages provenant d'utilisateurs autorisés (propriétaire + liste d'autorisation) sont enregistrés. Les messages non autorisés sont silencieusement rejetés pour prévenir l'injection de requêtes.
L'interface CLI est la voie la plus rapide pour ajouter une leçon :
kirocrew learn add "always use TypeScript over JavaScript" kirocrew learn add "prefer pytest over unittest" --category tool kirocrew learn list kirocrew learn remove "prefer pytest"
L'outil MCP learn_add est la même interface exposée au LLM — lorsque l'agent reconnaît une correction, il appelle l'outil lui-même.
Le tableau de bord expose des surfaces de gestion de la mémoire :
Distincte des couches de mémoire automatiques, la Knowledge Library est un magasin de documents organisé pour le contenu externe — fichiers, dossiers ou URL que vous souhaitez rendre consultables par l'agent.
local_knowledge_search avec des règles de déclenchement strictes et un seuil de confianceLa bibliothèque est une surface intégrée dans la barre latérale du tableau de bord — pas une application de l'App Store.
La mémoire est incluse dans kirocrew snapshot :
kirocrew snapshot # ~/.kiro/crew/snapshots by default kirocrew restore snapshot.tar.gz # auto-detects replace vs merge
Les instantanés incluent memory.db (épisodique + sémantique), memory_index.db (index FTS5) et workspace/memory/ (markdown structuré). Consultez Instantané et restauration pour le modèle complet.
Memory