İçeriğe geç

DS-ReCall Kurulum Rehberi: Kendi Kurulum Kontrolümüz Başarısız Oldu

Önce yayınladığımız sürümün doğrulama adımı sağlıklı kurulumda kırmızı yandı, sonra kendi varsayılanımızı gerçekçi depolarda sınadık. Güncel sürüm 0.3.0 için kurulum rehberi ve bir doğrulama adımının neyi kanıtlaması gerektiği üzerine.

Güncellendi: 19 Ekim 2026, 0.3.0 için. Bu yazı ilk olarak 0.2.1 için yazıldı. Aynı gün 0.3.0 yayınlandı ve iki şey değişti: commit-gate artık varsayılan olarak engellemiyor, uyarıyor; projeyi hazırlamak sekiz elle kopyalama adımı yerine tek komut. Yazıdaki güncel durum 0.3.0'dır. 0.1 ve 0.2.x dönemine ait olanlar sürüm etiketiyle geçmiş olarak duruyor.

DS-ReCall, Claude Code için geliştirdiğimiz açık kaynak hafıza eklentisi. Bu yazı güncel sürümü, 0.3.0'ı, bugün nasıl kuracağınızı ve kullanacağınızı anlatıyor. Bir de kendi sürümlerimizi yeniden sınarken iki kez kırmızı gördüğümüzü: 0.2.1'i hazırlarken README'de önerdiğimiz doğrulama komutu sağlıklı bir kurulumda RESULT: FAIL yazdı; sonra 0.2.1'i gerçekçi depolarda denedik ve kendi varsayılanımızın yanlış olduğunu gördük. Komutlar ve çıktılar 0.3.0 belgelerinden alındı; o belgelerdeki komutlar çalıştırılarak yazıldı.

1. DS-ReCall nedir, kime uygun değil?

Claude Code her oturumda iki şeyi kendiliğinden yükler: projenizin CLAUDE.md dosyasını ve .claude/rules/ klasörünü. DS-ReCall yeni bir depolama katmanı icat etmiyor. Claude Code'un küratörsüz oto-hafızasını kapatıp bu yerel dosyaları disipline ediyor: her bilgi tarihli ve durum etiketli (doğrulandı, varsayım, eskidi, bilinmiyor), oturum sonunda /ds-recall:wrap olanları kanona işliyor, bir bütünlük kontrolü kırık bağlantıları ve öksüz notları yakalıyor, oturum kilitleri paralel oturumların birbirinin dosyasını ezmesini önlüyor.

Hook'lar model çağrısı ve ağ isteği yapmaz, Node.js dışında bağımlılığı yoktur ve her şey kendi deponuzda düz Markdown olarak durur. Ağustos'ta yazdığımız Alarm Yorgunluğu yazısı, bu aracın 0.1 sürümündeki bir uyarının neden %98 yanlış çıktığını anlatıyordu; o düzeltme 0.2.0 ile (7 Ağustos 2026) yayınlandı. Bu yazı onun devamı: araç artık dışarıdan kurulabilir durumda ve bu kez kendi doğrulamamızı sınadık.

Size uygun mu?

  • Uygun: birden fazla kişi ya da paralel oturum arasında ortak bir CLAUDE.md kullanıyorsanız; “yapay zekâ ne uydurdu?” sorusuna gerçek bir cevap vermeniz gereken müşteri projeniz varsa; neyin saklanıp neyin bırakıldığını tam olarak bilmek istiyorsanız.
  • Uygun değil: hiç düşünmeden çalışan bir hafıza istiyorsanız. Bunda Claude Code'un kendi oto-hafızası, Anthropic'in Remember eklentisi ya da claude-mem gibi araçlar daha olgun; DS-ReCall o eksende yarışmıyor. /ds-recall:wrap adımı küratörlüğün bedeli, yani kasıtlı bir sürtünme.

2. Bugün nasıl kurulur?

Gereksinimler: tek satırlık kurulum için Claude Code 2.1.275 veya üzeri (daha eski sürümlerde --plugin-dir ile çalışır) ve PATH'inizde Node.js. Node v22'de denendi; npm paketi kullanılmıyor.

Önerilen yol, proje bazlı kurulum. Projenin klasöründe:

claude plugin install ds-recall --marketplace toresoysal/ds-recall --scope project

