SSD Nodes Learn Hosting plans →
Rehberler Matt ConnorYazan Matt Connor · Güncellendi 2026-08-27

Claude Code icin Recall ile kalici bellek kurulumu

Claude Code oturumlarinizi yerel olarak kaydeden Recall eklentisi ile VPS uzerinde token tasarrufu saglayin. Oturum ozetlerini otomatik olusturarak kaldiginiz yerden devam edin.

Verified Every command ran end-to-end on a fresh Ubuntu 24.04 server, July 30, 2026.

Recall'un Claude Code belleği için işlevi

Recall, her projeye oturumlar arası bir bellek kazandıran bir Claude Code eklentisidir. Projenizin içinde bir .recall/ klasörü oluşturarak buraya iki markdown dosyası yazar: gerçekleşen olayların sadece ekleme yapılabilen bir günlüğü ve kaldığınız yerin kısa bir özeti. Her iki dosya da üzerinde çalıştığınız makinede yerel bir Python özetleyici tarafından üretilir; bu nedenle belleğin kendisi hiçbir API token maliyeti oluşturmaz.

Doldurduğu boşluk küçük ancak süreklidir. Salı günü VPS üzerindeki oturumunuzu kapatırsınız. Çarşamba günü Claude Code, Salı günü olanlar hakkında hiçbir bilgiye sahip değildir. Projeyi elle tekrar açıklarsınız ya da modelin durumu anlaması için deponun yarısını tekrar okumasına izin verirsiniz. Her iki yöntem de token harcar; ikincisi ise oldukça yüksek miktarda token tüketir.

Recall 0.4.0 sürümü Temmuz 2026 itibarıyla günceldir ve proje MIT lisanslıdır. Bu bir eklentidir. İçerisinde ağ çağrısı yapan herhangi bir işlem bulunmaz.

VPS üzerinde gereksinimler

Recall yakalama kancaları, eklenti ile birlikte gelen Python betikleridir. Üçüncü taraf bağımlılık bulunmadığından, tek gerçek gereksinim bir yorumlayıcıdır.

python3 -V

Ubuntu 24.04, Python 3.12.3 yanıtını verir. Recall, Python 3.9 ve üzerini destekler. Minimal container imajları bazen hiçbir yorumlayıcı içermez; bu durumda kabuk python3: command not found yanıtını verir. Devam etmeden önce bir tane kurun.

sudo apt update && sudo apt install -y python3

NumPy, özetleyici (summarizer) için bir adımda kullanılan isteğe bağlı bir hızlandırıcıdır. Buna ihtiyacınız yoktur.

python3 -c "import numpy"

ModuleNotFoundError: No module named 'numpy' burada kabul edilebilir bir yanıttır. Özetleyicinin saf Python yolu mevcuttur ve projenin test paketi, her iki yolun da aynı cümleleri seçtiğini doğrular.

Oturum belleği, sunucuda dizüstü bilgisayara kıyasla daha önemlidir; çünkü sunucu işleri günlere yayılan kısa ziyaretler halinde gelir. Eğer halihazırda bir VPS üzerinde tmux içinde Claude Code çalıştırıyorsanız, Recall dünkü oturumu bugüne taşıyan parçadır.

Eklenti pazarından Recall kurulumu

Claude Code oturumu içerisinde girilen iki komut:

/plugin marketplace add raiyanyahya/recall
/plugin install recall@recall

İkinci komut plugin@marketplace şeklindedir. Her iki isim de burada recall olarak geçmektedir; bu durum bir kopyala-yapıştır hatası gibi görünse de aslında bir hata değildir.

Kurulumu, eklentinin kendi komutlarından birini çalıştırarak doğrulayın:

/recall:show

/recall:show mevcut özeti yazdırır. Yepyeni bir projede henüz yazdırılacak bir şey yoktur, bu nedenle aslında kontrol ettiğiniz şey komutun var olup olmadığıdır. Claude Code /recall:show komutunu tanımazsa eklenti yüklenmemiş demektir ve hiçbir kanca (hook) tetiklenmeyecektir.

Bunun yerine bir checkout üzerinden çalıştırmak isterseniz, depoyu klonlayın ve önce doğrulayın:

git clone https://github.com/raiyanyahya/recall ~/recall
cd ~/recall && claude plugin validate .

claude plugin validate ., .claude-plugin/ içindeki manifest dosyasını okur ve eklentinin düzgün biçimlendirilip biçimlendirilmediğini raporlar. Ardından Claude Code'u proje dizininizden claude --plugin-dir ~/recall ile başlatın.

Kancaların ne yazdığı ve ne zaman çalıştığı

Recall, üç adet Claude Code kancası kaydeder. Bunların her biri, eklenti dizinindeki bir Python betiğini çalıştırır.

  • SessionStart; başlatma, devam ettirme ve temizleme işlemlerinde tetiklenir. Oturumun özetiniz görünür şekilde açılması için context.md verisini sunar.
  • Stop; Claude her yanıtı tamamladığında tetiklenir. İlgili etkileşimi günlüğe ekler.
  • SessionEnd; oturum kapandığında tetiklenir ve özeti yeniden oluşturabilir.

Bu işlem sonucunda, her ikisi de .recall/ içinde bulunan iki dosya ortaya çıkar.

  • history.md; yalnızca ekleme yapılan kayıttır: istemler, yanıtlar, üzerinde çalışılan dosyalar ve çalıştırılan komutlar.
  • context.md; oluşturulan özet dosyasıdır: hedef, özet, sonraki adımlar, üzerinde çalışılan dosyalar, çalıştırılan komutlar ve git bağlamı.

Gerçek bir oturumdan sonra dizini kontrol edin.

ls -la .recall/

history.md dosyasını içeriğiyle birlikte görmelisiniz. context.md dosyasını hiç görmeyebilirsiniz; bu bir hata değil, varsayılan davranıştır. auto_save_context, siz ayarlamadığınız sürece off durumundadır, bu nedenle özet yalnızca siz istediğinizde yazılır:

/recall:save

Bu komut, yerel özetleyiciyi history.md üzerinde çalıştırır ve context.md dosyasını yeniden yazar. Kullanılan algoritma, TextRank cümle sıralamasını besleyen TF-IDF (terim frekansı, ters belge frekansı) puanlamasıdır. Belirleyici ve çıkarımsaldır; yani günlüğünüzde zaten var olan cümleleri seçer. Herhangi bir model çağrılmaz, bu nedenle işlem ücretsizdir ve makine çevrimdışıyken de çalışır.

Bir proje için Recall yapılandırması

Yapılandırma, proje kök dizinindeki bir recall.config.json dosyasında tutulur. Aşağıdakiler varsayılan ayarlardır:

{
  "output_dir": ".recall",
  "capture_history": true,
  "summary_sentences": 8,
  "redact": true,
  "include_git": true,
  "max_input_chars": 200000
}
  • output_dir, iki dosyanın nerede tutulacağını belirler. Bu dosyaları proje içinde tutun.
  • capture_history, history.md günlüğünü açıp kapatır.
  • auto_save_context, off veya on_end değerlerini kabul eder ve varsayılan olarak off değerindedir.
  • summary_sentences, context.md içinde kaç cümlenin saklanacağını belirler. Bu değeri artırmak daha uzun bir özet sağlar ancak oturum başlangıcında yükü bir miktar artırır.
  • redact, diske herhangi bir veri yazılmadan önce yaygın gizli veri kalıplarını temizler.
  • include_git, mevcut diff ve yakın zamandaki commit'leri özete ekler.
  • max_input_chars, özetleyicinin tek seferde history.md içeriğinin ne kadarını okuyacağını sınırlar.

Bir VPS üzerindeki proje için en yararlı değişiklik otomatik kaydetmedir; çünkü sunucudaki bir oturum genellikle siz durmaya karar verdiğinizde değil, terminal kapandığında sona erer.

{
  "auto_save_context": "on_end",
  "summary_sentences": 12
}

Yapılandırmaya dokunmadan yakalamayı bir süreliğine durdurmak için duraklatma işaretçisini oluşturun. Yakalamayı yeniden başlatmak için bu dosyayı silin.

touch .recall/.capture-paused

