SSD Nodes Learn Hosting plans →
Rehberler Matt ConnorYazan Matt Connor

Recall ile Claude Code’a VPS belleği ekleme

Recall, Claude Code oturumlarını yerelde günlüğe alıp sürdürülebilir özetler. VPS kurulumunu, Recall 0.4.0 sürümünü ve token tasarrufunu ölçmeyi öğrenin.

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 sağladığı işlev

Recall, her projeye oturumlar arası bir bellek kazandıran bir Claude Code eklentisidir. Projenizin içinde bir .recall/ klasörüne iki adet markdown dosyası yazar: neler olup bittiğine dair sadece ekleme yapılabilen bir günlük ve kaldığınız yeri belirten kısa bir özet. Her iki dosya da üzerinde çalıştığınız makinede yerel bir Python özetleyici tarafından oluşturulur; bu nedenle belleğin kendisi hiçbir API token maliyeti yaratmaz.

Doldurduğu boşluk küçük ancak süreklidir. Salı günü VPS üzerindeki bir oturumu kapattığınızı varsayalım. Çarşamba günü açılan yeni bir oturum, Claude Code'un yerleşik otomatik bellek özelliği notları oturumlar arasında tutabilse de, Salı günkü konuşmayı otomatik olarak yüklemez. Eğer bu notlar nerede kaldığınızı kapsamıyorsa, projeyi ya elle yeniden 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.

18 Temmuz 2026 tarihinde yayınlanan Recall 0.4.0 sürümü, Ekim 2026 itibarıyla hala en güncel sürümdür ve proje MIT lisansına sahiptir. 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ını kaydeder. Bunların her biri, eklenti dizininden bir Python betiği çalıştırır.

  • SessionStart başlangıçta, devam ettirildiğinde ve temizlendiğinde tetiklenir. Oturumun özetiniz görünür şekilde açılması için context.md öğesini öne çıkarır.
  • Stop, Claude her yanıtı tamamladığında tetiklenir. Bu etkileşimi günlüğe ekler.
  • SessionEnd, oturum kapandığında tetiklenir ve özeti yeniden oluşturabilir.

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

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

Gerçek bir oturumdan sonra dizini inceleyin.

ls -la .recall/

Yakalama özelliği etkinleştirildiğinde, duraklatma işareti olmadığında ve mevcut bir transkript bulunduğunda, history.md dosyasının içeriğiyle birlikte oluştuğunu görmelisiniz. Hiç context.md 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. Algoritma, TextRank cümle sıralamasına veri sağlayan 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 adım ü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ğerini kullanır.
  • 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, disk üzerine herhangi bir veri yazılmadan önce yaygın gizli veri kalıplarını temizler.
  • include_git, mevcut diff istatistiklerini ve son commit kayıtlarını özete ekler.
  • max_input_chars, özetleyicinin tek bir geçişte 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ı tekrar başlatmak için bu dosyayı silin.

touch .recall/.capture-paused

Bunu, üretim ortamı kimlik bilgileriyle işlem yapacağınız bir oturumdan önce yapın; çünkü sansürleme bir filtre işlevi görür, kesin bir garanti sağlamaz. Aynı mantık, genel olarak yapay zeka ajanlarından gizli verileri uzak tutma konusunun 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 maliyetli olabilir; çünkü projeniz hakkında hiçbir hafızası olmayan bir model, dosyaları okuyarak projeyi yeniden keşfeder.

