SSD Nodes Learn 8GB RAM — yılda $66
Rehberler Matt ConnorYazan Matt Connor · Güncellendi 2026-08-01

Claude Code için VPS üzerinde yerel bellek kurulumu

Recall 0.4.0, Claude Code oturumlarını yerel olarak kaydedip özetler. VPS üzerinde kurulumu, %%C16%% dosyalarını ve token tasarrufunu ölçme yöntemini öğrenin.

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

Recall, Claude Code bellek işlevini nasıl sağlar

Recall, her projeye oturumlar arasında kullanılabilen bir bellek sağlayan bir Claude Code eklentisidir. Projenizin içindeki .recall/ klasörüne iki Markdown dosyası yazar: yaşananların yalnızca sona eklenebildiği bir günlüğü ve kaldığınız yeri açıklayan kısa bir özeti. Her ikisi de üzerinde çalıştığınız makinede yerel bir Python özetleyicisi tarafından oluşturulur. Bu nedenle belleğin kendisi API token'ı tüketmez.

Karşıladığı eksiklik küçük ama süreklidir. Salı günü VPS'nizdeki oturumu kapatırsınız. Çarşamba günü Claude Code salı günü hakkında hiçbir şey bilmez. Projeyi el ile yeniden açıklarsınız veya modelin durumu anlamak için deponun yarısını yeniden okumasına izin verirsiniz. Her iki yöntem de token tüketir. İkinci yöntem çok daha fazla token tüketir.

Recall 0.4.0 sürümü Temmuz 2026 itibarıyla günceldir ve proje MIT lisansına sahiptir. Bu bir eklentidir. Eklenti hiçbir şekilde ağ çağrısı yapmaz.

VPS üzerinde gerekenler

Recall'ın yakalama kancaları, eklentiyle birlikte sunulan Python betikleridir. Üçüncü taraf bağımlılıkları yoktur. Bu nedenle 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 sonraki sürümleri destekler. Minimal container imajlarında bazen hiç yorumlayıcı bulunmaz. Bu durumda kabuk python3: command not found yanıtını verir. Devam etmeden önce bir yorumlayıcı yükleyin.

sudo apt update && sudo apt install -y python3

NumPy, özetleyicinin bir adımı için 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 pure-Python yolu vardır. Projenin test paketi, her iki yolun da aynı cümleleri seçtiğini doğrular.

Sunucuda oturum belleği, dizüstü bilgisayara göre daha önemlidir. Bunun nedeni, sunucu çalışmalarının günlere yayılan kısa oturumlar halinde yürütülmesidir. VPS üzerinde tmux içinde çalışan Claude Code zaten kullanılıyorsa Recall, dünkü oturumu bugünkü oturuma taşıyan bileşendir.

Eklenti mağazasından Recall kurulumu

Claude Code oturumunda yazılan iki komut:

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

İkinci komut plugin@marketplace değerini okur. Her iki ad da burada recall olarak görünür. Bu durum kopyala-yapıştır hatası gibi görünse de hata değildir.

Kurulumu, eklentinin kendi komutlarından birini çalıştırarak kontrol edin:

/recall:show

/recall:show geçerli özeti yazdırır. Yepyeni bir projede henüz yazdırılacak bir şey yoktur. Bu nedenle burada kontrol edilen, komutun mevcut olup olmadığıdır. Claude Code /recall:show değerini tanımıyorsa eklenti yüklenmemiştir ve hiçbir hook çalışmaz.

Bunun yerine bir checkout dizininden çalıştırmak için repository'yi 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 doğru biçimde oluşturulup oluşturulmadığını bildirir. Ardından Claude Code'u proje dizininizden claude --plugin-dir ~/recall ile başlatın.

Kancaların yazdığı bilgiler ve çalışma zamanı

Recall, üç Claude Code kancaları kaydeder. Her biri eklenti dizinindeki bir Python betiğini çalıştırır.

  • SessionStart başlangıçta, devam ettirmede ve temizleme işleminde çalışır. context.md içeriğini gösterir; böylece oturum, özetiniz görünür durumda açılır.
  • Stop, Claude bir yanıtı her tamamladığında çalışır. O turu günlüğe ekler.
  • SessionEnd, oturum kapandığında çalışır ve özeti yeniden oluşturabilir.

