Türkçe · English
Claude Code, Codex ve Grok'un aynı diski okuyup yazdığı bir hafıza sistemi. Oturum kapanınca özeti diske düşer, yeni oturum açılınca hafıza modele otomatik enjekte edilir.
Tez: hafıza disiplin değil, mekanizma olmalı. "AI'a her seferinde notlarımı oku dersem çalışır" bir disiplindir ve unutulur. Burada kanca (hook) zorlar: model istese de istemese de hafıza gelir, oturum bitince de yazılır.
| Ajan | Okur | Yazar |
|---|---|---|
| Claude Code | ✅ | ✅ |
| Codex | ✅ | ✅ |
| Grok | ✅ | ✅ |
Grok kancayı ateşliyor ama kanca çıktısını modele enjekte etmiyor — bu
Grok'un kendi sınırı, ölçüldü. Onun kapısı farklı: Grok'un kendi hafıza
dosyası ~/.grok/memory/MEMORY.md. grok-hafiza-yaz.ps1 CinarOS hafızasını
oraya yazıyor, her flush sonrası tazeliyor.
İki tuzak var, ikisi de ölçüldü:
- Grok'un hafızası varsayılan olarak kapalı.
~/.grok/config.tomliçine[memory] enabled = truegerekiyor; olmadan dosya hiç okunmuyor. - Grok yalnızca ~2.100 karakter okuyor (9.6 KB yazıldı, model "kesilmiş" dedi). Bu yüzden Grok'a ayrı, sıkıştırılmış bir yük üretiliyor: şu an + kalıcı kısıtlar + açık iş başlıkları.
Not: GROK.md okunmuyor — bu isim 134 MB'lık ikilide sıfır kez geçiyor.
Akış:
oturum açılır → SessionStart kancası → hafıza dosyaları okunur
→ modele enjekte edilir (~9.500 karakter)
oturum kapanır → SessionEnd kancası → transcript'ten turlar çıkarılır
→ HAM kayıt diske yazılır (her koşulda)
→ özetlenir → Hafiza/Daily/ altına düşer
gün biter → derleyici → günlükten kavram/bağlantı grafiği üretir
Bu sistem 20 gün boyunca sessizce ölü kaldı ve kimse fark etmedi: bir betikte tek bir ASCII dışı karakter vardı, PowerShell 5.1 onu cp1252 sanıp dizgeyi kırıyordu. Hata vermiyordu, sadece çalışmıyordu.
O yüzden burada iki şey var:
beyin-doktor.ps1 — 22 kontrol. Kancalar gerçekten koşuyor mu, enjeksiyon
bütçeyi aşıyor mu, transcript şeması ayrıştırıcıyla uyuşuyor mu, dosyalarda BOM
veya kontrol karakteri var mı, yedek taze mi. Her kapı mutasyonla sınandı:
korumayı kaldır, kırmızı veriyor mu diye bakıldı. Vermeyeni attık.
.claude/tests/regresyon.ps1 — 9 test, ~13 saniye, sıfır model çağrısı.
Sahte CLI ile koşar, kendi "bedava" vaadini sayaçla kanıtlar. flush-worker.ps1'e
dokunan herkes bunu koşturabilir.
- Kanca ateşlemesi işin yapıldığı anlamına gelmez. Codex 0.151 transcript
şemasını değiştirdi; kanca ateşledi, işçi koştu, hata çıkmadı, sıfır tur
ayrıştırıldı ve doktorun 17 satırı yeşil kaldı. Bu yüzden artık şema kontrolü
var ve
tur 0kırmızıdır. - Çıkış kodu 0 başarı değildir. Bir arıza "OZET BASARISIZ" yazarken çıkış kodu boş döndü.
- PS 5.1 BOM'suz UTF-8'i cp1252 sanır. Betikler saf ASCII, dosyalar
.NET UTF8Encoding(false)ile yazılır.Set-Content -Encoding UTF8BOM ekler,>yönlendirmesi UTF-16 üretir. Directory.CreateDirectorykilit değildir — var olan klasörde hata vermez. Gerçek kilitFile.Open(CreateNew, FileShare.None).- Hafıza geri beslemesi gerçek bir tehlikedir. Model enjekte edilen hafızayı
tekrarlar, özetleyici onu "bu oturumda yapıldı" sanır, ertesi gün o satır
hafıza olarak geri gelir. Kısıt konuşmacıya bakar:
USER:turunda geçen gerçektir, yalnızASSISTANT:turunda geçen eski hafıza tekrarıdır.
Gerekenler: Windows, PowerShell 5.1+, Claude Code CLI. Codex ve Grok isteğe bağlı.
git clone <bu-repo> cinaros
cd cinaros
powershell -NoProfile -ExecutionPolicy Bypass -File .\kur.ps1kur.ps1 şunları yapar:
- Kasa klasörünü oluşturur (varsayılan
%USERPROFILE%\Documents\CinarOS) ornek-vault/iskeletini kopyalar — sen doldurursun- Kancaları ve işçileri yerleştirir
- Claude Code
settings.json'a kanca kaydını ekler - Skill'leri kurar (
/kaydet,/hatirla,/doktor) - Doktoru koşturur ve sonucu gösterir
Kurulumdan sonra:
powershell -NoProfile -ExecutionPolicy Bypass -File "$env:USERPROFILE\Documents\CinarOS\.claude\tests\regresyon.ps1"9/9 görmelisin.
Codex: kur.ps1 -Codex eklentiyi kurar. Codex'i açtığında bir kez
"Trust all and continue" demen gerekir — güven verilmeden kancalar hiç koşmaz.
Grok: kur.ps1 -Grok ~/.grok/config.toml'a SessionEnd kancasını ekler.
Yükleyici bu dosyaları okur; adları önemlidir:
| Dosya | Ne | Enjeksiyon tavanı |
|---|---|---|
MAP.md |
Yönlendirme haritası | 450 |
AI-OKU.md |
Okuma/yazma kuralları | 500 |
Hafiza/Ben.md |
Kimlik + kalıcı kısıtlar | 3.000 |
Hafiza/Durum.md |
Şu anki durum (ters kronolojik) | 2.200 |
Hafiza/Acik-Isler.md |
## Active bölümü |
3.400 |
Arsenal/Elimdekiler.md |
Envanter | 1.100 |
Toplam bütçe 9.500 karakter (Claude Code'un sınırı 10.000).
İki şeye dikkat:
Durum.mdters kronolojiktir ve yalnız ilk 2.200 karakteri enjekte edilir. Üste teknik tefrika yazarsan "şu an ne yapıyorum" özetini pencereden dışarı itersin. Bu bir kez oldu; mühendislik detayınıDersler/altına taşı.Acik-Isler.md'de#### [RAF]bir duraktır. Altındaki başlıklar tek satırla özetlenir, gövdeleri enjekte edilmez. Park edilmiş işleri oraya koy.
- Buluta bir şey göndermez. Her şey diskte, düz markdown.
- Obsidian gerektirmez. İstersen kasayı Obsidian'da açarsın, ama sistem onsuz çalışır. Obsidian sadece bir okuyucu.
- Compact sonrası aynı oturumda hafızayı geri getirdiği ÖLÇÜLMEDİ.
SessionStartstartup|resume|clearolaylarında ateşliyor; compact o listede yok. Yeni oturum açılışı ölçüldü ve çalışıyor; compact içi ölçülmedi. - Windows dışında denenmedi. Betikler PowerShell.
Buradaki her iddia ölçüldü ya da "ölçülmedi" diye işaretlendi. Bir kapının çalıştığını söylüyorsak, o kapıyı kırıp kırmızı verdiğini görmüşüz demektir. Doktorun bir satırı yeşilse, o satırın yanlış yeşil olmadığını sınamışız demektir — çünkü bir kez tam tersi oldu ve 22 saat kimse fark etmedi.
Aynısını sen de yap: bir şeyi "çalışıyor" diye eklemeden önce kırmayı dene.
Bu sistemin doğası gereği en tehlikeli hata, kendi kasanı yanlışlıkla yayınlamaktır. Kasada kimlik dosyan, müşteri işin, oturum günlüklerin var.
.\gizlilik-tarama.ps1
.\gizlilik-tarama.ps1 -Ekstra 'ProjeAdi','MusteriAdi'12 desen arar: kullanıcı adı, mutlak yol, sk-/AIza/xai-/ghp_/AKIA
anahtarları, özel anahtar blokları, gömülü parola, e-posta, TC kimlik no, IBAN.
Bulgu varsa çıkış kodu 1 verir.
Kendi desenlerini -Ekstra ile ver — proje ve müşteri adların bilinen
desenlerde yok, verilmezse taranmaz.
Belgende örnek bir anahtar göstermen gerekiyorsa yoksayma işaretçisi kullan:
# gizlilik-tarama:yoksay-basla
ornek: sk-buGercekDegil...
# gizlilik-tarama:yoksay-bitir
Araç kendi çalıştığını kanıtlar: her desen, taramadan önce bilinen bir örnekle sınanır. Bir desen kendi örneğini yakalayamıyorsa tarama başarısız sayılır ve sonuca güvenilmez. Bu, "bulgu yok" ile "arama bozuk"u ayırt eden tek şeydir — ikisi ekranda aynı görünür.
MIT — bkz. LICENSE.