Komut marketplace'i kullanıcı ayarlarınıza ekler ve eklentiyi yalnızca bu projede etkinleştirir; projenin .claude/settings.json dosyasına "enabledPlugins": { "ds-recall@devsoy": true } yazılır. Ekip arkadaşlarınız aynı komutu çalıştırır. Claude Code oturumunun içinden eşdeğeri: /plugin install ds-recall --marketplace toresoysal/ds-recall.

Kapsam seçimi önemli

--scope project olmadan kurarsanız hook'lar açtığınız her projede çalışır; hazırlamadığınız projelerde bile .claude/active/, docs/sessions/ altında bir taslak, bir indeks dosyası ve bir transkript yedeği oluşturur. Boş taslaklar oturum sonunda geri alınır, ama yedek kalır. Bunu özellikle istemiyorsanız proje bazlı kurun.

Kurmadan denemek isterseniz: git clone https://github.com/toresoysal/ds-recall ve ardından claude --plugin-dir ./ds-recall. Eklenti yalnızca o çalıştırma için yüklenir.

3. Kurulumun ikinci yarısı: projede tek komut

Eklentiyi kurmak size hook'ları ve komutları verir. Her proje ayrıca kendi indeksine, ayar dosyasına ve üç yardımcı betiğe ihtiyaç duyar. Sebep şu: /ds-recall:wrap ve /ds-recall:status projedeki kopyaları çağırır (node .claude/scripts/...), çünkü komut gövdeleri kabuk değil istemdir ve eklenti kökünü gösteren değişken, 0.1'i geliştirirken komutların içinde açılmıyordu. Bunu yeni sürümlerde yeniden doğrulamadık. 0.3.0'dan beri hepsini tek komut yapıyor; proje kökünden:

# macOS / Linux / Git Bash
node ~/.claude/plugins/cache/devsoy/ds-recall/0.3.0/scripts/init.js

# Windows PowerShell
node "$env:USERPROFILE\.claude\plugins\cache\devsoy\ds-recall\0.3.0\scripts\init.js"

Yolun sonundaki sürüm klasörünü kendi sürümünüze göre düzeltin. Komut CLAUDE.md'yi, karar günlüğünü, zaman çizelgesini ve ayar dosyasını oluşturur, üç betiği .claude/scripts/ içine kopyalar ve .gitignore satırlarını ekler. Var olan hiçbir dosyanın üzerine yazmaz, ikinci kez çalıştırmak hiçbir şeyi değiştirmez. Önce --dry-run ile ne yapacağına bakın: hiçbir şey yazmaz. Taze bir klasörde çıktısı (kısaltılmış):

DS-ReCall init — setup · plugin 0.3.0
  created  CLAUDE.md
  created  docs/DECISIONS.md
  created  docs/TIMELINE.md
  created  .claude/ds-recall.config.json
  created  .claude/scripts/validate.js
  created  .claude/scripts/wrap-prep.js
  created  .claude/scripts/session-lib.js
  created  .gitignore  — added .claude/active/ .claude/backups/ …

  8 created · 0 changed · 0 left as they were · 0 to do · 0 errors
  …
RESULT: OK

Seçenekler

  • --dry-run: ne olacağını yazdırır, diğer her seçenekle birlikte de hiçbir şey yazmaz.
  • --upgrade: yalnızca validate.js, wrap-prep.js ve session-lib.js betiklerini yeniden eşitler (aşağıda, yükseltme).
  • --append-pointers: kendi CLAUDE.md'niz varsa, yeni karar günlüğüne ve zaman çizelgesine bağlantı veren iki satırı ekler. Yalnızca init.js'in kendi oluşturduğu dosyalar için ve yalnızca bir kez.
  • --disable-auto-memory: {"autoMemoryEnabled": false} değerini .claude/settings.json ile birleştirir; özgün dosya settings.json.dsr-backup olarak saklanır. Bu seçenek olmadan init.js ayarlarınızı kendi başına değiştirmez, yalnızca durumu bildirir.

Komut şunları reddeder (RESULT: REFUSED, çıkış kodu 1): eklentinin kendi klasörünün içindeki bir klasörü, eklenti deposunun bir klonunu, var olmayan bir klasörü (onu oluşturmaz) ve bilinmeyen bir seçeneği; --force gibi bir yazım hatası yarım anlamlı bir komut çalıştırmamalı. Ayrıştıramadığı bir settings.json'a dokunmaz. Sekiz elle kopyalama adımı, 0.1 ve 0.2'nin istediği kurulum, kullanım rehberinde “The same setup by hand” başlıklı açılır bir bölümde duruyor.

