{"title":"Model Memori","slug":"memory-model","category":"concepts","summary":"Bagaimana memori terstruktur — kategori, key, tag, prioritas, sumber, verifikasi.","audience":["human","llm"],"tags":["concept","memory","model","structure"],"difficulty":"intermediate","updated":"2026-06-27","word_count":699,"read_minutes":3,"lang":"id","translated":true,"requested_lang":"id","content_markdown":"\n# Model Memori\n\nModel memori Synapse dirancang untuk agen LLM — cukup terstruktur untuk recall\nyang andal, cukup fleksibel untuk domain apa pun.\n\n## Anatomi Memori\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## Field\n\n| Field | Tipe | Wajib | Deskripsi |\n|-------|------|----------|-------------|\n| `id` | string | otomatis | ID unik (mem_xxx) |\n| `category` | enum | ✅ | Salah satu dari 8 kategori |\n| `key` | string | ✅ | Identifier stabil (digunakan untuk pembaruan) |\n| `content` | string | ✅ | Konten memori (teks apa pun) |\n| `tags` | string[] | – | Untuk pencarian dan pemfilteran |\n| `priority` | enum | – | low, normal, high, critical (default: normal) |\n| `source` | enum | otomatis | user, agent (siapa yang menyimpan) |\n| `verified` | bool | otomatis | Apakah manusia telah memverifikasi ini? |\n| `confidence` | float | – | 0.0 hingga 1.0 (default: 1.0 untuk user, 0.7 untuk agent) |\n| `expires_at` | timestamp | – | Kapan harus melupakan memori ini |\n| `mind_id` | string | otomatis | Mind mana yang memilikinya |\n| `created_at` | timestamp | otomatis | Pertama disimpan |\n| `updated_at` | timestamp | otomatis | Terakhir dimodifikasi |\n\n## Kategori\n\nDelapan kategori mencakup kasus penggunaan agen LLM umum:\n\n| Kategori | Tujuan | Contoh Konten |\n|----------|---------|-----------------|\n| `identity` | Siapa pengguna | \"User is Michael Schäfer, software engineer in Berlin\" |\n| `preference` | Preferensi pengguna | \"Prefers concise technical responses\" |\n| `fact` | Fakta yang dapat diverifikasi | \"Office is in Berlin, timezone Europe/Berlin\" |\n| `project` | Status proyek | \"Synapse v1.5.0 deployed, working on v1.6.0 docs\" |\n| `skill` | Keahlian pengguna | \"Advanced Python, 10+ years\" |\n| `mistake` | Error masa lalu | \"Forgot to bump npm version — CI failed\" |\n| `context` | Konteks sesi | \"Currently reviewing PR #42\" |\n| `note` | Catatan lain-lain | \"Try Redis for caching next sprint\" |\n\n## Key: Identifier Stabil\n\nField `key` sangat penting — ini adalah cara Anda memperbarui memori tanpa\nmembuat duplikat.\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**Aturan key:**\n\n- Harus unik dalam (category, mind)\n- Gunakan `snake_case`\n- Awali dengan kategori untuk kejelasan: `preference_communication`, `mistake_npm_version`\n- Tetap stabil — jangan mengubah key setelah dibuat\n\n## Tag: Untuk Pencarian\n\nTag memungkinkan pemfilteran dan pencarian cepat:\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**Praktik terbaik tag:**\n\n- 2-5 tag per memori (jangan terlalu banyak tag)\n- Huruf kecil untuk konsistensi\n- Gunakan nama proyek, topik, teknologi\n- Tag tidak case-sensitive\n\n## Level Prioritas\n\n| Prioritas | Kapan Menggunakan | Perilaku Recall |\n|----------|-------------|-----------------|\n| `critical` | Identitas, hukum, ireversibel | Selalu di atas recall |\n| `high` | Proyek aktif, preferensi utama | Menonjol dalam recall |\n| `normal` | Sebagian besar memori (default) | Urutan recall standar |\n| `low` | Efemeral, bagus untuk diketahui | Mungkin diringkas |\n\n`/memory/recall` mengurutkan berdasarkan prioritas (critical pertama), lalu berdasarkan kebaruan.\n\n## Source: User vs Agent\n\nMemori ditandai dengan `source`:\n\n- `user` — disimpan oleh manusia (melalui JWT atau UI manusia)\n- `agent` — disimpan oleh agen LLM (melalui Mind Key)\n\nIni memengaruhi:\n\n- **Verifikasi:** memori `user` otomatis terverifikasi, memori `agent` tidak\n- **Confidence:** `user` default 1.0, `agent` 0.7\n- **Recall:** `/memory/recall` menandai memori yang belum terverifikasi dengan \"(unverified)\"\n\n> [!NOTE]\n> Perlakukan memori sumber `agent` dengan skeptisisme yang sesuai. Mereka mungkin\n> disimpulkan atau diasumsikan daripada dinyatakan langsung oleh pengguna.\n\n## Verifikasi\n\nFlag `verified` menunjukkan manusia telah mengonfirmasi memori:\n\n- Memori `user`: otomatis terverifikasi (`true`)\n- Memori `agent`: default belum terverifikasi (`false`)\n\nVerifikasi memori melalui:\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> Verifikasi memerlukan JWT (autentikasi manusia), bukan Mind Key (autentikasi\n> agen). Ini memastikan hanya manusia yang dapat menandai memori sebagai terverifikasi.\n\n## Confidence\n\nField `confidence` (0.0 hingga 1.0) menunjukkan seberapa andal memori tersebut:\n\n- 1.0 — dinyatakan langsung oleh pengguna\n- 0.7 — disimpulkan oleh agen\n- 0.5 — tidak pasti, perlu verifikasi\n- 0.0 — secara eksplisit diragukan\n\nTetapkan confidence saat menyimpan:\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## Kedaluwarsa\n\nTetapkan `expires_at` untuk memori yang sensitif terhadap waktu:\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\nMemori kedaluwarsa tidak dikembalikan oleh `/memory/recall` (tetapi masih ada di DB).\nGunakan `/memory/expiring?within=7d` untuk melihat memori yang akan segera kedaluwarsa.\n\n## Siklus Hidup Memori\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## Perilaku Recall\n\n`GET /memory/recall` mengembalikan ringkasan teks polos yang dioptimalkan untuk konteks 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- Diurutkan berdasarkan prioritas (critical → low), lalu berdasarkan kebaruan\n- Memori yang belum terverifikasi ditandai dengan `[unverified]`\n- Tag disertakan untuk konteks\n- Teks polos (tidak perlu parsing JSON)\n\n## Langkah Berikutnya\n\n- [Memory API](/docs/api/memory)\n- [Praktik Terbaik Memori](/docs/guides/memory-best-practices)\n- [Pencarian FTS5](/docs/concepts/fts5-search)\n","content_html":"<h1>Model Memori</h1>\n<p>Model memori Synapse dirancang untuk agen LLM — cukup terstruktur untuk recall\nyang andal, cukup fleksibel untuk domain apa pun.</p>\n<h2>Anatomi Memori</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>Field</h2>\n<table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Tipe</th>\n<th>Wajib</th>\n<th>Deskripsi</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>otomatis</td>\n<td>ID unik (mem_xxx)</td>\n</tr>\n<tr>\n<td><code>category</code></td>\n<td>enum</td>\n<td>✅</td>\n<td>Salah satu dari 8 kategori</td>\n</tr>\n<tr>\n<td><code>key</code></td>\n<td>string</td>\n<td>✅</td>\n<td>Identifier stabil (digunakan untuk pembaruan)</td>\n</tr>\n<tr>\n<td><code>content</code></td>\n<td>string</td>\n<td>✅</td>\n<td>Konten memori (teks apa pun)</td>\n</tr>\n<tr>\n<td><code>tags</code></td>\n<td>string[]</td>\n<td>–</td>\n<td>Untuk pencarian dan pemfilteran</td>\n</tr>\n<tr>\n<td><code>priority</code></td>\n<td>enum</td>\n<td>–</td>\n<td>low, normal, high, critical (default: normal)</td>\n</tr>\n<tr>\n<td><code>source</code></td>\n<td>enum</td>\n<td>otomatis</td>\n<td>user, agent (siapa yang menyimpan)</td>\n</tr>\n<tr>\n<td><code>verified</code></td>\n<td>bool</td>\n<td>otomatis</td>\n<td>Apakah manusia telah memverifikasi ini?</td>\n</tr>\n<tr>\n<td><code>confidence</code></td>\n<td>float</td>\n<td>–</td>\n<td>0.0 hingga 1.0 (default: 1.0 untuk user, 0.7 untuk agent)</td>\n</tr>\n<tr>\n<td><code>expires_at</code></td>\n<td>timestamp</td>\n<td>–</td>\n<td>Kapan harus melupakan memori ini</td>\n</tr>\n<tr>\n<td><code>mind_id</code></td>\n<td>string</td>\n<td>otomatis</td>\n<td>Mind mana yang memilikinya</td>\n</tr>\n<tr>\n<td><code>created_at</code></td>\n<td>timestamp</td>\n<td>otomatis</td>\n<td>Pertama disimpan</td>\n</tr>\n<tr>\n<td><code>updated_at</code></td>\n<td>timestamp</td>\n<td>otomatis</td>\n<td>Terakhir dimodifikasi</td>\n</tr>\n</tbody></table>\n<h2>Kategori</h2>\n<p>Delapan kategori mencakup kasus penggunaan agen LLM umum:</p>\n<table>\n<thead>\n<tr>\n<th>Kategori</th>\n<th>Tujuan</th>\n<th>Contoh Konten</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>identity</code></td>\n<td>Siapa pengguna</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>Preferensi pengguna</td>\n<td>&quot;Prefers concise technical responses&quot;</td>\n</tr>\n<tr>\n<td><code>fact</code></td>\n<td>Fakta yang dapat diverifikasi</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>Status proyek</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>Keahlian pengguna</td>\n<td>&quot;Advanced Python, 10+ years&quot;</td>\n</tr>\n<tr>\n<td><code>mistake</code></td>\n<td>Error masa lalu</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>Konteks sesi</td>\n<td>&quot;Currently reviewing PR #42&quot;</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>Catatan lain-lain</td>\n<td>&quot;Try Redis for caching next sprint&quot;</td>\n</tr>\n</tbody></table>\n<h2>Key: Identifier Stabil</h2>\n<p>Field <code>key</code> sangat penting — ini adalah cara Anda memperbarui memori tanpa\nmembuat duplikat.</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>Aturan key:</strong></p>\n<ul>\n<li>Harus unik dalam (category, mind)</li>\n<li>Gunakan <code>snake_case</code></li>\n<li>Awali dengan kategori untuk kejelasan: <code>preference_communication</code>, <code>mistake_npm_version</code></li>\n<li>Tetap stabil — jangan mengubah key setelah dibuat</li>\n</ul>\n<h2>Tag: Untuk Pencarian</h2>\n<p>Tag memungkinkan pemfilteran dan pencarian cepat:</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>Praktik terbaik tag:</strong></p>\n<ul>\n<li>2-5 tag per memori (jangan terlalu banyak tag)</li>\n<li>Huruf kecil untuk konsistensi</li>\n<li>Gunakan nama proyek, topik, teknologi</li>\n<li>Tag tidak case-sensitive</li>\n</ul>\n<h2>Level Prioritas</h2>\n<table>\n<thead>\n<tr>\n<th>Prioritas</th>\n<th>Kapan Menggunakan</th>\n<th>Perilaku Recall</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>critical</code></td>\n<td>Identitas, hukum, ireversibel</td>\n<td>Selalu di atas recall</td>\n</tr>\n<tr>\n<td><code>high</code></td>\n<td>Proyek aktif, preferensi utama</td>\n<td>Menonjol dalam recall</td>\n</tr>\n<tr>\n<td><code>normal</code></td>\n<td>Sebagian besar memori (default)</td>\n<td>Urutan recall standar</td>\n</tr>\n<tr>\n<td><code>low</code></td>\n<td>Efemeral, bagus untuk diketahui</td>\n<td>Mungkin diringkas</td>\n</tr>\n</tbody></table>\n<p><code>/memory/recall</code> mengurutkan berdasarkan prioritas (critical pertama), lalu berdasarkan kebaruan.</p>\n<h2>Source: User vs Agent</h2>\n<p>Memori ditandai dengan <code>source</code>:</p>\n<ul>\n<li><code>user</code> — disimpan oleh manusia (melalui JWT atau UI manusia)</li>\n<li><code>agent</code> — disimpan oleh agen LLM (melalui Mind Key)</li>\n</ul>\n<p>Ini memengaruhi:</p>\n<ul>\n<li><strong>Verifikasi:</strong> memori <code>user</code> otomatis terverifikasi, memori <code>agent</code> tidak</li>\n<li><strong>Confidence:</strong> <code>user</code> default 1.0, <code>agent</code> 0.7</li>\n<li><strong>Recall:</strong> <code>/memory/recall</code> menandai memori yang belum terverifikasi dengan &quot;(unverified)&quot;</li>\n</ul>\n<div class=\"callout callout-note\">Perlakukan memori sumber `agent` dengan skeptisisme yang sesuai. Mereka mungkin\ndisimpulkan atau diasumsikan daripada dinyatakan langsung oleh pengguna.</div><h2>Verifikasi</h2>\n<p>Flag <code>verified</code> menunjukkan manusia telah mengonfirmasi memori:</p>\n<ul>\n<li>Memori <code>user</code>: otomatis terverifikasi (<code>true</code>)</li>\n<li>Memori <code>agent</code>: default belum terverifikasi (<code>false</code>)</li>\n</ul>\n<p>Verifikasi memori melalui:</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\">Verifikasi memerlukan JWT (autentikasi manusia), bukan Mind Key (autentikasi\nagen). Ini memastikan hanya manusia yang dapat menandai memori sebagai terverifikasi.</div><h2>Confidence</h2>\n<p>Field <code>confidence</code> (0.0 hingga 1.0) menunjukkan seberapa andal memori tersebut:</p>\n<ul>\n<li>1.0 — dinyatakan langsung oleh pengguna</li>\n<li>0.7 — disimpulkan oleh agen</li>\n<li>0.5 — tidak pasti, perlu verifikasi</li>\n<li>0.0 — secara eksplisit diragukan</li>\n</ul>\n<p>Tetapkan confidence saat menyimpan:</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>Kedaluwarsa</h2>\n<p>Tetapkan <code>expires_at</code> untuk memori yang sensitif terhadap waktu:</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>Memori kedaluwarsa tidak dikembalikan oleh <code>/memory/recall</code> (tetapi masih ada di DB).\nGunakan <code>/memory/expiring?within=7d</code> untuk melihat memori yang akan segera kedaluwarsa.</p>\n<h2>Siklus Hidup Memori</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>Perilaku Recall</h2>\n<p><code>GET /memory/recall</code> mengembalikan ringkasan teks polos yang dioptimalkan untuk konteks 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>Diurutkan berdasarkan prioritas (critical → low), lalu berdasarkan kebaruan</li>\n<li>Memori yang belum terverifikasi ditandai dengan <code>[unverified]</code></li>\n<li>Tag disertakan untuk konteks</li>\n<li>Teks polos (tidak perlu parsing JSON)</li>\n</ul>\n<h2>Langkah Berikutnya</h2>\n<ul>\n<li><a href=\"/docs/api/memory\">Memory API</a></li>\n<li><a href=\"/docs/guides/memory-best-practices\">Praktik Terbaik Memori</a></li>\n<li><a href=\"/docs/concepts/fts5-search\">Pencarian 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"]}