Bunun sonucunda iki dosya oluşturulur. Her ikisi de .recall/ içindedir.

  • history.md yalnızca ekleme yapılan kayıttır: istemleri, yanıtları, değiştirilen dosyaları ve çalıştırılan komutları içerir.
  • context.md oluşturulan özettir: amacı, özeti, sonraki adımları, değiştirilen dosyaları, çalıştırılan komutları ve git bağlamını içerir.

Gerçek bir oturumdan sonra dizini inceleyin.

ls -la .recall/

İçinde içerik bulunan history.md dosyasını görmeniz gerekir. 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 değerindedir. Bu nedenle özet yalnızca istediğinizde yazılır:

/recall:save

Bu komut, yerel özetleyiciyi history.md üzerinde çalıştırır ve context.md dosyasının üzerine yazar. Algoritma, TextRank cümle sıralamasını besleyen TF-IDF (terim sıklığı, ters belge sıklığı) puanlamasıdır. Deterministik ve çıkarımsaldır; bu, günlüğünüzde zaten bulunan cümleleri seçtiği anlamına gelir. Herhangi bir model çağrılmaz. Bu nedenle işlem ücretsizdir ve makine çevrimdışıyken çalışır.

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

Yapılandırma, projenin kök dizinindeki recall.config.json dosyasında bulunur. Dağıtımla birlikte gelen varsayılanlar şunlardır:

{
  "output_dir": ".recall",
  "capture_history": true,
  "summary_sentences": 8,
  "redact": true,
  "include_git": true,
  "max_input_chars": 200000
}
  • output_dir, iki dosyanın konumunu belirler. Bu konumu proje içinde tutun.
  • capture_history, history.md günlüğünü etkinleştirir veya devre dışı bırakır.
  • auto_save_context, off veya on_end değerini kabul eder ve varsayılan olarak off değerini kullanır.
  • summary_sentences, context.md içine kaç cümlenin aktarılacağını belirler. Bu değerin artırılması daha uzun bir özet oluşturur ve oturum başlangıcındaki yükü biraz artırır.
  • redact, herhangi bir veri diske yazılmadan önce yaygın gizli bilgi kalıplarını kaldırır.
  • include_git, geçerli diff çıktısını ve son commit'leri özete ekler.
  • max_input_chars, özetleyicinin tek geçişte history.md içinden okuyabileceği veri miktarını sınırlar.

VPS üzerindeki bir proje için yararlı değişiklik, otomatik kaydetmeyi etkinleştirmektir. Sunucudaki bir oturum, durdurmaya karar vermenizden önce terminal bağlantısı kesildiğinde sona erebilir.

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

Yapılandırmaya dokunmadan yakalamayı geçici olarak durdurmak için duraklatma işaretleyicisini oluşturun. Yakalamayı yeniden başlatmak için bu işaretleyiciyi silin.

touch .recall/.capture-paused

Üretim kimlik bilgileriyle çalışacağınız bir oturumdan önce bunu yapın. Redaction bir filtredir ve garanti sağlamaz. Aynı yaklaşım, genel olarak gizli bilgileri AI aracılarından uzak tutmak için de geçerlidir: Güvenli gizli bilgi, aracının hiç görmediği bilgidir.

Recall ne kadar token tasarrufu sağlar?

Bu, alternatifin ne olduğuna bağlıdır. Oturumun başında bir özet yüklemek düşük maliyetlidir. Özetin yerini aldığı işlem pahalı olabilir; çünkü projeniz hakkında belleği olmayan bir model, dosyaları okuyarak projeyi yeniden keşfeder.

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 büyüklükteki bir proje için tipik değerlerdir; sizin projenize ait bir ölçüm değildir. Bir Recall özeti yaklaşık 1,200 token ile yüklenir. Bu değer, projenin bir oturum özeti için yayınladığı 1.000-2.000 token tahminiyle uyumludur. Önceki bir konuşmanın tamamını yeniden oynatmak, konuşmanın tümünü yeniden yükler ve yaklaşık 85,000 token kullanır. Modelin dosyaları okuyarak projeyi yeniden keşfetmesine izin vermek bu iki değer arasında yer alır ve yaklaşık 30,000 token kullanır. Bu sayı, repository büyüdükçe artar. Ölçek karşılaştırması için CLAUDE.md satırı eklenmiştir: Kısa ve statik olduğu için daha düşük maliyetlidir ve modele önceki gece olanları değil, sürekli geçerli kurallarınızı bildirir.