Elle yapmanız gereken iki şey kaldı, çünkü bunlara bir betik karar vermemeli:

  1. Yerleşik oto-hafızayı kapatın. init.js bunun hâlâ açık olup olmadığını söyler. İsterseniz onu --disable-auto-memory ile yeniden çalıştırın, isterseniz projenin .claude/settings.json dosyasına { "autoMemoryEnabled": false } ekleyin (ya da CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 ortam değişkenini kullanın). Unutursanız SessionStart her oturumda uyarı enjekte eder; böylece iki hafıza katmanını sessizce birlikte çalıştırmazsınız.
  2. CLAUDE.md'yi doldurun. <yer tutucuları> değiştirin: proje adı, bir paragraflık özet, değişmez kurallarınız. Bir indeks olarak kalsın; ayrıntıyı içine yapıştırmayın, ayrıntı dosyasına yönlendirin.

Kontrol:

node .claude/scripts/validate.js

DS-ReCall integrity — <projeniz>
  referenced=2  broken=0  orphan=0  unindexed=0  size-warn=0
RESULT: OK

Çıkış kodu 0 temiz, 1 bozuk bağlantı, öksüz not ya da indekslenmemiş oturum demektir. Boyut uyarıları bilgi amaçlıdır ve hiçbir zaman başarısızlık sayılmaz.

Yükseltme

claude plugin update ds-recall çalıştırıp Claude Code'u yeniden başlatın, sonra her projenin kökünde yeni sürümün klasöründen init.js'i --upgrade ile çalıştırın. Hook'lar eklentinin kendi kopyasını çalıştırır, ama /wrap ve /status projedeki kopyayı çalıştırır; o yüzden betikler kendiliğinden güncellenmez. --upgrade yalnızca üç betiği yeniden yazar, değişen her dosya için eski -> yeni sürümü yazdırır; CLAUDE.md, ayar dosyanız, .gitignore, karar günlüğünüz ve .claude/scripts/ içindeki kendi dosyalarınız değişmez. Bir hatırlatıcı yok: bu adımı her yükseltmenin parçası yapın. Ayrıca 0.2.x'ten geçiyorsanız commit-gate varsayılanı değişiyor (sonraki bölüm).

4. Mevcut bir depoya kurmadan önce: commit-gate artık uyarıyor

Doğrulayıcı, docs/ altındaki Markdown dosyalarına bakar ve her birine bir indeks dosyasından (varsayılan CLAUDE.md) bağlantı verilmesini bekler. Hiçbir yerden bağlanmayan not “öksüz” sayılır. Öksüz not, bozuk bağlantı ya da indekslenmemiş oturum varken commit-gate her git commit'e tepki verir. 0.3.0'dan beri varsayılan olarak yalnızca uyarır; commit geçer. Taze bir kurulumda (içinde docs/foo.md olan, CLAUDE.md ve ayar dosyası olmayan bir depo) ölçülen varsayılan çıktı:

[DS-ReCall] Memory integrity FAIL — this commit was NOT blocked (gateCommit is "warn"): 0 broken, 1 orphan, 0 unindexed session(s). …

Mod, .claude/ds-recall.config.json içindeki gateCommit anahtarıyla seçilir:

gateCommit değerleri

  • anahtar yok ya da "warn" (0.3.0 varsayılanı): commit geçer. Kullanıcı bir uyarı görür (systemMessage), Claude aynı metni bağlam olarak alır (additionalContext).
  • true ya da "block": bütünlük bozukken commit engellenir (0.1 ve 0.2 davranışı).
  • false ya da "off": kapı hiçbir şey yapmaz.
  • başka her şey (örneğin "blok" yazım hatası): "warn" sayılır ve uyarı değerin tanınmadığını söyler; ne sessizce kapanır ne sessizce engellemeye başlar.

Uyarı bilerek bir permissionDecision döndürmüyor: Claude Code belgeleri "allow" değerinin kullanıcının kendi izin istemini atladığını söylüyor ve bir uyarı hiçbir commit'i kendiliğinden onaylamamalı. Geçerli JSON olmayan bir ayar dosyası da "warn"'a düşer.

Geçmiş: 0.1 ve 0.2'de varsayılan engellemekti

