OpenClaw, LLM ajanlarının web üzerinde gerçek işlemler yapmasını sağlayan bir mimariye sahip: sayfaları açmak, formları doldurmak, butonlara tıklamak, hatta alışveriş yapmak gibi. Ancak OpenClaw ile çalışmaya başlayan birçok geliştiricinin ilk sorduğu sorulardan biri şu oluyor:
OpenClaw bir veritabanı mı kullanıyor? Örneğin SQLite veya Postgres?
Kısa cevap: Hayır. Varsayılan olarak OpenClaw herhangi bir veritabanı kullanmaz.
Bunun yerine sistem büyük ölçüde dosya sistemi (filesystem) ve geçici bellek (RAM) üzerine kuruludur.
Bu yazıda OpenClaw’ın veri ve “memory” mimarisini detaylı şekilde inceleyeceğiz.
OpenClaw’da Bellek (Memory) Nasıl Çalışır?
Bir OpenClaw ajanı çalıştığında, görev sırasında ihtiyaç duyduğu tüm bilgileri RAM içinde tutar.
Örneğin bir ajan bir domain satın almaya çalışıyorsa, süreç boyunca şu tür bilgiler tutulabilir:
- hedef (goal)
- yapılan aksiyonlar
- sayfa gözlemleri
- çıkarılan bilgiler
Basitleştirilmiş bir örnek:
memory = {
"goal": "buy domain example.com",
"observations": [...],
"actions": [...],
"extracted_data": {...}
}
Bu veri yapısı sadece ajan çalıştığı sürece vardır.
Ajan durduğunda veya süreç bittiğinde bu bellek silinir.
Yani OpenClaw’da varsayılan olarak kalıcı agent memory yoktur.
OpenClaw’ın Asıl Depolama Yöntemi: Dosya Sistemi
Her ajan çalıştırması bir run olarak kaydedilir.
Genellikle klasör yapısı şöyle olur:
runs/
run_001/
steps.json
screenshots/
dom_snapshots/
logs.txt
Bu klasörlerde şu tür veriler saklanır:
1. Action Logları
Ajanın attığı her adım JSON olarak kaydedilir.
Örnek:
[
{
"step": 1,
"action": "navigate",
"url": "https://namecheap.com"
},
{
"step": 2,
"action": "type",
"selector": "#domain",
"text": "example.com"
}
]
2. Ekran Görüntüleri
Her adımda sayfanın screenshot’u alınabilir:
runs/run_001/screenshots/step_03.png
Bu sayede geliştirici ajan davranışını debug edebilir.
3. DOM Snapshotları
Sayfanın HTML/DOM yapısı da kaydedilebilir:
runs/run_001/dom_snapshots/step_03.html
Bu, LLM’in gördüğü ortamı yeniden incelemeyi sağlar.
4. Log Dosyaları
Ajanın reasoning süreci ve hatalar loglanır:
runs/run_001/logs.txt
OpenClaw Neden Veritabanı Kullanmaz?
Bu tercih bilinçli yapılmış bir tasarım kararıdır.
Başlıca sebepler:
1. Basitlik
Hiçbir veritabanı bağımlılığı yoktur.
Kurulum çok kolaydır.
git clone
pip install
run
2. Reproducibility
Her ajan çalışması tamamen yeniden oynatılabilir.
Tüm adımlar disk üzerinde vardır.
Bu da ajan davranışlarını incelemeyi kolaylaştırır.
3. Debugging Kolaylığı
Bir ajan hata yaptığında geliştirici:
- screenshot
- DOM
- log
- aksiyon geçmişi
hepsini görebilir.
OpenClaw’ın Eksik Olduğu Nokta: Kalıcı Memory
Varsayılan mimaride OpenClaw şu yeteneklere sahip değildir:
- ajan geçmiş görevleri hatırlamaz
- kullanıcı profili yoktur
- uzun vadeli bilgi saklanmaz
- semantik arama yapılmaz
Örneğin:
“Geçen hafta hangi sitelerden domain satın aldım?”
Bu tür soruların cevabı sistemde tutulmaz.
Her ajan çalışması stateless kabul edilir.
Geliştiriciler OpenClaw’ı Nasıl Genişletiyor?
Gerçek projelerde geliştiriciler genellikle OpenClaw’ın üstüne ek katmanlar kurar.
En yaygın üç yaklaşım:
1. SQLite
Küçük projeler için:
agent_memory.db
Tablolar:
- tasks
- actions
- observations
Bu sayede ajan geçmişini saklamak mümkün olur.
2. Redis
Çoklu ajan sistemlerinde:
- task queue
- shared memory
- agent coordination
için Redis kullanılır.
3. Vector Database
Semantic memory için:
- Qdrant
- Chroma
- Weaviate
Bu sayede ajanlar şu tür sorular sorabilir:
“Bu siteyi daha önce görmüş müydüm?”
Önerilen Gelişmiş Mimari
Gelişmiş bir OpenClaw sistemi genellikle şöyle görünür:
Agent
│
▼
Memory Layer
│
├ SQLite (structured memory)
├ Vector DB (semantic memory)
└ Filesystem (artifacts)
Böylece hem debug artefactları hem de uzun vadeli memory saklanabilir.
Sonuç
OpenClaw’ın varsayılan mimarisi oldukça minimaldir:
| Bileşen | Depolama |
|---|---|
| Agent memory | RAM |
| Logs | Filesystem |
| Screenshots | Filesystem |
| DOM snapshots | Filesystem |
| Persistent memory | yok |
Yani OpenClaw veritabanı yerine dosya sistemi ve geçici bellek kullanır.
Bu yaklaşım:
- kurulumu kolaylaştırır
- debugging’i iyileştirir
- ancak kalıcı memory gerektiren sistemlerde ek mimari katmanlar gerektirir.


Bir yanıt yazın