Bellek Modeli
Bellekler nasıl yapılandırılır — kategoriler, anahtarlar, etiketler, öncelikler, kaynaklar, doğrulama.
Bellek Modeli
Synapse'in bellek modeli LLM ajanları için tasarlanmıştır — güvenilir geri çağırma için yeterince yapılandırılmış, her alan için yeterince esnek.
Bellek Anatomisi
{
"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..."
}Alanlar
| Alan | Tip | Gerekli | Açıklama |
|---|---|---|---|
id |
string | otomatik | Benzersiz ID (mem_xxx) |
category |
enum | ✅ | 8 kategoriden biri |
key |
string | ✅ | Kararlı tanımlayıcı (güncellemeler için kullanılır) |
content |
string | ✅ | Bellek içeriği (herhangi bir metin) |
tags |
string[] | – | Arama ve filtreleme için |
priority |
enum | – | low, normal, high, critical (varsayılan: normal) |
source |
enum | otomatik | user, agent (kim sakladı) |
verified |
bool | otomatik | Bir insan bunu doğruladı mı? |
confidence |
float | – | 0.0 - 1.0 (varsayılan: user için 1.0, agent için 0.7) |
expires_at |
timestamp | – | Bu bellek ne zaman unutulur |
mind_id |
string | otomatik | Bu hangi mind'e ait |
created_at |
timestamp | otomatik | İlk saklandığı zaman |
updated_at |
timestamp | otomatik | Son değişiklik |
Kategoriler
Sekiz kategori, yaygın LLM ajan kullanım senaryolarını kapsar:
| Kategori | Amaç | Örnek İçerik |
|---|---|---|
identity |
Kullanıcı kim | "Kullanıcı Michael Schäfer, Berlin'de yazılım mühendisi" |
preference |
Kullanıcı tercihleri | "Öz ve teknik yanıtları tercih eder" |
fact |
Doğrulanabilir bilgiler | "Ofis Berlin'de, saat dilimi Europe/Berlin" |
project |
Proje durumu | "Synapse v1.5.0 dağıtıldı, v1.6.0 docs üzerinde çalışılıyor" |
skill |
Kullanıcının becerileri | "İleri Python, 10+ yıl" |
mistake |
Geçmiş hatalar | "npm sürümünü yükseltmeyi unuttum — CI başarısız oldu" |
context |
Oturum bağlamı | "Şu anda PR #42 inceleniyor" |
note |
Çeşitli notlar | "Bir sonraki sprint için önbellekleme için Redis'i dene" |
Anahtarlar: Kararlı Tanımlayıcılar
key alanı kritiktir — yinelenen oluşturmadan bellekleri nasıl güncelleyeceğinizdir.
# 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")Anahtar kuralları:
- (category, mind) içinde benzersiz olmalı
snake_casekullanın- Netlik için kategori ile önekleyin:
preference_communication,mistake_npm_version - Kararlı tutun — oluşturduktan sonra anahtarları değiştirmeyin
Etiketler: Arama İçin
Etiketler hızlı filtreleme ve arama sağlar:
# Find all memories with tag "docker"
GET /memory/by-tag?tag=docker
# FTS5 search within tagged subset
GET /memory/search?q=swarm&tag=dockerEtiket en iyi uygulamaları:
- Bellek başına 2-5 etiket (aşırı etiketlemeyin)
- Tutarlılık için küçük harf
- Proje adları, konular, teknolojiler kullanın
- Etiketler büyük/küçük harf duyarsızdır
Öncelik Düzeyleri
| Öncelik | Ne Zaman Kullanılır | Geri Çağırma Davranışı |
|---|---|---|
critical |
Kimlik, yasal, geri alınamaz | Geri çağırmada her zaman en üstte |
high |
Aktif projeler, temel tercihler | Geri çağırmada öne çıkan |
normal |
Çoğu bellek (varsayılan) | Standart geri çağırma sırası |
low |
Geçici, bilmek güzel | Özetlenebilir |
/memory/recall önceliğe göre (önce critical), sonra yeniliğe göre sıralar.
Kaynak: User ve Agent
Bellekler source ile etiketlenir:
user— bir insan tarafından saklandı (JWT veya insan arayüzü ile)agent— bir LLM ajanı tarafından saklandı (Mind Key ile)
Bu şunları etkiler:
- Doğrulama:
userbellekleri otomatik doğrulanır,agentbellekleri doğrulanmaz - Güven:
uservarsayılan 1.0,agent0.7 - Geri çağırma:
/memory/recalldoğrulanmamış bellekleri "(unverified)" ile işaretler
Doğrulama
verified bayrağı, bir insanın belleği onayladığını gösterir:
userbellekleri: otomatik doğrulanır (true)agentbellekleri: varsayılan doğrulanmamış (false)
Bellekleri şununla doğrulayın:
curl -X POST https://synapse.schaefer.zone/memory/mem_001/verify \
-H "Authorization: Bearer YOUR_JWT"Güven
confidence alanı (0.0 - 1.0) belleğin ne kadar güvenilir olduğunu gösterir:
- 1.0 — kullanıcı tarafından doğrudan belirtilmiş
- 0.7 — ajan tarafından çıkarılmış
- 0.5 — belirsiz, doğrulama gerekiyor
- 0.0 — açıkça şüpheli
Saklarken güveni ayarlayın:
{
"category": "preference",
"key": "prefers_dark_mode",
"content": "User seems to prefer dark mode (based on their IDE screenshots)",
"confidence": 0.5,
"source": "agent"
}Son Kullanma
Zamana duyarlı bellekler için expires_at ayarlayın:
{
"category": "context",
"key": "current_meeting_topic",
"content": "Discussing Q3 roadmap",
"expires_at": "2026-06-28T00:00:00Z"
}Süresi dolmuş bellekler /memory/recall tarafından döndürülmez (ama veritabanında hala mevcut). Yakında süresi dolacak bellekleri görmek için /memory/expiring?within=7d kullanın.
Bellek Yaşam Döngüsü
┌─────────────────┐
│ Create │
│ POST /memory │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Active │ ◀──── PUT /memory/:id (update)
│ (in recall) │
└────────┬────────┘
│
┌────────────┼────────────┐
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Expired │ │ Verified │ │ Deleted │
│ (in DB) │ │ (flag) │ │ (gone) │
└──────────┘ └──────────┘ └──────────┘Geri Çağırma Davranışı
GET /memory/recall, LLM bağlamı için optimize edilmiş düz metin özeti döndürür:
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
...- Önceliğe göre sıralanır (critical → low), sonra yeniliğe göre
- Doğrulanmamış bellekler
[unverified]ile işaretlenir - Bağlam için etiketler dahil edilir
- Düz metin (JSON ayrıştırma gerekmez)