0.2'de ölçtük: bağlantısız bir docs/foo.md içeren taze bir kurulum her commit'i şu iletiyle reddetti, siz notları bağlayana kadar:

Commit blocked — memory integrity FAIL: 0 broken, 1 orphan, 0 unindexed session(s).

Kendi CLAUDE.md'niz varsa kopyalama onu korur, ama oluşturulan docs/DECISIONS.md ile docs/TIMELINE.md siz onlara bağlantı verene kadar öksüz kalıyordu. Ölçülen: orphan=2. Varsayılanı bu yüzden değiştirdik. Çözüm hâlâ aynı iki satır (ya da init.js --append-pointers):

- Decisions (dated, reasoned) -> docs/DECISIONS.md
- Milestones -> docs/TIMELINE.md

Düz yol yeterli, Markdown bağlantı sözdizimi şart değil. Seçenekleriniz, en az müdahaleliden başlayarak: hiçbir şey yapmayın (commit'ler geçer, uyarı ne düzeltileceğini söyler); notlarınıza bağlantı verin ya da bir klasörün tamamına bağlanan bir alt indeks yazıp indexes listesine ekleyin; tracked listesini gerçekten küratörlük istediğiniz klasörlere daraltın; node .claude/scripts/validate.js temizlenince "gateCommit": "block" ile kapıyı sıkılaştırın ya da false ile susturun.

0.2.x'ten geçiyorsanız

Ayar dosyasında gateCommit anahtarı olmayan (ya da hiç ayar dosyası olmayan) projelerde varsayılan engellemeden uyarıya döner. Engellemeye güveniyorsanız "gateCommit": "block" yazın. Zaten "gateCommit": true yazan ayarlar eskisi gibi engellemeye devam eder.

Dürüst bir bedel: bir uyarı görmezden gelinebilir. Sıkı modu yazmayan bir proje, bütünlüğü bozan commit'lere karşı korunmaz. Ve uyarının çıktısını gerçek bir Claude Code oturumunda henüz biz görmedik (10. bölüm).

5. Günlük döngü

  1. Oturumu başlatın. SessionStart oturuma bir taslak açar, makinenin gerçek saatini modele enjekte eder (tarih halüsinasyonuna karşı), oto-hafıza hâlâ açıksa uyarır ve daha önceki bir oturumda gerçek iş kalıp işlenmediyse söyler.
  2. Normal çalışın.
  3. Çıkmadan önce /ds-recall:wrap. Kalıcı kararlar karar günlüğüne gider, indeks tazelenir, değişmez kurallar .claude/rules/'a yazılır, oturum “işlendi” olarak işaretlenir, bütünlük yeniden denetlenir. Sonda SESSION SEALED ya da NOT SEALED — WRAP INCOMPLETE yazar; eksik bir wrap hiçbir zaman “kaydedildi” demez.
  4. Unuttuysanız: oturum yine de güvenle kapanır (transkript yedeklenir, kilit bırakılır) ve sonraki oturum neyin borçlu olduğunu söyler. SessionEnd'in çalışması garanti değildir; çökme ya da sert sonlandırma onu atlar. Bu yüzden SessionStart aynı temizliği yapar.

Sağlık durumunu her an /ds-recall:status ile salt-okunur görebilirsiniz: oto-hafıza durumu, canlı kilitler, işlenmeyi bekleyen oturumlar, bütünlük sayıları, indeks boyutu.

6. Neye mal olur, repoya ne yazar?

Maliyet (Claude Code 2.1.299'un kendi tahmini)

  • Her oturumda yüklü: yaklaşık 158 token (claude plugin details ds-recall)
  • Komut çalışınca: wrap yaklaşık 2,2k, status 0,4k, graph 0,6k token
  • Hook'ların model bağlamına maliyeti: yok. Model çağrısı: sıfır. Çalışma zamanı betikleri yalnızca Node'un fs, path ve zlib modüllerini içe aktarıyor (kaynakta arayarak doğruladık; child_process yalnızca test koşumunda geçiyor).

Asıl maliyet eklenti değil: kendi CLAUDE.md ve .claude/rules/ dosyalarınız, çünkü Claude Code bunları her oturumda tamamen yükler. wrap-prep.js bu sayıyı (PER-SESSION FIXED LOAD) görünür tutar; indeksi yalın bırakmak sizin elinizde.

Repoya yazılanlar: .claude/active/<id>.lock (canlı oturum kilidi), docs/sessions/ altında oturum taslağı, .claude/SESSIONS_INDEX.md (oturum başına bir durum satırı; ekibiniz için commit'leyip leyemeyeceğinize siz karar verin) ve .claude/backups/ altında transkript yedekleri. Yedekleri git'e koymayın. --disable-auto-memory kullandıysanız bir de .claude/settings.json.dsr-backup oluşur.

7. Kendi kontrollerimiz neden iki kez kırmızı yandı?

0.2.1: sağlıklı kurulumda kırmızı

README, kurulumdan sonra iki komut öneriyor. node scripts/selftest.js test paketini çalıştırır (0.2.1'de 59 vaka). node scripts/selftest-negative.js ise Ağustos yazısında anlattığımız türden bir araçtır: kaynak koda bilerek gerçek kusur enjekte eder ve test paketinin kırmızı yandığını doğrular. İkisinden de RESULT: OK beklenir.

0.2.1'i hazırlarken ikincisini Windows'ta çalıştırdık ve RESULT: FAIL aldık. Kurulum sağlıklıydı. Sebep: Git for Windows varsayılan olarak core.autocrlf=true kullanır ve dosyaları CRLF satır sonuyla çıkarır. Koşumun enjeksiyon çapalarından biri iki satıra yayılıyordu; CRLF'li dosyada sessizce eşleşmeyi bıraktı (anchor not found) ve enjekte edilmesi gereken kusur hiç yerleşmedi.

Düzeltme: çapalar artık dosyanın kendi satır sonuna uyarlanıyor; kaynağı geri yükleme bayt bayt aynı kalıyor. Kanıtı bir kontrol örneğiyle aldık, aynı kaynak üzerinde:

Aynı kaynak, üç koşum (0.2.1 dönemi)

  • 0.2.1 koşumu, CRLF kopya: CAUGHT 9 · NOT-APPLIED 0 · OK
  • 0.2.1 koşumu, LF kopya: CAUGHT 9 · NOT-APPLIED 0 · OK
  • 0.2.0 koşumu, CRLF kopya: CAUGHT 8 · NOT-APPLIED 1 · FAIL

Üçüncü satır kontrol örneğidir: eski koşum aynı dosyada hatayı gerçekten görüyor. Depoya ayrıca bir .gitattributes eklendi; ağaç her platformda LF kalıyor.

0.2.1 başka düzeltmeler de içeriyordu, hiçbiri hook davranışını değiştirmiyordu. validate.js tanılarını Türkçe basıyordu; dışarıya açılan bir araçta olmaması gereken bir şey, İngilizceye çevrildi. README'nin durum bölümü hâlâ “v0.1, henüz yayınlanmadı” diyordu ve “Dört yapı taşı” başlığı beş madde sayıyordu. 0.2.0 yayınlandığında (7 Ağustos 2026) ne bir kullanım rehberi ne de depoyu klonlamaktan başka bir kurulum yolu vardı; ikisi de 0.2.1 ile geldi.

0.3.0: kendi varsayılanımızı gerçekçi depolarda sınadık

0.2.1'i yayınladıktan sonra onu gerçekçi depolarda yeniden denedik ve iki şey çıktı. Birincisi yukarıda: bağlantısız bir docs/ klasörü olan taze bir kurulum her commit'i reddediyordu (orphan=1; kendi CLAUDE.md'si olanda orphan=2). İkincisi: tek seferlik kurulum sekiz elle kopyalama komutuydu ve sonucu bir sonraki eklenti yükseltmesinde sessizce bayatlıyordu, çünkü /ds-recall:wrap ve /ds-recall:status projedeki betik kopyalarını çalıştırıyor. 0.3.0 ikisini de değiştirdi: varsayılan uyarı oldu, kurulum ve yükseltme init.js oldu.

0.3.0: yeni testlerimizin ilk tam çalıştırması başarısız oldu

Yeni test kollarının ilk tam çalıştırması RESULT: FAIL verdi (sınanabilir 31 kusurdan 29'u yakalandı). İki açık da koddaydı değil, kendi testlerimizdeydi. Bir kuru-çalıştırma (--dry-run) testi zaten tamamen kurulu bir projede koşmuştu; kuru çalıştırmanın dosyalara yazmasına yol açan bir kusur orada görünemezdi. Bir enjeksiyon çapası da hiç yerleşmemişti, çünkü kaynak satırında bir BOM karakteri vardı. İkisi de yayından önce düzeltildi: hâlâ her şeyin kurulması gereken bir projede koşan bir kuru-çalıştırma vakası (yazma yolunun gerçekten görüldüğünü de doğruluyor) ve BOM'a bağlı olmayan bir çapa.

0.3.0'ın sayıları

  • Otomatik test: 59 vakadan 140 vakaya
  • Negatif koşum: 35 enjeksiyon; sınanabilir 34 kusurun 34'ü test paketini kırmızıya çevirdi, 0 kör kol, 0 uygulanmayan, 1 bildirilmiş sınanamaz (gzip geri-okuma uzunluk denetimi, 0.2'den beri aynı)
  • Ortam: hem LF ağacında hem CRLF kopyasında koşuldu

8. Bir doğrulama adımı neyi kanıtlamalı?

Ağustos yazımızda bir doğrulama kapısına üç soru sormuştuk: doğru şeyi mi ölçüyor, bozunca kırmızı yanıyor mu, kaç örneği kapsamına almadı? Bu vakalar dördüncüsünü ekliyor.

Dördüncü soru

Sağlamken yeşil yanıyor mu — kullanıcının makinesinde, kullanıcının deposunda? Doğrulamanın çalıştığı ortam (satır sonu, boşluklu yol, Node sürümü, depodaki mevcut dosyalar) testin girdisinin parçasıdır. Sahte kırmızı, sahte yeşilin aynasıdır.

9. Yerleşik hafızadan farkı: görünürlük değil, küratörlük

Burada kendi eski bir ifademizi düzeltiyoruz. Claude Code 2.1.210'dan beri MEMORY.md dizinini okuma sınırının üstüne çıkaran bir yazma, sessizce kırpılmak yerine açık bir hata veriyor; 2.1.268'den beri kırpma uyarısı kaç satırın kesildiğini ve kesimin nereden başladığını söylüyor (kaynak: Claude Code'un kendi sürüm notları). README'mizdeki eski karşılaştırma tablosunda yerleşik hafıza için “sessiz kırpma” yazıyordu; bu artık geçerli değil, düzelttik.

Bugün kalan fark şu: yerleşik hafızada neyin saklanacağına Claude karar verir, DS-ReCall'da siz. Bunun bedeli oturum sonundaki /ds-recall:wrap adımı. Hangisinin size uyduğu, o bedelin sizin için değip değmediğine bağlı.

claude-mem, Mem0, Supermemory ve agentmemory ile daha geniş bir karşılaştırma için Claude Code hafıza araçlarının dürüst karşılaştırmasına bakın.

10. Dürüst sınırlar

Kod açık kaynak

DS-ReCall MIT lisansıyla herkese açık. Kullanım rehberi, yapılandırma başvurusu, sorun giderme sayfası ve her düzeltmenin ölçümüyle birlikte sürüm notları GitHub'da. Yapay zekâ ile ilgili işleriniz için genel bakışa Devsoy AI sayfasından ulaşabilirsiniz.

GitHub'da incele Kullanım rehberi 0.3.0 sürüm notları

Sık sorulan sorular

DS-ReCall'ı nasıl kurarım?

Claude Code 2.1.275 veya üzerinde, proje klasöründe claude plugin install ds-recall --marketplace toresoysal/ds-recall --scope project komutunu çalıştırın. Bu, eklentiyi yalnızca o projede etkinleştirir. Ardından projeyi bir kez hazırlayın: proje kökünde eklentinin scripts/init.js dosyasını node ile çalıştırın (0.3.0'da yol ~/.claude/plugins/cache/devsoy/ds-recall/0.3.0/scripts/init.js). Komut CLAUDE.md'yi, karar günlüğünü, zaman çizelgesini ve ayar dosyasını oluşturur, üç yardımcı betiği kopyalar, .gitignore satırlarını ekler ve var olan hiçbir dosyanın üzerine yazmaz. Önce --dry-run ile ne yapacağını görebilirsiniz. Son olarak yerleşik oto-hafızayı kapatın ve node .claude/scripts/validate.js komutunun RESULT: OK verdiğini görün.

Kurulumdan sonra git commit neden uyarı veriyor ya da engelleniyor?

docs/ klasörünüzde CLAUDE.md'nin bağlantı vermediği bir not varsa DS-ReCall bunu öksüz sayar ve bütünlük kontrolü FAIL olduğu sürece commit-gate her git commit'e tepki verir. 0.3.0'dan beri varsayılan mod uyarıdır: commit geçer, uyarı neyin düzeltileceğini söyler. 0.1 ve 0.2'de varsayılan engellemekti ve ölçümümüzde bağlantısız bir docs/ klasörü olan taze bir kurulum her commit'i reddetti. Engelleyici mod hâlâ var: ds-recall.config.json içinde "gateCommit": "block" yazın. Uyarıyı tümden kapatmak için false yazın. Öksüz notları CLAUDE.md'den bağlayarak ya da init.js'i --append-pointers ile çalıştırarak da uyarıyı giderebilirsiniz.

DS-ReCall model çağrısı yapıyor mu, kaç token harcıyor?

Hook'lar model çağrısı ve ağ isteği yapmaz; çalışma zamanı betikleri yalnızca Node'un fs, path ve zlib modüllerini kullanır. Claude Code'un kendi tahminine göre eklenti her oturumda yaklaşık 158 token ekler; komutlar çalışırken wrap yaklaşık 2,2k, status yaklaşık 0,4k, graph yaklaşık 0,6k token tutar. Asıl maliyet eklenti değil, her oturumda tamamen yüklenen kendi CLAUDE.md ve .claude/rules/ dosyalarınızdır.

Claude Code'un yerleşik hafızasından farkı ne?

Fark artık görünürlük değil, küratörlüktür. Claude Code 2.1.210'dan beri MEMORY.md okuma sınırını aşan bir yazma sessizce kırpılmak yerine açık hata veriyor. Yerleşik hafızada neyin saklanacağına Claude karar verir; DS-ReCall'da siz karar verirsiniz ve bunun bedeli oturum sonunda çalıştırdığınız /ds-recall:wrap adımıdır. DS-ReCall'da geçmiş oturumlar üzerinde arama yoktur: geri çağırma indeks ve grep ile yapılır.

0.2.x kullanıyorum, 0.3.0'a nasıl geçerim?

claude plugin update ds-recall komutunu çalıştırın, Claude Code'u yeniden başlatın ve her projenin kökünde eklentinin yeni klasöründeki scripts/init.js dosyasını --upgrade ile çalıştırın; bu yalnızca validate.js, wrap-prep.js ve session-lib.js betiklerini yeniden eşitler, CLAUDE.md, ayar dosyası ve karar günlüğünüze dokunmaz. Hatırlatan bir mekanizma yok, bu adımı her yükseltmenin parçası yapın. Dikkat: ayar dosyasında gateCommit anahtarı olmayan projelerde commit-gate varsayılanı engellemeden uyarıya döner. Engellemeye güveniyorsanız "gateCommit": "block" yazın; zaten true yazan ayarlar eskisi gibi engellemeye devam eder. (0.2.0'da Windows'ta selftest-negative kırmızı yanıyordu; bu 0.2.1'de düzeldi.)

Commit-gate uyarısını gerçek bir Claude Code oturumunda gördünüz mü?

Hayır, henüz biz görmedik. Uyarının çıktısı Claude Code'un belgelenmiş hook biçimini izliyor ve kendi testlerimizde sınanıyor, ama giriş yapılmış bir claude ile canlı denemeyi çalıştıramadık: başsız claude “Not logged in” dedi. scripts/live-check-gate.js bunu kendi makinenizde, giriş yapılmış claude ile ve iki küçük model çağrısıyla kanıtlar; yapılamayan ölçümü geçti diye değil UNMEASURED diye raporlar. Sonucunuz, OK ya da FAIL, bir issue'ya değer.

Bu yazıdaki komut çıktıları ve sayılar 19 Ekim 2026'da, DS-ReCall 0.3.0 belgelerinden alınmıştır (0.1, 0.2.0 ve 0.2.1 dönemine ait ölçümler sürüm etiketiyle belirtilmiştir; 0.2.1'inkiler 18 Ekim 2026 tarihlidir). Token rakamları Claude Code 2.1.299'un kendi tahminidir, tam sayım değildir. Claude Code'un MEMORY.md davranışı hakkındaki bilgi Claude Code'un yayımlanmış sürüm notlarına dayanır. Tüm belgeler ve sürüm notları GitHub'da açık. Yazının İngilizce sürümü de var.