Kendi değerlerinizi ölçün. Bir token, İngilizce düzyazıda yaklaşık 4 karaktere karşılık gelir; kodda bu değer biraz daha düşüktür.

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

Bir oturum içinde /context, o anda context window içine yüklenenleri gösterir. /cost ise oturum toplamlarını bildirir. Bir oturumu özet olmadan başlatın, sonraki oturumu bir özet mevcutken başlatın ve sonuçları karşılaştırın. Bir oturumun token'larının gerçekte nereye gittiğini eksiksiz görmek için Claude Code'un token'ları nasıl kullandığı bölümünde döküm bulunur.

Bu iddianın geçerliliğini koruyan bir sınırlama vardır. Özet her oturumun başlangıcında yüklendiğinden, hiç yararlanmadığınız bir özet tasarruf değil, küçük bir ek maliyettir. Oturumlarınız uzun sürmüyorsa summary_sentences değerini varsayılan değere yakın tutun.

Oturum olmadan özeti yeniden oluşturma

Depoyu klonladıysanız özetleyicinin kendine ait bir komut satırı giriş noktası vardır. Bu özellik, bir VPS üzerinde terminalle birlikte bir oturum sonlandığında ve özete yine de ihtiyaç duyulduğunda kullanışlıdır.

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

Yardım çıktısında kabul ettiği seçenekler listelenir: proje kökü için --cwd, açıkça belirtilen transkript dosyası için --transcript, çıktıyı bastırmak 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 okur, ardından context.md değerini belirttiğiniz dizin altında oluşturur. Marketplace üzerinden yükleme yaptıysanız eklenti, Claude Code tarafından yönetilen bir dizinde bulunur ve aynı işlemi gerçekleştirmek için desteklenen yöntem /recall:save olur.

Neden hiçbir şey yazılmıyor

Tam bir oturumdan sonra .recall/ dizini yok. Kancalar hiç çalışmamıştır. Eklentinin yüklendiğini doğrulamak için /recall:show yazın, ardından python3 -V komutunu çalıştırın. Kanca komutu önce python3, sonra python konumunu dener. Bu nedenle ikisini de içermeyen bir sistem hiçbir şey yazmaz ve bu durumla ilgili uyarı vermez.

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 işlemi gerçekleştirmesini sağlayın.

Dosyalar yanlış projenin altında görünüyor. Recall, dosyaları Claude Code'un başlatıldığı dizine göre yazar. Bu nedenle bir oturumu home dizininizden başlatırsanız bellek oraya yazılır. Proje kök dizininden başlatın ve dosyaların gerçekte nereye yazıldığını bulmak için ls -la .recall/ kullanın.

Yakalama durdu ve hiçbir uyarı verilmedi. ls -a .recall/ ile duraklatma işaretini kontrol edin. Geçen hafta oluşturduğunuz .capture-paused dosyası hâlâ işlemi duraklatı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. Günlük dosyasını döndürün.

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 oluştuğunu doğrulamak için ls -la .recall/ değerini yeniden kontrol edin.

Recall'ın durduğu yer

Recall bir günlük ile özetleyiciden oluşur. Bunun neleri kapsamadığını açıkça belirtmek gerekir.

Özetleyici, metin içinden alıntı yapar. TextRank, zaten history.md içinde bulunan cümleleri seçer. Bu nedenle bir kararın doğru olup olmadığını değerlendirmez. Salı günü kaydedilmiş yanlış bir adım, Çarşamba günü verilmiş iyi bir karar gibi görünür. Risk gerçek olduğunda context.md dosyasını okuyun ve düzeltmeyi elle yapın. Bu bir markdown dosyasıdır ve düzenlenmesini engelleyen hiçbir şey yoktur.

Arama özelliği yoktur. Her proje için sorgulanabilir, projeler arası bir bellek yerine bir güncel özet ve büyüyen bir günlük bulunur. Üç hafta önce veritabanı hakkında neye karar verildiği soruluyorsa history.md içinde grep kullanılır.