GrafikTypical cost of resuming work, per session
Bu grafiğin arkasındaki veriler
[
  {
    "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 bin ila iki bin tokenlik özgeçmiş iddiasıyla uyumludur. Önceki tam bir transkripti yeniden oynatmak, tüm konuşmayı 85,000 token civarında yeniden yükler. Modelin dosyaları okuyarak projeyi yeniden keşfetmesine izin vermek ise bu ikisi arasında, 30,000 token civarında bir değerdedir 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 değerlerinizi ö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'nın varsayılan bağlam uzunluğu mevcut VRAM'e bağlıdır.

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 ise özetle başlatın ve karşılaştırın. Bir oturumun tokenlerinin aslında nereye gittiğine dair tam bir resim için, Claude Code'un tokenleri nasıl harcadığına dair döküme bakın.

Bu iddiayı dürüst tutan bir uyarı mevcuttur. Özet her oturum başlangıcında yüklendiği için, üzerinde işlem yapmadığınız bir özet 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 yönlendirilen 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. Yakalamanın devre dışı bırakılıp bırakılmadığını, çıktı dizininin başka bir yerde yapılandırılıp yapılandırılmadığını veya kancaların (hooks) hiç çalışmadığı sonucuna varmadan önce bir transkript bulunup bulunmadığını kontrol edin. 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, ardından python yolunu dener; bu nedenle her ikisinin de bulunmadığı bir kutuda stderr ve 127 çıkış durumu ile hata alınır. Claude Code, stderr'in ilk satırını içeren engelleyici olmayan bir kanca hata bildirimi gösterir.

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ına izin verin.

Dosyalar yanlış proje altında görünüyor. Recall, Claude Code'un başlatıldığı dizine göreli olarak yazar; bu nedenle bir oturumu ana dizininizden başlatmak belleği oraya yerleştirir. Proje kök dizininden başlayı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 yapıyor olabilir.

Uzun bir oturumdan sonra özet yetersiz kalıyor. max_input_chars, özetleyici girdisini 200000 karakterle sınırlar, bu nedenle çok uzun bir günlük kesilir. Döndürme (rotate) işlemini gerçekleştirin.

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

Daha sonra 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/ içeriğini 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 hâlihazırda bulunan cümleleri seçer; bu nedenle bir kararın doğru olup olmadığını yargılamaz. Salı günü kaydedilen yanlış bir yönlendirme, Çarşamba günü okunduğunda tıpkı doğru bir kararmış gibi görünür. Risklerin gerçek olduğu durumlarda context.md dosyasını okuyun ve manuel olarak düzeltin. Bu bir markdown dosyasıdır ve düzenlemenize engel bir durum yoktur.

Arama özelliği yoktur. Proje başına bir adet güncel özet ve bir adet büyüyen günlük dosyası 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 kullanmanız gerekir. Canlı koordinasyon sağlamaz: aynı projedeki iki oturum aynı günlük dosyasını paylaşır, ancak Recall yeni günlük girdilerini diğer oturumun bağlamına iletmez. Bu yüzden bir oturum diğerinin ne yaptığını bilmek istediğinde, oturumlar çalışırken doğrudan birbirlerine metin aktarabilirler.

Oturum içinde yardımcı olmaz. Oturum ortasında dolan bir bağlam penceresi farklı bir sorundur ve farklı çözümler gerektirir; bir oturum içindeki bağlam penceresini yönetmek, bu kılavuzun tamamlayıcı parçasıdır.

Özet, tasarım gereği güvenilmeyen girdi olarak kabul edilir. context.md, etiketlenmiş ve sınırlandırılmış (fenced) bir şekilde enjekte edilir; Claude, buna güvenmeden önce onay ister. Bu tasarımın nedeni, commit edilmiş bir .recall/ dizininin, commit erişimi olan herkesin ajanınızın okuyacağı metinleri yazabileceği bir yer olmasıdır. Ajanın okuduğu içerik hakkında ne sıklıkla soru soracağı, oturumun başlatıldığı izin moduna göre belirlenir. Claude Code v2.1.283 veya sonraki sürümlerde, otomatik mod, tüm plan ve sağlayıcılarda interaktif terminal ve VS Code oturumları için yerleşik başlangıç modudur. Bu sayede çoğu eylemi siz değil, bir sınıflandırıcı gözden geçirir; HIPAA yapılandırmasına sahip kuruluşlar ise Manual modda başlamaya devam eder. .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 gözden geçirin. Ajan gözetimsiz çalışıyorsa, Claude Code'u bir VPS üzerinde güvenli bir şekilde çalıştırmak konusu daha geniş sınırları kapsar.

Redaksiyon en iyi çaba (best effort) prensibiyle çalışır. API anahtarları, tokenlar, 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. Ekim 2026 itibarıyla en güncel sürüm olan 0.4.0'da, 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ımsal (extractive) niteliktedir: 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ı için recall.config.json dosyasında "auto_save_context": "on_end" ayarını yapılandırın. Eğer history.md de eksikse, capture_history dosyasını, .capture-paused işaretçisini ve bir oturum transkriptinin mevcut olup olmadığını kontrol edin: kancalar, bu durumlarda geçmiş kaydı yazmayı atlar. Eklentinin /recall:show ile yüklendiğini doğrulayın, ardından kancalar Python betikleri olduğu için o makinede python3 -V yanıtlarının geldiğinden emin olun.

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

Bir özetin yüklenmesi yaklaşık 1,200 token maliyetine sahipken, deponuzu nerede kaldığını anlamak için tekrar okuması gereken bir model için bu maliyet tipik olarak 30,000 tokendır. Bunlar tipik değerlerdir. Kendi ölçümlerinizi wc -c .recall/context.md ve bir oturum içindeki /context komutu ile, soğuk bir başlangıcı özet üzerinden devam eden bir oturumla karşılaştırarak yapabilirsiniz.

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

Evet, ikisi farklı işlevlere sahiptir. CLAUDE.md, bilinçli olarak yazdığınız dosyadır: kalıcı kuralları ve derleme komutlarını içerir. context.md ise son oturumda gerçekte ne olduğu üzerinden oluşturulur; bu nedenle, yazmayı asla düşünmeyeceğiniz yarım kalmış bir taşıma işlemini (migration) içinde barındırır. Her ikisini de tutun.

Tek bir VPS birden fazla projenin belleğini tutabilir mi?

Evet. Recall, belleği her proje dizinindeki .recall/ içinde tutar; bu nedenle aynı sunucudaki iki proje, ayrı loglar ve ayrı özetler kullanır. 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.

Bu yazı işinize yaradı mı?