Skip to main content

Het Memory-model

Hoe herinneringen zijn gestructureerd — categorieën, sleutels, tags, prioriteiten, bronnen, verificatie.


Het Memory-model

Het memory-model van Synapse is ontworpen voor LLM-agents — gestructureerd genoeg voor betrouwbare recall, flexibel genoeg voor elk domein.

Anatomie van een herinnering

{
  "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..."
}

Velden

Veld Type Vereist Beschrijving
id string auto Unieke ID (mem_xxx)
category enum Een van 8 categorieën
key string Stabiele identificator (gebruikt voor updates)
content string De memory-inhoud (willekeurige tekst)
tags string[] Voor zoeken en filteren
priority enum low, normal, high, critical (standaard: normal)
source enum auto user, agent (wie heeft het opgeslagen)
verified bool auto Heeft een mens dit geverifieerd?
confidence float 0.0 tot 1.0 (standaard: 1.0 voor user, 0.7 voor agent)
expires_at timestamp Wanneer deze herinnering vergeten moet worden
mind_id string auto Welke mind eigenaar is
created_at timestamp auto Eerst opgeslagen
updated_at timestamp auto Laatst gewijzigd

Categorieën

Acht categorieën dekken de veelvoorkomende LLM-agent-toepassingen:

Categorie Doel Voorbeeldinhoud
identity Wie de gebruiker is "Gebruiker is Michael Schäfer, software engineer in Berlin"
preference Gebruikersvoorkeuren "Geeft de voorkeur aan beknopte technische antwoorden"
fact Verifieerbare feiten "Kantoor is in Berlin, tijdzone Europe/Berlin"
project Projectstatus "Synapse v1.5.0 uitgerold, bezig met v1.6.0 docs"
skill Vaardigheden van de gebruiker "Gevorderd Python, 10+ jaar"
mistake Eerdere fouten "Vergeten npm-versie te verhogen — CI faalde"
context Sessie-context "Momenteel PR #42 aan het beoordelen"
note Diverse notities "Probeer Redis voor caching in volgende sprint"

Sleutels: stabiele identificatoren

Het key-veld is kritiek — het is hoe u herinneringen bijwerkt zonder duplicaten te maken.

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

# Update with same key (overwrites, doesn't duplicate)
store("project", "project_synapse_status", "v1.5.0 deployed", priority="high")

Sleutelregels:

  • Moet uniek zijn binnen (category, mind)
  • Gebruik snake_case
  • Voorvoeg met categorie voor duidelijkheid: preference_communication, mistake_npm_version
  • Houd stabiel — wijzig sleutels niet na aanmaak

Tags: voor zoeken

Tags maken snelle filtering en zoekopdrachten mogelijk:

# Find all memories with tag "docker"
GET /memory/by-tag?tag=docker

# FTS5 search within tagged subset
GET /memory/search?q=swarm&tag=docker

Tag-best-practices:

  • 2-5 tags per herinnering (over-tag niet)
  • Kleine letters voor consistentie
  • Gebruik projectnamen, onderwerpen, technologieën
  • Tags zijn niet hoofdlettergevoelig

Prioriteitsniveaus

Prioriteit Wanneer te gebruiken Recall-gedrag
critical Identiteit, juridisch, onomkeerbaar Altijd bovenaan recall
high Actieve projecten, kernvoorkeuren Prominent in recall
normal Meeste herinneringen (standaard) Standaard recall-volgorde
low Efemeer, leuk-om-te-weten Kan worden samengevat

/memory/recall sorteert op prioriteit (critical eerst), dan op recentheid.

Bron: User versus Agent

Herinneringen worden getagd met source:

  • user — opgeslagen door een mens (via JWT of human-UI)
  • agent — opgeslagen door een LLM-agent (via Mind Key)

Dit beïnvloedt:

  • Verificatie: user-herinneringen worden automatisch geverifieerd, agent-herinneringen niet
  • Betrouwbaarheid: user standaard 1.0, agent 0.7
  • Recall: /memory/recall markeert niet-geverifieerde herinneringen met "(unverified)"
Behandel `agent`-bron-herinneringen met gepast skepticisme. Ze kunnen zijn afgeleid of aangenomen in plaats van direct door de gebruiker gesteld.

Verificatie

De verified-vlag geeft aan dat een mens de herinnering heeft bevestigd:

  • user-herinneringen: automatisch geverifieerd (true)
  • agent-herinneringen: standaard niet-geverifieerd (false)

Verifieer herinneringen via:

curl -X POST https://synapse.schaefer.zone/memory/mem_001/verify \
  -H "Authorization: Bearer YOUR_JWT"
Verificatie vereist JWT (mens-auth), niet Mind Key (agent-auth). Dit zorgt ervoor dat alleen mensen herinneringen als geverifieerd kunnen markeren.

Betrouwbaarheid

Het confidence-veld (0.0 tot 1.0) geeft aan hoe betrouwbaar de herinnering is:

  • 1.0 — direct door gebruiker gesteld
  • 0.7 — door agent afgeleid
  • 0.5 — onzeker, vereist verificatie
  • 0.0 — expliciet betwijfeld

Stel betrouwbaarheid in bij opslaan:

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

Verval

Stel expires_at in voor tijdgevoelige herinneringen:

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

Verlopen herinneringen worden niet geretourneerd door /memory/recall (maar bestaan nog wel in DB). Gebruik /memory/expiring?within=7d om herinneringen te zien die binnenkort verlopen.

Memory-levenscyclus

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

Recall-gedrag

GET /memory/recall retourneert een platte-tekst samenvatting geoptimaliseerd voor LLM-context:

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

...
  • Gesorteerd op prioriteit (critical → low), dan op recentheid
  • Niet-geverifieerde herinneringen gemarkeerd met [unverified]
  • Tags inbegrepen voor context
  • Platte tekst (geen JSON-parsing nodig)

Volgende stappen