Tek bir oturum içinde yardımcı olmaz. Bir oturum sırasında bağlam penceresinin dolması farklı bir sorundur ve farklı çözümler gerektirir. tek bir oturum içinde bağlam penceresini yönetme bu kılavuzun tamamlayıcı metnidir.

Özet, tasarım gereği güvenilmeyen girdi olarak ele alınır. context.md, çit içine alınarak etiketlenmiş şekilde eklenir ve Claude buna güvenmeden önce sorar. Bu tasarımın nedeni, commit erişimi olan herkesin aracınızın okuyacağı metni yazabileceği bir .recall/ dizininin bulunmasıdır. .recall/ konumunun kişisel mi yoksa paylaşımlı mı olacağına bir kez karar verin: kişisel bellek için .gitignore içine ekleyin veya commit edin ve diğer katkıları incelediğiniz gibi inceleyin. Agent gözetimsiz çalışıyorsa VPS üzerinde Claude Code'u güvenli şekilde çalıştırma daha geniş sınırı ele alır.

Redaksiyon en iyi çaba ilkesiyle yapılır. API anahtarları, token'lar, PEM blokları ve .env atamaları gibi yaygın kalıpları hedefler. Commit etmeden önce .recall/ dosyasını okuyun.

Sürüm numarası olgunluk düzeyini açıkça gösterir. Temmuz 2026'da sürüm 0.4.0 için yapılandırma anahtarları ve dosya düzeni sürümler arasında hâlâ değişebilir. Bu nedenle, bağımlı olduğunuz bir kurulumu yükseltmeden önce değişiklik günlüğünü okuyun.

FAQ

Recall kodumu veya dökümlerimi herhangi bir yere gönderir mi?

Hayır. Yakalama kancaları ve özetleyici, kendi makinenizde çalışan Python betikleridir. Eklenti herhangi bir API anahtarı tutmaz ve ağ üzerinden çağrı yapmaz. Özetleme, bir model yerine TF-IDF ve TextRank kullanır. Bu nedenle işlem ücretsizdir ve makine çevrimdışıyken de çalışır. Bunun karşılığında özet çıkarımsaldır: yeni cümleler yazmak yerine günlüğünüzdeki cümleleri seçer.

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

auto_save_context varsayılan olarak off değerini kullanır. Bu nedenle özet yalnızca /recall:save komutunu çalıştırdığınızda yeniden oluşturulur. Her oturum sona erdiğinde yeniden yazılması için recall.config.json içinde "auto_save_context": "on_end" değerini ayarlayın. history.md de eksikse kancalar hiç çalışmıyor demektir. /recall:show ile eklentinin yüklendiğini doğrulayın. Ardından, kancalar Python betikleri olduğu için bu makinede python3 -V yanıt veriyor mu kontrol edin.

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

Bir özeti yüklemek yaklaşık 1,200 token tüketir. Buna karşılık, nerede olduğunu belirlemek için deponuzu yeniden okuması gereken bir model tipik olarak 30,000 token tüketir. Bunlar tipik değerlerdir. Bir oturum içinde wc -c .recall/context.md ve /context komutlarını kullanarak kendi değerlerinizi ölçün. Soğuk başlangıç ile özetten devam eden başlangıcı karşılaştırın.

Yine de bir CLAUDE.md dosyasına ihtiyacım var mı?

Evet. Bu iki dosyanın görevleri farklıdır. CLAUDE.md, bilerek yazdığınız içeriği, yani kalıcı kuralları ve derleme komutlarını içerir. context.md ise son oturumda gerçekten gerçekleşenlerden oluşturulur. Bu nedenle, yazmayı hiç düşünmeyeceğiniz yarım kalmış geçişi içerir. İkisini de koruyun.

Tek bir VPS, birkaç proje için bellek tutabilir mi?

Evet. Recall, belleği her proje dizininin içindeki .recall/ konumunda tutar. Bu nedenle aynı sunucudaki iki proje ayrı günlükleri ve ayrı özetleri korur. Claude Code'u her seferinde proje kök dizininden başlatın. Çünkü dosyalar kullanıcı hesabını değil, çalışma dizinini izler.