Skip to main content

Model Memori

Bagaimana memori terstruktur — kategori, key, tag, prioritas, sumber, verifikasi.


Model Memori

Model memori Synapse dirancang untuk agen LLM — cukup terstruktur untuk recall yang andal, cukup fleksibel untuk domain apa pun.

Anatomi Memori

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

Field

Field Tipe Wajib Deskripsi
id string otomatis ID unik (mem_xxx)
category enum Salah satu dari 8 kategori
key string Identifier stabil (digunakan untuk pembaruan)
content string Konten memori (teks apa pun)
tags string[] Untuk pencarian dan pemfilteran
priority enum low, normal, high, critical (default: normal)
source enum otomatis user, agent (siapa yang menyimpan)
verified bool otomatis Apakah manusia telah memverifikasi ini?
confidence float 0.0 hingga 1.0 (default: 1.0 untuk user, 0.7 untuk agent)
expires_at timestamp Kapan harus melupakan memori ini
mind_id string otomatis Mind mana yang memilikinya
created_at timestamp otomatis Pertama disimpan
updated_at timestamp otomatis Terakhir dimodifikasi

Kategori

Delapan kategori mencakup kasus penggunaan agen LLM umum:

Kategori Tujuan Contoh Konten
identity Siapa pengguna "User is Michael Schäfer, software engineer in Berlin"
preference Preferensi pengguna "Prefers concise technical responses"
fact Fakta yang dapat diverifikasi "Office is in Berlin, timezone Europe/Berlin"
project Status proyek "Synapse v1.5.0 deployed, working on v1.6.0 docs"
skill Keahlian pengguna "Advanced Python, 10+ years"
mistake Error masa lalu "Forgot to bump npm version — CI failed"
context Konteks sesi "Currently reviewing PR #42"
note Catatan lain-lain "Try Redis for caching next sprint"

Key: Identifier Stabil

Field key sangat penting — ini adalah cara Anda memperbarui memori tanpa membuat duplikat.

# 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")

Aturan key:

  • Harus unik dalam (category, mind)
  • Gunakan snake_case
  • Awali dengan kategori untuk kejelasan: preference_communication, mistake_npm_version
  • Tetap stabil — jangan mengubah key setelah dibuat

Tag: Untuk Pencarian

Tag memungkinkan pemfilteran dan pencarian cepat:

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

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

Praktik terbaik tag:

  • 2-5 tag per memori (jangan terlalu banyak tag)
  • Huruf kecil untuk konsistensi
  • Gunakan nama proyek, topik, teknologi
  • Tag tidak case-sensitive

Level Prioritas

Prioritas Kapan Menggunakan Perilaku Recall
critical Identitas, hukum, ireversibel Selalu di atas recall
high Proyek aktif, preferensi utama Menonjol dalam recall
normal Sebagian besar memori (default) Urutan recall standar
low Efemeral, bagus untuk diketahui Mungkin diringkas

/memory/recall mengurutkan berdasarkan prioritas (critical pertama), lalu berdasarkan kebaruan.

Source: User vs Agent

Memori ditandai dengan source:

  • user — disimpan oleh manusia (melalui JWT atau UI manusia)
  • agent — disimpan oleh agen LLM (melalui Mind Key)

Ini memengaruhi:

  • Verifikasi: memori user otomatis terverifikasi, memori agent tidak
  • Confidence: user default 1.0, agent 0.7
  • Recall: /memory/recall menandai memori yang belum terverifikasi dengan "(unverified)"
Perlakukan memori sumber `agent` dengan skeptisisme yang sesuai. Mereka mungkin disimpulkan atau diasumsikan daripada dinyatakan langsung oleh pengguna.

Verifikasi

Flag verified menunjukkan manusia telah mengonfirmasi memori:

  • Memori user: otomatis terverifikasi (true)
  • Memori agent: default belum terverifikasi (false)

Verifikasi memori melalui:

curl -X POST https://synapse.schaefer.zone/memory/mem_001/verify \
  -H "Authorization: Bearer YOUR_JWT"
Verifikasi memerlukan JWT (autentikasi manusia), bukan Mind Key (autentikasi agen). Ini memastikan hanya manusia yang dapat menandai memori sebagai terverifikasi.

Confidence

Field confidence (0.0 hingga 1.0) menunjukkan seberapa andal memori tersebut:

  • 1.0 — dinyatakan langsung oleh pengguna
  • 0.7 — disimpulkan oleh agen
  • 0.5 — tidak pasti, perlu verifikasi
  • 0.0 — secara eksplisit diragukan

Tetapkan confidence saat menyimpan:

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

Kedaluwarsa

Tetapkan expires_at untuk memori yang sensitif terhadap waktu:

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

Memori kedaluwarsa tidak dikembalikan oleh /memory/recall (tetapi masih ada di DB). Gunakan /memory/expiring?within=7d untuk melihat memori yang akan segera kedaluwarsa.

Siklus Hidup Memori

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

Perilaku Recall

GET /memory/recall mengembalikan ringkasan teks polos yang dioptimalkan untuk konteks 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

...
  • Diurutkan berdasarkan prioritas (critical → low), lalu berdasarkan kebaruan
  • Memori yang belum terverifikasi ditandai dengan [unverified]
  • Tag disertakan untuk konteks
  • Teks polos (tidak perlu parsing JSON)

Langkah Berikutnya