Workspace Memory v2 (offline): araştırma notları
Hedef: Clawd tarzı bir çalışma alanı (agents.defaults.workspace, varsayılan ~/.openclaw/workspace); burada “bellek”, günlük başına bir Markdown dosyası (memory/YYYY-MM-DD.md) ve küçük bir dizi kararlı dosya (örn. memory.md, SOUL.md) olarak saklanır.
Bu belge, Markdown’ı gözden geçirilebilir ve kanonik tek gerçek kaynak olarak koruyan, ancak türetilmiş bir indeks aracılığıyla yapılandırılmış geri çağırma (arama, varlık özetleri, güven güncellemeleri) ekleyen offline-first bir bellek mimarisi önerir.
Neden değiştirelim?
Mevcut kurulum (günlük başına bir dosya) şu konularda mükemmeldir:- “append-only” günlük tutma
- insan tarafından düzenleme
- git destekli dayanıklılık + denetlenebilirlik
- düşük sürtünmeli yakalama (“sadece yaz”)
- yüksek geri çağırma gerektiren erişim (“X hakkında neye karar vermiştik?”, “Y’yi en son ne zaman denedik?”)
- çok sayıda dosyayı yeniden okumadan varlık merkezli yanıtlar (“Alice / The Castle / warelay hakkında anlat”)
- görüş/tercihlerin istikrarı (ve değiştiğinde kanıt)
- zaman kısıtları (“Kasım 2025’te ne doğruydu?”) ve çakışma çözümü
Tasarım hedefleri
- Offline: ağ olmadan çalışır; dizüstü/Castle üzerinde çalışabilir; bulut bağımlılığı yoktur.
- Açıklanabilir: getirilen öğeler atıflı olmalıdır (dosya + konum) ve çıkarımdan ayrılabilmelidir.
- Düşük tören: günlük kayıtlar Markdown olarak kalır; ağır şema çalışması yoktur.
- Artımlı: v1 yalnızca FTS ile bile faydalıdır; semantik/vektör ve grafikler isteğe bağlı yükseltmelerdir.
- Ajan dostu: “token bütçeleri içinde geri çağırma”yı kolaylaştırır (küçük bilgi demetleri döndürür).
Kuzey yıldızı modeli (Hindsight × Letta)
Harmanlanacak iki parça:- Letta/MemGPT tarzı kontrol döngüsü
- küçük bir “çekirdek” her zaman bağlamda tutulur (persona + temel kullanıcı gerçekleri)
- diğer her şey bağlam dışıdır ve araçlar üzerinden getirilir
- bellek yazımları açık araç çağrılarıdır (append/replace/insert), kalıcı hale getirilir ve bir sonraki turda yeniden enjekte edilir
- Hindsight tarzı bellek altlığı
- gözlemlenen, inanılan ve özetlenen şeyleri birbirinden ayırmak
- retain/recall/reflect desteği
- kanıta dayalı olarak evrilebilen güven taşıyan görüşler
- varlık farkındalıklı geri çağırma + zamansal sorgular (tam bilgi grafikleri olmadan bile)
Önerilen mimari (Markdown tek gerçek kaynak + türetilmiş indeks)
Canonical store (git-friendly)
~/.openclaw/workspace’i kanonik, insan tarafından okunabilir bellek olarak tutun.
Önerilen çalışma alanı düzeni:
- Günlük günlük olarak kalır. JSON’a dönüştürmeye gerek yok.
bank/dosyaları kürasyonludur, yansıtma işleri tarafından üretilir ve yine de elle düzenlenebilir.memory.md“küçük + çekirdek-benzeri” kalır: Clawd’ın her oturumda görmesini istediğiniz şeyler.
Türetilmiş depo (makine geri çağırma)
Çalışma alanı altında (git ile izlenmesi şart olmayan) türetilmiş bir indeks ekleyin:- gerçekler + varlık bağlantıları + görüş metadatası için SQLite şeması
- sözcüksel geri çağırma için SQLite FTS5 (hızlı, küçük, offline)
- semantik geri çağırma için isteğe bağlı gömme (hala offline)
Retain / Recall / Reflect (operasyonel döngü)
Retain: günlük kayıtları “gerçekler”e normalize etme
Burada önemli olan Hindsight içgörüsü: küçük parçalar değil, anlatı niteliğinde, kendi kendine yeterli gerçekler saklayın.memory/YYYY-MM-DD.md için pratik kural:
- gün sonunda (ya da gün içinde), 2–5 maddelik bir
## Retainbölümü ekleyin:- anlatı niteliğinde (turlar arası bağlam korunur)
- kendi kendine yeterli (sonradan tek başına anlamlı)
- tür + varlık atıflarıyla etiketlenmiş
- Tür öneki:
W(world),B(experience/biographical),O(opinion),S(observation/summary; genellikle üretilir) - Varlıklar:
@Peter,@warelayvb. (slug’larbank/entities/*.md’e eşlenir) - Görüş güveni:
O(c=0.0..1.0)isteğe bağlı
## Retain bölümü en kolay “kalite kaldıraç”tır.
Recall: türetilmiş indeks üzerinde sorgular
Recall şunları desteklemelidir:- sözcüksel: “birebir terimleri / isimleri / komutları bul” (FTS5)
- varlık: “X hakkında anlat” (varlık sayfaları + varlık bağlantılı gerçekler)
- zamansal: “27 Kasım civarında ne oldu” / “geçen haftadan beri”
- görüş: “Peter neyi tercih eder?” (güven + kanıt ile)
kind(world|experience|opinion|observation)timestamp(kaynak gün ya da varsa çıkarılmış zaman aralığı)entities(["Peter","warelay"])content(anlatı niteliğindeki gerçek)source(memory/2025-11-27.md#L12vb.)
Reflect: kararlı sayfalar üretme + inançları güncelleme
Yansıtma, zamanlanmış bir iştir (günlük ya da heartbeatultrathink) ve şunları yapar:
- son gerçeklerden
bank/entities/*.md’i günceller (varlık özetleri) - pekiştirme/çelişkiye göre
bank/opinions.mdgüvenini günceller - isteğe bağlı olarak
memory.md(“çekirdek-benzeri” kalıcı gerçekler) için düzenleme önerir
- her görüş şunlara sahiptir:
- ifade
- güven
c ∈ [0,1] - last_updated
- kanıt bağlantıları (destekleyici + çelişen gerçek kimlikleri)
- yeni gerçekler geldiğinde:
- varlık örtüşmesi + benzerliğe göre aday görüşleri bulun (önce FTS, sonra gömmeler)
- güveni küçük deltalarla güncelleyin; büyük sıçramalar güçlü çelişki + tekrarlı kanıt gerektirir
CLI entegrasyonu: bağımsız mı derin entegrasyon mu
Öneri: OpenClaw ile derin entegrasyon, ancak ayrılabilir bir çekirdek kütüphane ile.Neden OpenClaw içine entegre edelim?
- OpenClaw zaten şunları biliyor:
- çalışma alanı yolu (
agents.defaults.workspace) - oturum modeli + heartbeat’ler
- günlükleme + sorun giderme kalıpları
- çalışma alanı yolu (
- Aracın kendisinin araçları çağırmasını istiyorsunuz:
openclaw memory recall "…" --k 25 --since 30dopenclaw memory reflect --since 7d
Neden yine de bir kütüphane ayıralım?
- bellek mantığını gateway/runtime olmadan test edilebilir tutmak
- diğer bağlamlardan yeniden kullanmak (yerel betikler, gelecekte masaüstü uygulaması vb.)
“S-Collide” / SuCo: ne zaman kullanılmalı (araştırma)
“S-Collide” SuCo (Subspace Collision)’a işaret ediyorsa: bu, alt uzaylarda öğrenilmiş/yapılandırılmış çarpışmalar kullanarak güçlü geri çağırma/gecikme dengeleri hedefleyen bir ANN geri getirme yaklaşımıdır (makale: arXiv 2411.14754, 2024).~/.openclaw/workspace için pragmatik yaklaşım:
- SuCo ile başlamayın.
- SQLite FTS + (isteğe bağlı) basit gömmelerle başlayın; UX kazanımlarının çoğunu hemen elde edersiniz.
- SuCo/HNSW/ScaNN sınıfı çözümleri ancak şunlar olduğunda düşünün:
- derlem büyük olduğunda (on/binlerce yüz binlerce parça)
- brute-force embedding search becomes too slow
- geri çağırma kalitesi sözcüksel arama tarafından anlamlı biçimde darboğaza girdiğinde
- SQLite FTS5 + metadata filtreleri (sıfır ML)
- Embeddings + brute force (works surprisingly far if chunk count is low)
- HNSW indeksi (yaygın, sağlam; bir kütüphane bağlaması gerekir)
- SuCo (araştırma düzeyi; gömülebilecek sağlam bir uygulama varsa cazip)
- makinelerinizde (dizüstü + masaüstü) “kişisel asistan belleği” için en iyi offline gömme modeli hangisi?
- zaten Ollama’nız varsa: yerel bir modelle gömme yapın; aksi halde araç zincirine küçük bir gömme modeli ekleyin.
En küçük faydalı pilot
Minimal ama yine de kullanışlı bir sürüm istiyorsanız:bank/varlık sayfaları ve günlüklerde bir## Retainbölümü ekleyin.- Atıflarla (yol + satır numaraları) geri çağırma için SQLite FTS kullanın.
- Geri çağırma kalitesi ya da ölçek gerektirirse gömmeleri ekleyin.
Kaynaklar
- Letta / MemGPT kavramları: “core memory blocks” + “archival memory” + araç güdümlü kendi kendini düzenleyen bellek.
- Hindsight Teknik Raporu: “retain / recall / reflect”, dört ağlı bellek, anlatı gerçek çıkarımı, görüş güveninin evrimi.
- SuCo: arXiv 2411.14754 (2024): “Subspace Collision” yaklaşık en yakın komşu geri getirme.