{"title":"Minnesmodellen","slug":"memory-model","category":"concepts","summary":"Hur minnen är strukturerade — kategorier, nycklar, taggar, prioriteringar, källor, verifiering.","audience":["human","llm"],"tags":["concept","memory","model","structure"],"difficulty":"intermediate","updated":"2026-06-27","word_count":669,"read_minutes":3,"lang":"sv","translated":true,"requested_lang":"sv","content_markdown":"\n# Minnesmodellen\n\nSynapses minnesmodell är utformad för LLM-agenter — tillräckligt strukturerad\nför pålitlig återkallning, tillräckligt flexibel för alla domäner.\n\n## Minnesanatomi\n\n```json\n{\n  \"id\": \"mem_abc123\",\n  \"category\": \"project\",\n  \"key\": \"project_synapse_status\",\n  \"content\": \"Synapse v1.5.0 deployed on vps1. CI green.\",\n  \"tags\": [\"synapse\", \"deployment\", \"v1.5.0\"],\n  \"priority\": \"high\",\n  \"source\": \"agent\",\n  \"verified\": false,\n  \"confidence\": 0.85,\n  \"expires_at\": null,\n  \"mind_id\": \"m_xyz789\",\n  \"created_at\": \"2026-06-27T...\",\n  \"updated_at\": \"2026-06-27T...\"\n}\n```\n\n## Fält\n\n| Fält | Typ | Obligatorisk | Beskrivning |\n|-------|------|----------|-------------|\n| `id` | sträng | auto | Unikt ID (mem_xxx) |\n| `category` | enum | ✅ | En av 8 kategorier |\n| `key` | sträng | ✅ | Stabil identifierare (används för uppdateringar) |\n| `content` | sträng | ✅ | Minnesinnehållet (valfri text) |\n| `tags` | sträng[] | – | För sökning och filtrering |\n| `priority` | enum | – | low, normal, high, critical (standard: normal) |\n| `source` | enum | auto | user, agent (vem som lagrade det) |\n| `verified` | bool | auto | Har en människa verifierat detta? |\n| `confidence` | flyttal | – | 0.0 till 1.0 (standard: 1.0 för user, 0.7 för agent) |\n| `expires_at` | tidsstämpel | – | När minnet ska glömmas |\n| `mind_id` | sträng | auto | Vilken mind som äger detta |\n| `created_at` | tidsstämpel | auto | Först lagrad |\n| `updated_at` | tidsstämpel | auto | Senast ändrad |\n\n## Kategorier\n\nÅtta kategorier täcker vanliga användningsområden för LLM-agenter:\n\n| Kategori | Syfte | Exempel på innehåll |\n|----------|---------|-----------------|\n| `identity` | Vem användaren är | \"User is Michael Schäfer, software engineer in Berlin\" |\n| `preference` | Användarinställningar | \"Prefers concise technical responses\" |\n| `fact` | Verifierbara fakta | \"Office is in Berlin, timezone Europe/Berlin\" |\n| `project` | Projektstatus | \"Synapse v1.5.0 deployed, working on v1.6.0 docs\" |\n| `skill` | Användarens färdigheter | \"Advanced Python, 10+ years\" |\n| `mistake` | Tidigare fel | \"Forgot to bump npm version — CI failed\" |\n| `context` | Sessionskontext | \"Currently reviewing PR #42\" |\n| `note` | Diverse anteckningar | \"Try Redis for caching next sprint\" |\n\n## Nycklar: stabila identifierare\n\nFältet `key` är kritiskt — det är så ni uppdaterar minnen utan att skapa\ndubbletter.\n\n```python\n# First store\nstore(\"project\", \"project_synapse_status\", \"v1.4.0 deployed\", priority=\"high\")\n\n# Update with same key (overwrites, doesn't duplicate)\nstore(\"project\", \"project_synapse_status\", \"v1.5.0 deployed\", priority=\"high\")\n```\n\n**Nyckelregler:**\n\n- Måste vara unik inom (category, mind)\n- Använd `snake_case`\n- Prefixa med kategori för tydlighet: `preference_communication`, `mistake_npm_version`\n- Håll stabil — ändra inte nycklar efter skapandet\n\n## Taggar: för sökning\n\nTaggar möjliggör snabb filtrering och sökning:\n\n```bash\n# Find all memories with tag \"docker\"\nGET /memory/by-tag?tag=docker\n\n# FTS5 search within tagged subset\nGET /memory/search?q=swarm&tag=docker\n```\n\n**Bästa praxis för taggar:**\n\n- 2–5 taggar per minne (överätta inte)\n- Gemener för konsekvens\n- Använd projektnamn, ämnen, tekniker\n- Taggar är skiftesokänsliga\n\n## Prioriteringsnivåer\n\n| Prioritering | När den ska användas | Återkallningsbeteende |\n|----------|-------------|-----------------|\n| `critical` | Identitet, juridik, oåterkalleligt | Alltid högst upp i återkallning |\n| `high` | Aktiva projekt, nyckelinställningar | Framträdande i återkallning |\n| `normal` | De flesta minnen (standard) | Standardordning för återkallning |\n| `low` | Efemärt, trevligt att veta | Kan sammanfattas |\n\n`/memory/recall` sorterar efter prioritet (kritisk först), sedan efter aktualitet.\n\n## Källa: användare vs agent\n\nMinnen taggas med `source`:\n\n- `user` — lagrad av en människa (via JWT eller mänskligt gränssnitt)\n- `agent` — lagrad av en LLM-agent (via Mind Key)\n\nDetta påverkar:\n\n- **Verifiering**: `user`-minnen verifieras automatiskt, `agent`-minnen inte\n- **Konfidens**: `user` standard 1.0, `agent` 0.7\n- **Återkallning**: `/memory/recall` markerar overifierade minnen med \"(unverified)\"\n\n> [!NOTE]\n> Behandla `agent`-källade minnen med lämplig skepsis. De kan vara härledda\n> eller antagna snarare än direkt angivna av användaren.\n\n## Verifiering\n\nFlaggan `verified` indikerar att en människa har bekräftat minnet:\n\n- `user`-minnen: auto-verifierade (`true`)\n- `agent`-minnen: standard overifierade (`false`)\n\nVerifiera minnen via:\n\n```bash\ncurl -X POST https://synapse.schaefer.zone/memory/mem_001/verify \\\n  -H \"Authorization: Bearer YOUR_JWT\"\n```\n\n> [!NOTE]\n> Verifiering kräver JWT (mänsklig autentisering), inte Mind Key\n> (agent-autentisering). Detta säkerställer att endast människor kan markera\n> minnen som verifierade.\n\n## Konfidens\n\nFältet `confidence` (0.0 till 1.0) indikerar hur pålitligt minnet är:\n\n- 1.0 — direkt angivet av användare\n- 0.7 — härlett av agent\n- 0.5 — osäkert, behöver verifiering\n- 0.0 — uttryckligen tvivelaktigt\n\nSätt konfidens vid lagring:\n\n```json\n{\n  \"category\": \"preference\",\n  \"key\": \"prefers_dark_mode\",\n  \"content\": \"User seems to prefer dark mode (based on their IDE screenshots)\",\n  \"confidence\": 0.5,\n  \"source\": \"agent\"\n}\n```\n\n## Utgång\n\nSätt `expires_at` för tidskänsliga minnen:\n\n```json\n{\n  \"category\": \"context\",\n  \"key\": \"current_meeting_topic\",\n  \"content\": \"Discussing Q3 roadmap\",\n  \"expires_at\": \"2026-06-28T00:00:00Z\"\n}\n```\n\nUtgångna minnen returneras inte av `/memory/recall` (men finns fortfarande i DB).\nAnvänd `/memory/expiring?within=7d` för att se minnen som löper ut snart.\n\n## Minneslivscykel\n\n```\n                  ┌─────────────────┐\n                  │     Create      │\n                  │  POST /memory   │\n                  └────────┬────────┘\n                           │\n                           ▼\n                  ┌─────────────────┐\n                  │     Active      │ ◀──── PUT /memory/:id (update)\n                  │  (in recall)    │\n                  └────────┬────────┘\n                           │\n              ┌────────────┼────────────┐\n              │            │            │\n              ▼            ▼            ▼\n        ┌──────────┐ ┌──────────┐ ┌──────────┐\n        │ Expired  │ │ Verified │ │ Deleted  │\n        │ (in DB)  │ │ (flag)   │ │ (gone)   │\n        └──────────┘ └──────────┘ └──────────┘\n```\n\n## Återkallningsbeteende\n\n`GET /memory/recall` returnerar en oformaterad textsammanfattning optimerad\nför LLM-kontext:\n\n```\nMind: Michael's Mind\nMemories: 12 total (10 verified, 2 unverified)\n\n[001] identity (CRITICAL) [verified]\n  user_name\n  Michael Schäfer\n  Tags: person, identity\n\n[002] preference (HIGH) [verified]\n  communication_style\n  Prefers concise technical responses\n  Tags: communication\n\n[003] project (HIGH) [unverified]\n  synapse_status\n  v1.5.0 deployed, working on v1.6.0 docs\n  Tags: synapse, deployment\n\n...\n```\n\n- Sorterat efter prioritet (kritisk → låg), sedan efter aktualitet\n- Overifierade minnen markerade med `[unverified]`\n- Taggar inkluderade för kontext\n- Oformaterad text (ingen JSON-tolkning behövs)\n\n## Nästa steg\n\n- [Memory API](/docs/api/memory)\n- [Minnesbästa praxis](/docs/guides/memory-best-practices)\n- [FTS5-sökning](/docs/concepts/fts5-search)\n","content_html":"<h1>Minnesmodellen</h1>\n<p>Synapses minnesmodell är utformad för LLM-agenter — tillräckligt strukturerad\nför pålitlig återkallning, tillräckligt flexibel för alla domäner.</p>\n<h2>Minnesanatomi</h2>\n<pre><code class=\"hljs language-json\"><span class=\"hljs-punctuation\">{</span>\n  <span class=\"hljs-attr\">&quot;id&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;mem_abc123&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;category&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;project&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;key&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;project_synapse_status&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;content&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;Synapse v1.5.0 deployed on vps1. CI green.&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;tags&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-punctuation\">[</span><span class=\"hljs-string\">&quot;synapse&quot;</span><span class=\"hljs-punctuation\">,</span> <span class=\"hljs-string\">&quot;deployment&quot;</span><span class=\"hljs-punctuation\">,</span> <span class=\"hljs-string\">&quot;v1.5.0&quot;</span><span class=\"hljs-punctuation\">]</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;priority&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;high&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;source&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;agent&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;verified&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-literal\"><span class=\"hljs-keyword\">false</span></span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;confidence&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-number\">0.85</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;expires_at&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-literal\"><span class=\"hljs-keyword\">null</span></span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;mind_id&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;m_xyz789&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;created_at&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;2026-06-27T...&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;updated_at&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;2026-06-27T...&quot;</span>\n<span class=\"hljs-punctuation\">}</span></code></pre><h2>Fält</h2>\n<table>\n<thead>\n<tr>\n<th>Fält</th>\n<th>Typ</th>\n<th>Obligatorisk</th>\n<th>Beskrivning</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>id</code></td>\n<td>sträng</td>\n<td>auto</td>\n<td>Unikt ID (mem_xxx)</td>\n</tr>\n<tr>\n<td><code>category</code></td>\n<td>enum</td>\n<td>✅</td>\n<td>En av 8 kategorier</td>\n</tr>\n<tr>\n<td><code>key</code></td>\n<td>sträng</td>\n<td>✅</td>\n<td>Stabil identifierare (används för uppdateringar)</td>\n</tr>\n<tr>\n<td><code>content</code></td>\n<td>sträng</td>\n<td>✅</td>\n<td>Minnesinnehållet (valfri text)</td>\n</tr>\n<tr>\n<td><code>tags</code></td>\n<td>sträng[]</td>\n<td>–</td>\n<td>För sökning och filtrering</td>\n</tr>\n<tr>\n<td><code>priority</code></td>\n<td>enum</td>\n<td>–</td>\n<td>low, normal, high, critical (standard: normal)</td>\n</tr>\n<tr>\n<td><code>source</code></td>\n<td>enum</td>\n<td>auto</td>\n<td>user, agent (vem som lagrade det)</td>\n</tr>\n<tr>\n<td><code>verified</code></td>\n<td>bool</td>\n<td>auto</td>\n<td>Har en människa verifierat detta?</td>\n</tr>\n<tr>\n<td><code>confidence</code></td>\n<td>flyttal</td>\n<td>–</td>\n<td>0.0 till 1.0 (standard: 1.0 för user, 0.7 för agent)</td>\n</tr>\n<tr>\n<td><code>expires_at</code></td>\n<td>tidsstämpel</td>\n<td>–</td>\n<td>När minnet ska glömmas</td>\n</tr>\n<tr>\n<td><code>mind_id</code></td>\n<td>sträng</td>\n<td>auto</td>\n<td>Vilken mind som äger detta</td>\n</tr>\n<tr>\n<td><code>created_at</code></td>\n<td>tidsstämpel</td>\n<td>auto</td>\n<td>Först lagrad</td>\n</tr>\n<tr>\n<td><code>updated_at</code></td>\n<td>tidsstämpel</td>\n<td>auto</td>\n<td>Senast ändrad</td>\n</tr>\n</tbody></table>\n<h2>Kategorier</h2>\n<p>Åtta kategorier täcker vanliga användningsområden för LLM-agenter:</p>\n<table>\n<thead>\n<tr>\n<th>Kategori</th>\n<th>Syfte</th>\n<th>Exempel på innehåll</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>identity</code></td>\n<td>Vem användaren är</td>\n<td>&quot;User is Michael Schäfer, software engineer in Berlin&quot;</td>\n</tr>\n<tr>\n<td><code>preference</code></td>\n<td>Användarinställningar</td>\n<td>&quot;Prefers concise technical responses&quot;</td>\n</tr>\n<tr>\n<td><code>fact</code></td>\n<td>Verifierbara fakta</td>\n<td>&quot;Office is in Berlin, timezone Europe/Berlin&quot;</td>\n</tr>\n<tr>\n<td><code>project</code></td>\n<td>Projektstatus</td>\n<td>&quot;Synapse v1.5.0 deployed, working on v1.6.0 docs&quot;</td>\n</tr>\n<tr>\n<td><code>skill</code></td>\n<td>Användarens färdigheter</td>\n<td>&quot;Advanced Python, 10+ years&quot;</td>\n</tr>\n<tr>\n<td><code>mistake</code></td>\n<td>Tidigare fel</td>\n<td>&quot;Forgot to bump npm version — CI failed&quot;</td>\n</tr>\n<tr>\n<td><code>context</code></td>\n<td>Sessionskontext</td>\n<td>&quot;Currently reviewing PR #42&quot;</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>Diverse anteckningar</td>\n<td>&quot;Try Redis for caching next sprint&quot;</td>\n</tr>\n</tbody></table>\n<h2>Nycklar: stabila identifierare</h2>\n<p>Fältet <code>key</code> är kritiskt — det är så ni uppdaterar minnen utan att skapa\ndubbletter.</p>\n<pre><code class=\"hljs language-python\"><span class=\"hljs-comment\"># First store</span>\nstore(<span class=\"hljs-string\">&quot;project&quot;</span>, <span class=\"hljs-string\">&quot;project_synapse_status&quot;</span>, <span class=\"hljs-string\">&quot;v1.4.0 deployed&quot;</span>, priority=<span class=\"hljs-string\">&quot;high&quot;</span>)\n\n<span class=\"hljs-comment\"># Update with same key (overwrites, doesn&#x27;t duplicate)</span>\nstore(<span class=\"hljs-string\">&quot;project&quot;</span>, <span class=\"hljs-string\">&quot;project_synapse_status&quot;</span>, <span class=\"hljs-string\">&quot;v1.5.0 deployed&quot;</span>, priority=<span class=\"hljs-string\">&quot;high&quot;</span>)</code></pre><p><strong>Nyckelregler:</strong></p>\n<ul>\n<li>Måste vara unik inom (category, mind)</li>\n<li>Använd <code>snake_case</code></li>\n<li>Prefixa med kategori för tydlighet: <code>preference_communication</code>, <code>mistake_npm_version</code></li>\n<li>Håll stabil — ändra inte nycklar efter skapandet</li>\n</ul>\n<h2>Taggar: för sökning</h2>\n<p>Taggar möjliggör snabb filtrering och sökning:</p>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># Find all memories with tag &quot;docker&quot;</span>\nGET /memory/by-tag?tag=docker\n\n<span class=\"hljs-comment\"># FTS5 search within tagged subset</span>\nGET /memory/search?q=swarm&amp;tag=docker</code></pre><p><strong>Bästa praxis för taggar:</strong></p>\n<ul>\n<li>2–5 taggar per minne (överätta inte)</li>\n<li>Gemener för konsekvens</li>\n<li>Använd projektnamn, ämnen, tekniker</li>\n<li>Taggar är skiftesokänsliga</li>\n</ul>\n<h2>Prioriteringsnivåer</h2>\n<table>\n<thead>\n<tr>\n<th>Prioritering</th>\n<th>När den ska användas</th>\n<th>Återkallningsbeteende</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>critical</code></td>\n<td>Identitet, juridik, oåterkalleligt</td>\n<td>Alltid högst upp i återkallning</td>\n</tr>\n<tr>\n<td><code>high</code></td>\n<td>Aktiva projekt, nyckelinställningar</td>\n<td>Framträdande i återkallning</td>\n</tr>\n<tr>\n<td><code>normal</code></td>\n<td>De flesta minnen (standard)</td>\n<td>Standardordning för återkallning</td>\n</tr>\n<tr>\n<td><code>low</code></td>\n<td>Efemärt, trevligt att veta</td>\n<td>Kan sammanfattas</td>\n</tr>\n</tbody></table>\n<p><code>/memory/recall</code> sorterar efter prioritet (kritisk först), sedan efter aktualitet.</p>\n<h2>Källa: användare vs agent</h2>\n<p>Minnen taggas med <code>source</code>:</p>\n<ul>\n<li><code>user</code> — lagrad av en människa (via JWT eller mänskligt gränssnitt)</li>\n<li><code>agent</code> — lagrad av en LLM-agent (via Mind Key)</li>\n</ul>\n<p>Detta påverkar:</p>\n<ul>\n<li><strong>Verifiering</strong>: <code>user</code>-minnen verifieras automatiskt, <code>agent</code>-minnen inte</li>\n<li><strong>Konfidens</strong>: <code>user</code> standard 1.0, <code>agent</code> 0.7</li>\n<li><strong>Återkallning</strong>: <code>/memory/recall</code> markerar overifierade minnen med &quot;(unverified)&quot;</li>\n</ul>\n<div class=\"callout callout-note\">Behandla `agent`-källade minnen med lämplig skepsis. De kan vara härledda\neller antagna snarare än direkt angivna av användaren.</div><h2>Verifiering</h2>\n<p>Flaggan <code>verified</code> indikerar att en människa har bekräftat minnet:</p>\n<ul>\n<li><code>user</code>-minnen: auto-verifierade (<code>true</code>)</li>\n<li><code>agent</code>-minnen: standard overifierade (<code>false</code>)</li>\n</ul>\n<p>Verifiera minnen via:</p>\n<pre><code class=\"hljs language-bash\">curl -X POST https://synapse.schaefer.zone/memory/mem_001/verify \\\n  -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_JWT&quot;</span></code></pre><div class=\"callout callout-note\">Verifiering kräver JWT (mänsklig autentisering), inte Mind Key\n(agent-autentisering). Detta säkerställer att endast människor kan markera\nminnen som verifierade.</div><h2>Konfidens</h2>\n<p>Fältet <code>confidence</code> (0.0 till 1.0) indikerar hur pålitligt minnet är:</p>\n<ul>\n<li>1.0 — direkt angivet av användare</li>\n<li>0.7 — härlett av agent</li>\n<li>0.5 — osäkert, behöver verifiering</li>\n<li>0.0 — uttryckligen tvivelaktigt</li>\n</ul>\n<p>Sätt konfidens vid lagring:</p>\n<pre><code class=\"hljs language-json\"><span class=\"hljs-punctuation\">{</span>\n  <span class=\"hljs-attr\">&quot;category&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;preference&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;key&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;prefers_dark_mode&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;content&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;User seems to prefer dark mode (based on their IDE screenshots)&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;confidence&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-number\">0.5</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;source&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;agent&quot;</span>\n<span class=\"hljs-punctuation\">}</span></code></pre><h2>Utgång</h2>\n<p>Sätt <code>expires_at</code> för tidskänsliga minnen:</p>\n<pre><code class=\"hljs language-json\"><span class=\"hljs-punctuation\">{</span>\n  <span class=\"hljs-attr\">&quot;category&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;context&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;key&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;current_meeting_topic&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;content&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;Discussing Q3 roadmap&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;expires_at&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;2026-06-28T00:00:00Z&quot;</span>\n<span class=\"hljs-punctuation\">}</span></code></pre><p>Utgångna minnen returneras inte av <code>/memory/recall</code> (men finns fortfarande i DB).\nAnvänd <code>/memory/expiring?within=7d</code> för att se minnen som löper ut snart.</p>\n<h2>Minneslivscykel</h2>\n<pre><code class=\"hljs language-plaintext\">                  ┌─────────────────┐\n                  │     Create      │\n                  │  POST /memory   │\n                  └────────┬────────┘\n                           │\n                           ▼\n                  ┌─────────────────┐\n                  │     Active      │ ◀──── PUT /memory/:id (update)\n                  │  (in recall)    │\n                  └────────┬────────┘\n                           │\n              ┌────────────┼────────────┐\n              │            │            │\n              ▼            ▼            ▼\n        ┌──────────┐ ┌──────────┐ ┌──────────┐\n        │ Expired  │ │ Verified │ │ Deleted  │\n        │ (in DB)  │ │ (flag)   │ │ (gone)   │\n        └──────────┘ └──────────┘ └──────────┘</code></pre><h2>Återkallningsbeteende</h2>\n<p><code>GET /memory/recall</code> returnerar en oformaterad textsammanfattning optimerad\nför LLM-kontext:</p>\n<pre><code class=\"hljs language-plaintext\">Mind: Michael&#x27;s Mind\nMemories: 12 total (10 verified, 2 unverified)\n\n[001] identity (CRITICAL) [verified]\n  user_name\n  Michael Schäfer\n  Tags: person, identity\n\n[002] preference (HIGH) [verified]\n  communication_style\n  Prefers concise technical responses\n  Tags: communication\n\n[003] project (HIGH) [unverified]\n  synapse_status\n  v1.5.0 deployed, working on v1.6.0 docs\n  Tags: synapse, deployment\n\n...</code></pre><ul>\n<li>Sorterat efter prioritet (kritisk → låg), sedan efter aktualitet</li>\n<li>Overifierade minnen markerade med <code>[unverified]</code></li>\n<li>Taggar inkluderade för kontext</li>\n<li>Oformaterad text (ingen JSON-tolkning behövs)</li>\n</ul>\n<h2>Nästa steg</h2>\n<ul>\n<li><a href=\"/docs/api/memory\">Memory API</a></li>\n<li><a href=\"/docs/guides/memory-best-practices\">Minnesbästa praxis</a></li>\n<li><a href=\"/docs/concepts/fts5-search\">FTS5-sökning</a></li>\n</ul>\n","urls":{"html":"/docs/concepts/memory-model","text":"/docs/concepts/memory-model?format=text","json":"/docs/concepts/memory-model?format=json","llm":"/docs/concepts/memory-model?format=llm"},"translations_available":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}