Üretim ortamı kimlik bilgileriyle çalışacağınız bir oturumdan önce bunu yapın; çünkü sansürleme bir filtreleme işlemidir, kesin bir garanti değildir. Aynı mantık, genel olarak yapay zeka ajanlarından gizli verileri uzak tutma konusunun da temelini oluşturur: en güvenli gizli veri, ajanın asla görmediği veridir.

Recall ne kadar token tasarrufu sağlar?

Bu, alternatifin ne olduğuna bağlıdır. Oturum başlangıcında bir özet yüklemek düşük maliyetlidir. Bunun yerini aldığı işlem ise pahalı olabilir; çünkü projeniz hakkında hiçbir hafızası olmayan bir model, dosyaları okuyarak projeyi yeniden keşfetmek zorundadır.

ChartTypical cost of resuming work, per session
The data behind this chart
[
  {
    "label": "Recall context.md",
    "char_count": "4,800",
    "est_tokens": "1,200"
  },
  {
    "label": "Hand-written CLAUDE.md",
    "char_count": "3,200",
    "est_tokens": "800"
  },
  {
    "label": "Re-reading the repo",
    "char_count": "120,000",
    "est_tokens": "30,000"
  },
  {
    "label": "Full transcript replay",
    "char_count": "340,000",
    "est_tokens": "85,000"
  }
]

Bunlar orta ölçekli bir proje için tipik rakamlardır, sizin ölçümleriniz değildir. Bir Recall özeti yaklaşık 1,200 token ile yüklenir; bu da projenin yayınlanan bir özgeçmiş için bin ila iki bin token iddiasıyla uyumludur. Önceki bir transkriptin tamamını yeniden oynatmak, tüm konuşmayı 85,000 token civarında yeniden yükler. Modelin dosyaları okuyarak projeyi yeniden keşfetmesine izin vermek, bu iki değerin arasında, yaklaşık 30,000 token civarındadır ve bu sayı depo büyüdükçe artar. CLAUDE.md satırı ölçeklendirme içindir: kısa ve statik olduğu için daha ucuzdur ve modele dün gece ne olduğunu değil, mevcut kurallarınızı bildirir.

Kendi rakamlarınızı ölçün. Bir token yaklaşık dört İngilizce karakterdir, kod için ise biraz daha azdır. Eğer özeti aynı VPS üzerindeki yerel bir modele de besliyorsanız, özgeçmişe güvenmeden önce hangi pencereye yerleştiğini kontrol edin; çünkü Ollama uzun istemleri küçük bir varsayılan bağlam uzunluğunda keser ve sonunu attığını size bildirmez.

wc -c .recall/context.md .recall/history.md
echo $(( $(wc -c < .recall/context.md) / 4 ))

Bir oturum içinde, /context şu anda bağlam penceresine neyin yüklendiğini gösterir ve /cost oturum toplamlarını raporlar. Bir oturumu soğuk başlatın, bir sonrakini özetle başlatın ve karşılaştırın. Bir oturumun tokenlarının gerçekte nereye gittiğine dair tam bir resim için, Claude Code tokenları nasıl harcar dökümüne bakın.

Bu iddiayı dürüst tutan bir uyarı vardır. Özet her oturum başlangıcında yüklendiği için, üzerinde hiçbir işlem yapmadığınız bir özet bir tasarruf değil, küçük bir maliyettir. Oturumlarınız uzun sürmediği sürece summary_sentences değerini varsayılan değerin yakınında tutun. Daha sakin bir oturum, defterin diğer tarafında yardımcı olur; çünkü çalışan en küçük değişikliğe zorlanan bir aracı, özetleyicinin sıralaması için daha kısa bir günlük bırakır.

Oturum olmadan özeti yeniden oluşturma

Depoyu klonladıysanız, özetleyici kendi komut satırı giriş noktasına sahiptir. Bu durum, terminal ile birlikte bir oturum kapandığında ve yine de özet çıktısını almak istediğinizde bir VPS üzerinde faydalıdır.

python3 ~/recall/scripts/make_context.py --help

Yardım çıktısı, kabul ettiği bayrakları listeler: proje kök dizini için --cwd, açık bir transkript dosyası için --transcript, çıktıyı gizlemek için --quiet ve claude ile opencode arasında seçim yapmak için --harness. Aracı bir projeye yönlendirin:

