Skip to main content

Le modèle de mémoire

Comment les mémoires sont structurées — catégories, clés, tags, priorités, sources, vérification.


Le modèle de mémoire

Le modèle de mémoire de Synapse est conçu pour les agents LLM — suffisamment structuré pour un rappel fiable, suffisamment flexible pour tout domaine.

Anatomie d'une mémoire

{
  "id": "mem_abc123",
  "category": "project",
  "key": "project_synapse_status",
  "content": "Synapse v1.5.0 deployed on vps1. CI green.",
  "tags": ["synapse", "deployment", "v1.5.0"],
  "priority": "high",
  "source": "agent",
  "verified": false,
  "confidence": 0.85,
  "expires_at": null,
  "mind_id": "m_xyz789",
  "created_at": "2026-06-27T...",
  "updated_at": "2026-06-27T..."
}

Champs

Champ Type Requis Description
id string auto Identifiant unique (mem_xxx)
category enum Une des 8 catégories
key string Identifiant stable (utilisé pour les mises à jour)
content string Le contenu de la mémoire (n'importe quel texte)
tags string[] Pour la recherche et le filtrage
priority enum low, normal, high, critical (par défaut : normal)
source enum auto user, agent (qui l'a stockée)
verified bool auto Un humain a-t-il vérifié ceci ?
confidence float 0.0 à 1.0 (par défaut : 1.0 pour user, 0.7 pour agent)
expires_at timestamp Quand oublier cette mémoire
mind_id string auto Quel mind possède ceci
created_at timestamp auto Premier stockage
updated_at timestamp auto Dernière modification

Catégories

Huit catégories couvrent les cas d'usage courants des agents LLM :

Catégorie Rôle Exemple de contenu
identity Qui est l'utilisateur "User is Michael Schäfer, software engineer in Berlin"
preference Préférences utilisateur "Prefers concise technical responses"
fact Faits vérifiables "Office is in Berlin, timezone Europe/Berlin"
project Statut de projet "Synapse v1.5.0 deployed, working on v1.6.0 docs"
skill Compétences de l'utilisateur "Advanced Python, 10+ years"
mistake Erreurs passées "Forgot to bump npm version — CI failed"
context Contexte de session "Currently reviewing PR #42"
note Notes diverses "Try Redis for caching next sprint"

Clés : identifiants stables

Le champ key est critique — c'est ainsi que vous mettez à jour les mémoires sans créer de doublons.

# Premier stockage
store("project", "project_synapse_status", "v1.4.0 deployed", priority="high")

# Mise à jour avec la même clé (écrase, ne duplique pas)
store("project", "project_synapse_status", "v1.5.0 deployed", priority="high")

Règles de clé :

  • Doit être unique dans (catégorie, mind)
  • Utilisez snake_case
  • Préfixez avec la catégorie pour plus de clarté : preference_communication, mistake_npm_version
  • Gardez-la stable — ne changez pas les clés après création

Tags : pour la recherche

Les tags permettent le filtrage et la recherche rapides :

# Trouver toutes les mémoires avec le tag "docker"
GET /memory/by-tag?tag=docker

# Recherche FTS5 dans un sous-ensemble tagué
GET /memory/search?q=swarm&tag=docker

Bonnes pratiques de tag :

  • 2-5 tags par mémoire (ne pas sur-tagger)
  • Minuscules pour la cohérence
  • Utilisez des noms de projet, sujets, technologies
  • Les tags sont insensibles à la casse

Niveaux de priorité

Priorité Quand l'utiliser Comportement de rappel
critical Identité, juridique, irréversible Toujours en haut du rappel
high Projets actifs, préférences clés Proéminent dans le rappel
normal La plupart des mémoires (par défaut) Ordre de rappel standard
low Éphémère, utile à savoir Peut être résumé

/memory/recall trie par priorité (critical d'abord), puis par récence.

Source : User vs Agent

Les mémoires sont marquées avec source :

  • user — stockée par un humain (via JWT ou interface humaine)
  • agent — stockée par un agent LLM (via Mind Key)

Cela affecte :

  • Vérification : les mémoires user sont auto-vérifiées, les mémoires agent ne le sont pas
  • Confiance : user par défaut à 1.0, agent à 0.7
  • Rappel : /memory/recall marque les mémoires non vérifiées avec « (unverified) »
Traitez les mémoires `agent` avec un scepticisme approprié. Elles peuvent être déduites ou supposées plutôt que directement énoncées par l'utilisateur.

Vérification

Le drapeau verified indique qu'un humain a confirmé la mémoire :

  • Mémoires user : auto-vérifiées (true)
  • Mémoires agent : non vérifiées par défaut (false)

Vérifiez les mémoires via :

curl -X POST https://synapse.schaefer.zone/memory/mem_001/verify \
  -H "Authorization: Bearer YOUR_JWT"
La vérification nécessite un JWT (auth humaine), pas une Mind Key (auth agent). Cela garantit que seuls les humains peuvent marquer des mémoires comme vérifiées.

Confiance

Le champ confidence (0.0 à 1.0) indique la fiabilité de la mémoire :

  • 1.0 — directement énoncée par l'utilisateur
  • 0.7 — déduite par l'agent
  • 0.5 — incertaine, nécessite vérification
  • 0.0 — explicitement doutée

Définissez la confiance lors du stockage :

{
  "category": "preference",
  "key": "prefers_dark_mode",
  "content": "User seems to prefer dark mode (based on their IDE screenshots)",
  "confidence": 0.5,
  "source": "agent"
}

Expiration

Définissez expires_at pour les mémoires sensibles au temps :

{
  "category": "context",
  "key": "current_meeting_topic",
  "content": "Discussing Q3 roadmap",
  "expires_at": "2026-06-28T00:00:00Z"
}

Les mémoires expirées ne sont pas renvoyées par /memory/recall (mais existent toujours en base). Utilisez /memory/expiring?within=7d pour voir les mémoires expirant bientôt.

Cycle de vie d'une mémoire

                  ┌─────────────────┐
                  │     Create      │
                  │  POST /memory   │
                  └────────┬────────┘
                           │
                           ▼
                  ┌─────────────────┐
                  │     Active      │ ◀──── PUT /memory/:id (update)
                  │  (in recall)    │
                  └────────┬────────┘
                           │
              ┌────────────┼────────────┐
              │            │            │
              ▼            ▼            ▼
        ┌──────────┐ ┌──────────┐ ┌──────────┐
        │ Expired  │ │ Verified │ │ Deleted  │
        │ (in DB)  │ │ (flag)   │ │ (gone)   │
        └──────────┘ └──────────┘ └──────────┘

Comportement de rappel

GET /memory/recall renvoie un résumé en texte brut optimisé pour le contexte LLM :

Mind: Michael's Mind
Memories: 12 total (10 verified, 2 unverified)

[001] identity (CRITICAL) [verified]
  user_name
  Michael Schäfer
  Tags: person, identity

[002] preference (HIGH) [verified]
  communication_style
  Prefers concise technical responses
  Tags: communication

[003] project (HIGH) [unverified]
  synapse_status
  v1.5.0 deployed, working on v1.6.0 docs
  Tags: synapse, deployment

...
  • Trié par priorité (critical → low), puis par récence
  • Mémoires non vérifiées marquées avec [unverified]
  • Tags inclus pour le contexte
  • Texte brut (pas d'analyse JSON nécessaire)

Prochaines étapes