Bellek En İyi Uygulamaları
Etkili geri çağırma için bellekleri nasıl yapılandırırsınız — kategoriler, anahtarlar, etiketler, öncelikler.
Bellek En İyi Uygulamaları
Bellekleri nasıl yapılandırdığınız ne kadar yararlı olduklarını belirler. Bu rehber, LLM'in doğru zamanda doğru bilgiyi geri çağırabilmesi için kategorize etme, etiketleme ve önceliklendirme desenlerini kapsar.
Kategoriler: En Spesifiği Seçin
| Kategori | Kullanım | Örnek |
|---|---|---|
identity |
Kullanıcı adı, rol, iletişim bilgisi | "user_name": "Michael Schäfer" |
preference |
Beğeniler, beğenmemeler, çalışma tarzı | "communication": "Prefers concise responses" |
fact |
Doğrulanabilir bilgiler | "office_location": "Berlin, Germany" |
project |
Proje durumu, kararlar | "project_synapse": "v1.5.0 deployed" |
skill |
Kullanıcının becerileri | "skill_python": "Advanced, 10+ years" |
mistake |
Kaçınılacak geçmiş hatalar | "mistake_npm_version": "Always bump version" |
context |
Oturumla ilgili bağlam | "current_focus": "Working on docs system" |
note |
Çeşitli notlar | "note_idea": "Try Redis for caching" |
Anahtarlar: Anlamlı Tanımlayıcılar
key alanı belleğin tanımlayıcısıdır. Anlamlı, kararlı anahtarlar kullanın:
İyi anahtarlar:
user_nameproject_synapse_statuspreference_communication_stylemistake_npm_version_bump
Kötü anahtarlar:
mem_001(anlamlı değil)temp(tanımlayıcı değil)2026-06-27-note(tarih geri çağırmaya yardımcı olmaz)
Anahtar adlandırma kuralları
snake_case(alt çizgili küçük harf)- Kategori ile önekleyin:
preference_*,project_*,mistake_* - Fiil değil, tanımlayıcı isim kullanın
- 50 karakterin altında tutun
Etiketler: Arama ve Filtreleme İçin
Etiketler hızlı filtreleme ve arama sağlar. Bellek başına 2-5 etiket ekleyin:
{
"category": "project",
"key": "project_synapse_status",
"content": "Synapse v1.5.0 deployed. Next: v1.6.0 with docs system.",
"tags": ["synapse", "deployment", "status", "v1.5.0"]
}Etiket desenleri
- Proje adları:
synapse,synapse-mcp,synapse-chat - Konular:
deployment,ci,database,auth - Durum:
active,completed,blocked - Öncelik göstergeleri:
urgent,long-term
Öncelikler: Gerçekçi Olun
| Öncelik | Kullanım | Belleklerin %'si |
|---|---|---|
critical |
Kullanıcı kimliği, yasal bilgiler, geri alınamaz kararlar | ~5% |
high |
Aktif projeler, önemli tercihler | ~20% |
normal |
Çoğu bilgi, not, bağlam | ~65% |
low |
Geçici, bilmek güzel | ~10% |
Ne Zaman Saklama, Ne Zaman Saklamama
Her zaman sakla
- Kullanıcı kimliği (ad, e-posta, rol)
- Uzun vadeli tercihler
- Proje kararları ve gerekçeler
- Geçmiş hatalar ve alınan dersler
- Kullanıcıya verilen taahütler
Saklama
- Geçici durum (bunun yerine değişkenler kullanın)
- Birebir sohbet geçmişi (sohbet sistemi bunu ele alır)
- Hassas veriler (parolalar, API anahtarları)
- Kolayca türetilebilir bilgiler (mevcut tarih, dosya içerikleri)
- Geçici bağlam (düşük öncelikli
contextkategorisini kullanın)
Bellekleri Güncelleme
Aynı category + key ile POST /memory mevcut belleği günceller:
# Initial store
store("project", "project_synapse_status", "v1.4.0 deployed", priority="high")
# Later: update with same key
store("project", "project_synapse_status", "v1.5.0 deployed. CI green.", priority="high")Bellek Yaşam Döngüsü
Create → Active → Stale → Archive → Delete- Create: Tam bağlamla POST /memory
- Active: Sık geri çağır, gerektiğinde güncelle
- Stale: Hala ilgili ama aktif kullanılmıyor (düşük öncelik?)
- Archive: Önceliği
lowyap, tarihsel referans için tut - Delete: Artık ilgili değilse DELETE /memory/:id
Periyodik temizlik
# Find memories not updated in 90 days
old_memories = requests.get(
f"{URL}/memory/search?q=*",
headers={"Authorization": f"Bearer {KEY}"}
)
for mem in old_memories["results"]:
if is_stale(mem, days=90):
# Either delete or lower priority
if is_obsolete(mem):
delete_memory(mem["id"])
else:
update_memory(mem["id"], priority="low")Desen: Bellek Kalıtımı
Hiyerarşik bağlam için (proje → alt proje → görev):
# Parent project
store("project", "project_synapse", "Main Synapse project",
tags=["synapse", "parent"], priority="high")
# Sub-project (tags link to parent)
store("project", "project_synapse_docs", "Docs system for Synapse",
tags=["synapse", "docs", "synapse-parent"], priority="high")
# Specific task (tags link to sub-project)
store("project", "task_docs_loader", "Implement docs-loader.ts",
tags=["synapse", "docs", "task"], priority="normal")LLM daha sonra q=synapse+docs arayarak tüm ilgili bellekleri bulabilir.
Desen: Karar Günlüğü
Kararları gerekçeleriyle saklayın, böylece LLM onları yeniden tartışmaz:
store("fact", "decision_postgres_over_sqlite",
"Chose PostgreSQL over SQLite for production. Reason: concurrent writes, "
"FTS5 native support, better backup story. Date: 2026-06-15. Decided by: Michael.",
tags=["decision", "database", "postgres", "sqlite"],
priority="high")Desen: Hata Önleme
Hataları özel önleme talimatlarıyla saklayın:
store("mistake", "mistake_forget_version_bump",
"Forgot to bump package.json version after changes. npm publish failed. "
"FIX: Always run `npm version patch` before pushing. "
"CI fails with 'version already exists' if you forget.",
tags=["npm", "ci", "publish", "version"],
priority="high")