python3 ~/recall/scripts/make_context.py --cwd /srv/projects/api

Oturum transkriptini ve history.md dosyasını okur, ardından ilettiğiniz dizin altında context.md dosyasını yazar. Eğer marketplace üzerinden kurulum yaptıysanız, eklenti Claude Code tarafından yönetilen bir dizinde bulunur ve aynı işlemi gerçekleştirmenin desteklenen yolu /recall:save komutudur.

Neden hiçbir şey yazılmıyor

Tam bir oturumdan sonra .recall/ dizini oluşmuyor. Kancalar (hooks) hiç çalışmadı. Eklentinin yüklü olduğunu doğrulamak için /recall:show yazın, ardından python3 -V komutunu çalıştırın. Kanca komutu önce python3, ikinci olarak python yolunu dener; bu nedenle her ikisinin de bulunmadığı bir sistemde hiçbir şey yazılmaz ve bu durum sessizce geçiştirilir.

history.md büyüyor ancak context.md hiç değişmiyor. auto_save_context varsayılan olarak off değerindedir. /recall:save komutunu çalıştırın veya anahtarı on_end olarak ayarlayıp SessionEnd kancasının bunu yapmasını sağlayın.

Dosyalar yanlış proje altında görünüyor. Recall, Claude Code'un başlatıldığı dizine göreli olarak yazar; bu nedenle oturumu ana dizininizden başlatmak, belleği oraya yerleştirir. Proje kök dizininden başlatın ve dosyaların aslında nereye kaydedildiğini bulmak için ls -la .recall/ kullanın.

Yakalama durdu ve hiçbir uyarı almadınız. ls -a .recall/ ile duraklatma işaretçisini kontrol edin. Geçen hafta oluşturduğunuz bir .capture-paused dosyası hala görevini yerine getiriyor olabilir.

Uzun bir oturumdan sonra özet yetersiz kalıyor. max_input_chars, özetleyici girişini 200000 karakterle sınırlar, bu nedenle çok uzun bir günlük kesilir. Günlüğü döndürün (rotate).

mv .recall/history.md .recall/history-2026-07-30.md

Ardından kısa bir oturum çalıştırın ve yeni bir history.md dosyasının oluştuğunu doğrulamak için ls -la .recall/ dizinini tekrar kontrol edin.

Recall nerede durur

Recall bir günlük ve özetleyicidir; neleri kapsamadığını netleştirmek önemlidir.

Özetleyici, çıkarımsal (extractive) çalışır. TextRank, history.md içinde halihazırda bulunan cümleleri seçer; bu nedenle bir kararın doğru olup olmadığını değerlendirmez. Salı günü kaydedilen yanlış bir yönlendirme, Çarşamba günü okunduğunda iyi bir karar gibi görünebilir. Risklerin yüksek olduğu durumlarda context.md dosyasını okuyun ve manuel olarak düzeltin. Bu bir markdown dosyasıdır ve düzenlemenizin önünde hiçbir engel yoktur.

Arama özelliği yoktur. Proje başına bir güncel özet ve bir büyüyen günlük alırsınız; projeler arası sorgulanabilir bir bellek yapısı yoktur. Eğer soru üç hafta önce veritabanı hakkında neye karar verdiğiniz ise, history.md içinde grep komutu kullanmanız gerekir. Ayrıca yanlamasına veri taşımaz: aynı VPS üzerinde aynı anda açık olan iki oturum birbirinin günlüğünü göremez; bu nedenle biri diğerinin ne yaptığını bilmek istediğinde, oturumlar çalışırken doğrudan birbirlerine metin aktarabilir.

Oturum içinde yardımcı olmaz. Oturum ortasında dolan bir bağlam penceresi (context window) farklı bir sorundur ve farklı çözümleri vardır; tek bir oturumda bağlam penceresini yönetmek bu kılavuzun tamamlayıcı parçasıdır.

