{"title":"Model pamięci","slug":"memory-model","category":"concepts","summary":"Jak ustrukturyzowane są wspomnienia — kategorie, klucze, tagi, priorytety, źródła, weryfikacja.","audience":["human","llm"],"tags":["concept","memory","model","structure"],"difficulty":"intermediate","updated":"2026-06-27","word_count":693,"read_minutes":3,"lang":"pl","translated":true,"requested_lang":"pl","content_markdown":"\n# Model pamięci\n\nModel pamięci Synapse jest zaprojektowany dla agentów LLM — na tyle\nustrukturyzowany, by zapewnić niezawodne przypominanie, na tyle elastyczny, by\npasował do każdej domeny.\n\n## Anatomia wspomnienia\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## Pola\n\n| Pole | Typ | Wymagane | Opis |\n|-------|------|----------|-------------|\n| `id` | string | auto | Unikalny identyfikator (mem_xxx) |\n| `category` | enum | ✅ | Jedna z 8 kategorii |\n| `key` | string | ✅ | Stabilny identyfikator (używany do aktualizacji) |\n| `content` | string | ✅ | Treść wspomnienia (dowolny tekst) |\n| `tags` | string[] | – | Do wyszukiwania i filtrowania |\n| `priority` | enum | – | low, normal, high, critical (domyślnie: normal) |\n| `source` | enum | auto | user, agent (kto zapisał) |\n| `verified` | bool | auto | Czy człowiek to zweryfikował? |\n| `confidence` | float | – | 0.0-1.0 (domyślnie: 1.0 dla użytkownika, 0.7 dla agenta) |\n| `expires_at` | timestamp | – | Kiedy zapomnieć to wspomnienie |\n| `mind_id` | string | auto | Do którego umysłu należy |\n| `created_at` | timestamp | auto | Pierwszy zapis |\n| `updated_at` | timestamp | auto | Ostatnia modyfikacja |\n\n## Kategorie\n\nOsiem kategorii pokrywa typowe przypadki użycia agentów LLM:\n\n| Kategoria | Przeznaczenie | Przykładowa treść |\n|----------|---------|-----------------|\n| `identity` | Kim jest użytkownik | „User is Michael Schäfer, software engineer in Berlin\" |\n| `preference` | Preferencje użytkownika | „Prefers concise technical responses\" |\n| `fact` | Weryfikowalne fakty | „Office is in Berlin, timezone Europe/Berlin\" |\n| `project` | Status projektu | „Synapse v1.5.0 deployed, working on v1.6.0 docs\" |\n| `skill` | Umiejętności użytkownika | „Advanced Python, 10+ years\" |\n| `mistake` | Błędy z przeszłości | „Forgot to bump npm version — CI failed\" |\n| `context` | Kontekst sesji | „Currently reviewing PR #42\" |\n| `note` | Różne notatki | „Try Redis for caching next sprint\" |\n\n## Klucze: stabilne identyfikatory\n\nPole `key` jest kluczowe — to sposób aktualizacji wspomnień bez tworzenia\nduplikatów.\n\n```python\n# Pierwszy zapis\nstore(\"project\", \"project_synapse_status\", \"v1.4.0 deployed\", priority=\"high\")\n\n# Aktualizacja tym samym kluczem (nadpisuje, nie duplikuje)\nstore(\"project\", \"project_synapse_status\", \"v1.5.0 deployed\", priority=\"high\")\n```\n\n**Zasady kluczy:**\n\n- Musi być unikalny w obrębie (kategoria, umysł)\n- Używać `snake_case`\n- Prefiksować kategorią dla jasności: `preference_communication`, `mistake_npm_version`\n- Utrzymywać stabilność — nie zmieniać kluczy po utworzeniu\n\n## Tagi: do wyszukiwania\n\nTagi umożliwiają szybkie filtrowanie i wyszukiwanie:\n\n```bash\n# Znalezienie wszystkich wspomnień z tagiem „docker\"\nGET /memory/by-tag?tag=docker\n\n# Wyszukiwanie FTS5 w obrębie otagowanego podzbioru\nGET /memory/search?q=swarm&tag=docker\n```\n\n**Najlepsze praktyki tagowania:**\n\n- 2-5 tagów na wspomnienie (bez przesady)\n- Małe litery dla spójności\n- Używać nazw projektów, tematów, technologii\n- Tagi są niewrażliwe na wielkość liter\n\n## Poziomy priorytetu\n\n| Priorytet | Kiedy stosować | Zachowanie recall |\n|----------|-------------|-----------------|\n| `critical` | Tożsamość, kwestie prawne, nieodwracalne | Zawsze na górze recall |\n| `high` | Aktywne projekty, kluczowe preferencje | Wyeksponowane w recall |\n| `normal` | Większość wspomnień (domyślny) | Standardowa kolejność recall |\n| `low` | Efemeryczne, warto wiedzieć | Mogą zostać podsumowane |\n\n`/memory/recall` sortuje po priorytecie (krytyczne najpierw), a następnie po\naktualności.\n\n## Źródło: użytkownik czy agent\n\nWspomnienia są oznaczane `source`:\n\n- `user` — zapisane przez człowieka (przez JWT lub interfejs ludzki)\n- `agent` — zapisane przez agenta LLM (przez Mind Key)\n\nTo wpływa na:\n\n- **Weryfikację:** wspomnienia `user` są automatycznie weryfikowane, `agent` — nie\n- **Pewność:** `user` domyślnie 1.0, `agent` 0.7\n- **Recall:** `/memory/recall` oznacza niezweryfikowane wspomnienia jako „(unverified)\"\n\n> [!NOTE]\n> Należy podchodzić do wspomnień ze źródła `agent` z odpowiednim sceptycyzmem. Mogą\n> być wnioskowane lub zakładane, a nie bezpośrednio zadeklarowane przez użytkownika.\n\n## Weryfikacja\n\nFlaga `verified` wskazuje, że człowiek potwierdził wspomnienie:\n\n- Wspomnienia `user`: automatycznie zweryfikowane (`true`)\n- Wspomnienia `agent`: domyślnie niezweryfikowane (`false`)\n\nWeryfikacja wspomnień:\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> Weryfikacja wymaga JWT (autoryzacja człowieka), a nie Mind Key (autoryzacja\n> agenta). Zapewnia to, że tylko ludzie mogą oznaczać wspomnienia jako zweryfikowane.\n\n## Pewność\n\nPole `confidence` (0.0-1.0) wskazuje, jak wiarygodne jest wspomnienie:\n\n- 1.0 — bezpośrednio zadeklarowane przez użytkownika\n- 0.7 — wnioskowane przez agenta\n- 0.5 — niepewne, wymaga weryfikacji\n- 0.0 — wprost wątpliwe\n\nUstawianie pewności przy zapisie:\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## Wygaśnięcie\n\nDla wspomnień wrażliwych czasowo należy ustawić `expires_at`:\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\nWygasłe wspomnienia nie są zwracane przez `/memory/recall` (ale nadal istnieją w\nbazie). Należy użyć `/memory/expiring?within=7d`, aby zobaczyć wspomnienia\nwygasające wkrótce.\n\n## Cykl życia wspomnienia\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## Zachowanie recall\n\n`GET /memory/recall` zwraca podsumowanie w postaci zwykłego tekstu, zoptymalizowane\ndla kontekstu LLM:\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- Posortowane po priorytecie (critical → low), a następnie po aktualności\n- Niezweryfikowane wspomnienia oznaczone `[unverified]`\n- Tagi dołączone dla kontekstu\n- Zwykły tekst (bez parsowania JSON)\n\n## Następne kroki\n\n- [Memory API](/docs/api/memory)\n- [Najlepsze praktyki pamięci](/docs/guides/memory-best-practices)\n- [Wyszukiwanie FTS5](/docs/concepts/fts5-search)\n","content_html":"<h1>Model pamięci</h1>\n<p>Model pamięci Synapse jest zaprojektowany dla agentów LLM — na tyle\nustrukturyzowany, by zapewnić niezawodne przypominanie, na tyle elastyczny, by\npasował do każdej domeny.</p>\n<h2>Anatomia wspomnienia</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>Pola</h2>\n<table>\n<thead>\n<tr>\n<th>Pole</th>\n<th>Typ</th>\n<th>Wymagane</th>\n<th>Opis</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>auto</td>\n<td>Unikalny identyfikator (mem_xxx)</td>\n</tr>\n<tr>\n<td><code>category</code></td>\n<td>enum</td>\n<td>✅</td>\n<td>Jedna z 8 kategorii</td>\n</tr>\n<tr>\n<td><code>key</code></td>\n<td>string</td>\n<td>✅</td>\n<td>Stabilny identyfikator (używany do aktualizacji)</td>\n</tr>\n<tr>\n<td><code>content</code></td>\n<td>string</td>\n<td>✅</td>\n<td>Treść wspomnienia (dowolny tekst)</td>\n</tr>\n<tr>\n<td><code>tags</code></td>\n<td>string[]</td>\n<td>–</td>\n<td>Do wyszukiwania i filtrowania</td>\n</tr>\n<tr>\n<td><code>priority</code></td>\n<td>enum</td>\n<td>–</td>\n<td>low, normal, high, critical (domyślnie: normal)</td>\n</tr>\n<tr>\n<td><code>source</code></td>\n<td>enum</td>\n<td>auto</td>\n<td>user, agent (kto zapisał)</td>\n</tr>\n<tr>\n<td><code>verified</code></td>\n<td>bool</td>\n<td>auto</td>\n<td>Czy człowiek to zweryfikował?</td>\n</tr>\n<tr>\n<td><code>confidence</code></td>\n<td>float</td>\n<td>–</td>\n<td>0.0-1.0 (domyślnie: 1.0 dla użytkownika, 0.7 dla agenta)</td>\n</tr>\n<tr>\n<td><code>expires_at</code></td>\n<td>timestamp</td>\n<td>–</td>\n<td>Kiedy zapomnieć to wspomnienie</td>\n</tr>\n<tr>\n<td><code>mind_id</code></td>\n<td>string</td>\n<td>auto</td>\n<td>Do którego umysłu należy</td>\n</tr>\n<tr>\n<td><code>created_at</code></td>\n<td>timestamp</td>\n<td>auto</td>\n<td>Pierwszy zapis</td>\n</tr>\n<tr>\n<td><code>updated_at</code></td>\n<td>timestamp</td>\n<td>auto</td>\n<td>Ostatnia modyfikacja</td>\n</tr>\n</tbody></table>\n<h2>Kategorie</h2>\n<p>Osiem kategorii pokrywa typowe przypadki użycia agentów LLM:</p>\n<table>\n<thead>\n<tr>\n<th>Kategoria</th>\n<th>Przeznaczenie</th>\n<th>Przykładowa treść</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>identity</code></td>\n<td>Kim jest użytkownik</td>\n<td>„User is Michael Schäfer, software engineer in Berlin&quot;</td>\n</tr>\n<tr>\n<td><code>preference</code></td>\n<td>Preferencje użytkownika</td>\n<td>„Prefers concise technical responses&quot;</td>\n</tr>\n<tr>\n<td><code>fact</code></td>\n<td>Weryfikowalne fakty</td>\n<td>„Office is in Berlin, timezone Europe/Berlin&quot;</td>\n</tr>\n<tr>\n<td><code>project</code></td>\n<td>Status projektu</td>\n<td>„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>Umiejętności użytkownika</td>\n<td>„Advanced Python, 10+ years&quot;</td>\n</tr>\n<tr>\n<td><code>mistake</code></td>\n<td>Błędy z przeszłości</td>\n<td>„Forgot to bump npm version — CI failed&quot;</td>\n</tr>\n<tr>\n<td><code>context</code></td>\n<td>Kontekst sesji</td>\n<td>„Currently reviewing PR #42&quot;</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>Różne notatki</td>\n<td>„Try Redis for caching next sprint&quot;</td>\n</tr>\n</tbody></table>\n<h2>Klucze: stabilne identyfikatory</h2>\n<p>Pole <code>key</code> jest kluczowe — to sposób aktualizacji wspomnień bez tworzenia\nduplikatów.</p>\n<pre><code class=\"hljs language-python\"><span class=\"hljs-comment\"># Pierwszy zapis</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\"># Aktualizacja tym samym kluczem (nadpisuje, nie duplikuje)</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>Zasady kluczy:</strong></p>\n<ul>\n<li>Musi być unikalny w obrębie (kategoria, umysł)</li>\n<li>Używać <code>snake_case</code></li>\n<li>Prefiksować kategorią dla jasności: <code>preference_communication</code>, <code>mistake_npm_version</code></li>\n<li>Utrzymywać stabilność — nie zmieniać kluczy po utworzeniu</li>\n</ul>\n<h2>Tagi: do wyszukiwania</h2>\n<p>Tagi umożliwiają szybkie filtrowanie i wyszukiwanie:</p>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># Znalezienie wszystkich wspomnień z tagiem „docker&quot;</span>\nGET /memory/by-tag?tag=docker\n\n<span class=\"hljs-comment\"># Wyszukiwanie FTS5 w obrębie otagowanego podzbioru</span>\nGET /memory/search?q=swarm&amp;tag=docker</code></pre><p><strong>Najlepsze praktyki tagowania:</strong></p>\n<ul>\n<li>2-5 tagów na wspomnienie (bez przesady)</li>\n<li>Małe litery dla spójności</li>\n<li>Używać nazw projektów, tematów, technologii</li>\n<li>Tagi są niewrażliwe na wielkość liter</li>\n</ul>\n<h2>Poziomy priorytetu</h2>\n<table>\n<thead>\n<tr>\n<th>Priorytet</th>\n<th>Kiedy stosować</th>\n<th>Zachowanie recall</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>critical</code></td>\n<td>Tożsamość, kwestie prawne, nieodwracalne</td>\n<td>Zawsze na górze recall</td>\n</tr>\n<tr>\n<td><code>high</code></td>\n<td>Aktywne projekty, kluczowe preferencje</td>\n<td>Wyeksponowane w recall</td>\n</tr>\n<tr>\n<td><code>normal</code></td>\n<td>Większość wspomnień (domyślny)</td>\n<td>Standardowa kolejność recall</td>\n</tr>\n<tr>\n<td><code>low</code></td>\n<td>Efemeryczne, warto wiedzieć</td>\n<td>Mogą zostać podsumowane</td>\n</tr>\n</tbody></table>\n<p><code>/memory/recall</code> sortuje po priorytecie (krytyczne najpierw), a następnie po\naktualności.</p>\n<h2>Źródło: użytkownik czy agent</h2>\n<p>Wspomnienia są oznaczane <code>source</code>:</p>\n<ul>\n<li><code>user</code> — zapisane przez człowieka (przez JWT lub interfejs ludzki)</li>\n<li><code>agent</code> — zapisane przez agenta LLM (przez Mind Key)</li>\n</ul>\n<p>To wpływa na:</p>\n<ul>\n<li><strong>Weryfikację:</strong> wspomnienia <code>user</code> są automatycznie weryfikowane, <code>agent</code> — nie</li>\n<li><strong>Pewność:</strong> <code>user</code> domyślnie 1.0, <code>agent</code> 0.7</li>\n<li><strong>Recall:</strong> <code>/memory/recall</code> oznacza niezweryfikowane wspomnienia jako „(unverified)&quot;</li>\n</ul>\n<div class=\"callout callout-note\">Należy podchodzić do wspomnień ze źródła `agent` z odpowiednim sceptycyzmem. Mogą\nbyć wnioskowane lub zakładane, a nie bezpośrednio zadeklarowane przez użytkownika.</div><h2>Weryfikacja</h2>\n<p>Flaga <code>verified</code> wskazuje, że człowiek potwierdził wspomnienie:</p>\n<ul>\n<li>Wspomnienia <code>user</code>: automatycznie zweryfikowane (<code>true</code>)</li>\n<li>Wspomnienia <code>agent</code>: domyślnie niezweryfikowane (<code>false</code>)</li>\n</ul>\n<p>Weryfikacja wspomnień:</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\">Weryfikacja wymaga JWT (autoryzacja człowieka), a nie Mind Key (autoryzacja\nagenta). Zapewnia to, że tylko ludzie mogą oznaczać wspomnienia jako zweryfikowane.</div><h2>Pewność</h2>\n<p>Pole <code>confidence</code> (0.0-1.0) wskazuje, jak wiarygodne jest wspomnienie:</p>\n<ul>\n<li>1.0 — bezpośrednio zadeklarowane przez użytkownika</li>\n<li>0.7 — wnioskowane przez agenta</li>\n<li>0.5 — niepewne, wymaga weryfikacji</li>\n<li>0.0 — wprost wątpliwe</li>\n</ul>\n<p>Ustawianie pewności przy zapisie:</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>Wygaśnięcie</h2>\n<p>Dla wspomnień wrażliwych czasowo należy ustawić <code>expires_at</code>:</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>Wygasłe wspomnienia nie są zwracane przez <code>/memory/recall</code> (ale nadal istnieją w\nbazie). Należy użyć <code>/memory/expiring?within=7d</code>, aby zobaczyć wspomnienia\nwygasające wkrótce.</p>\n<h2>Cykl życia wspomnienia</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>Zachowanie recall</h2>\n<p><code>GET /memory/recall</code> zwraca podsumowanie w postaci zwykłego tekstu, zoptymalizowane\ndla kontekstu LLM:</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>Posortowane po priorytecie (critical → low), a następnie po aktualności</li>\n<li>Niezweryfikowane wspomnienia oznaczone <code>[unverified]</code></li>\n<li>Tagi dołączone dla kontekstu</li>\n<li>Zwykły tekst (bez parsowania JSON)</li>\n</ul>\n<h2>Następne kroki</h2>\n<ul>\n<li><a href=\"/docs/api/memory\">Memory API</a></li>\n<li><a href=\"/docs/guides/memory-best-practices\">Najlepsze praktyki pamięci</a></li>\n<li><a href=\"/docs/concepts/fts5-search\">Wyszukiwanie FTS5</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"]}