Özet, tasarım gereği güvenilmeyen girdi olarak ele alınır. context.md, etiketlenmiş ve sınırlandırılmış (fenced) şekilde enjekte edilir ve Claude buna güvenmeden önce onay ister. Bu tasarımın nedeni, commit edilmiş bir .recall/ dizininin, commit erişimi olan herkesin temsilcinizin okuyacağı metinleri yazabileceği bir yer olmasıdır. Temsilcinin okudukları hakkında ne kadar durup soru soracağı, oturumun başladığı izin moduna göre belirlenir ve otomatik mod 14 Ağustos 2026 tarihinde Claude Code için varsayılan hale gelir. .recall/ dosyasının kişisel mi yoksa paylaşılan mı olduğuna bir kez karar verin: kişisel bellek için .gitignore dosyasına ekleyin veya commit edip diğer katkılar gibi inceleyin. Temsilci gözetimsiz çalışıyorsa, Claude Code'u bir VPS üzerinde güvenli çalıştırmak daha geniş kapsamlı sınırları ele alır.

Veri gizleme (redaction) en iyi çaba (best effort) prensibiyle çalışır. API anahtarları, token'lar, PEM blokları ve .env atamaları gibi yaygın desenleri hedefler. Commit etmeden önce .recall/ dosyasını okuyun.

Sürüm numarası, olgunluk düzeyi konusunda dürüsttür. Temmuz 2026 itibarıyla 0.4.0 sürümünde, yapılandırma anahtarları ve dosya düzeni sürümler arasında değişebilir; bu nedenle bağımlı olduğunuz bir kurulumu yükseltmeden önce değişiklik günlüğünü (changelog) okuyun.

FAQ

Recall kodumu veya transkriptlerimi herhangi bir yere gönderiyor mu?

Hayır. Yakalama kancaları ve özetleyici, kendi makinenizde çalışan Python betikleridir; eklenti herhangi bir API anahtarı tutmaz ve ağ üzerinden hiçbir çağrı yapmaz. Özetleme işlemi bir model yerine TF-IDF ve TextRank kullandığından, bu adım hiçbir maliyet oluşturmaz ve makine çevrimdışıyken de çalışır. Bunun karşılığında özet, çıkarımsaldır: yeni cümleler yazmak yerine loglarınızdan mevcut cümleleri seçer.

.recall/context.md neden eksik veya güncel değil?

auto_save_context varsayılan olarak off değerindedir, bu nedenle özet yalnızca /recall:save komutunu çalıştırdığınızda yeniden oluşturulur. Her oturum sona erdiğinde özetin yeniden yazılmasını sağlamak için recall.config.json dosyasında "auto_save_context": "on_end" ayarını yapılandırın. Eğer history.md de eksikse, kancalar hiç çalışmıyor demektir: eklentinin /recall:show ile yüklendiğini doğrulayın, ardından kancalar Python betikleri olduğu için o makinede python3 -V yanıtının alındığından emin olun.

Recall oturum başına ne kadar tasarruf sağlıyor?

Bir özeti yüklemek yaklaşık 1,200 token maliyetine karşılık gelir; oysa deponuzu nerede kaldığını anlamak için tekrar okuması gereken bir model için bu maliyet 30,000 token civarındadır. Bunlar tipik değerlerdir. Kendi değerlerinizi wc -c .recall/context.md ve bir oturum içindeki /context komutu ile, soğuk bir başlangıcı özet üzerinden devam eden bir başlangıçla karşılaştırarak ölçebilirsiniz.

Hâlâ bir CLAUDE.md dosyasına ihtiyacım var mı?

Evet, ikisi farklı işler yapar. CLAUDE.md, bilinçli olarak yazdığınız dosyadır: kalıcı kurallar ve derleme komutlarını içerir. context.md ise son oturumda fiilen gerçekleşenlerden oluşturulur, bu nedenle asla yazmayı düşünmeyeceğiniz yarım kalmış bir taşıma işlemini bile tutar. Her ikisini de saklayın.

Tek bir VPS birden fazla proje için bellek tutabilir mi?

Evet. Recall, belleği her proje dizinindeki .recall/ içinde tutar, bu nedenle aynı sunucudaki iki proje ayrı loglar ve ayrı özetler tutar. Claude Code'u her zaman proje kök dizininden başlatın, çünkü dosyalar kullanıcı hesabını değil, çalışma dizinini takip eder.