Recall: Memori Claude Code di VPS
Recall mencatat tiap sesi Claude Code ke log lokal, lalu merangkumnya agar dapat dilanjutkan. Pelajari pemasangan di VPS dan ukur penghematan token API.
Fungsi Recall untuk memori Claude Code
Recall adalah plugin Claude Code yang memberikan memori lintas sesi untuk setiap project. Plugin ini menulis dua file markdown ke dalam folder .recall/ di project Anda: log append-only yang mencatat hal-hal yang terjadi dan ringkasan singkat tentang posisi terakhir Anda. Keduanya dibuat di mesin yang Anda gunakan oleh summarizer Python lokal, sehingga memori itu sendiri tidak menggunakan token API.
Recall mengisi celah yang kecil tetapi selalu ada. Anda menutup sesi pada VPS pada hari Selasa. Pada hari Rabu, sesi baru tidak memuat percakapan hari Selasa secara otomatis, meskipun auto memory bawaan Claude Code dapat mempertahankan catatan lintas sesi. Jika catatan tersebut tidak mencakup posisi terakhir Anda, Anda harus menjelaskan ulang project secara manual, atau membiarkan model membaca kembali separuh repository untuk memahaminya. Keduanya menggunakan token, dan cara kedua menggunakan token dalam jumlah besar.
Recall version 0.4.0, yang dirilis pada 18 July 2026, masih merupakan rilis terbaru per October 2026, dan project ini menggunakan lisensi MIT. Recall adalah plugin. Tidak ada bagian di dalamnya yang melakukan network call.
Yang diperlukan pada VPS
Hook capture Recall adalah skrip Python yang disertakan bersama plugin. Tidak ada dependensi pihak ketiga, sehingga satu-satunya persyaratan utama adalah interpreter.
python3 -VUbuntu 24.04 menjawab Python 3.12.3. Recall mendukung Python 3.9 dan yang lebih baru. Image container minimal terkadang tidak menyertakan interpreter sama sekali; dalam kondisi tersebut, shell menjawab python3: command not found. Instal interpreter sebelum melanjutkan.
sudo apt update && sudo apt install -y python3NumPy adalah akselerator opsional untuk salah satu tahap summarizer. Anda tidak membutuhkannya.
python3 -c "import numpy"ModuleNotFoundError: No module named 'numpy' merupakan jawaban yang dapat diterima di sini. Summarizer memiliki jalur pure-Python, dan test suite proyek memeriksa bahwa kedua jalur memilih kalimat yang sama.
Memori sesi lebih penting pada server daripada pada laptop karena pekerjaan di server biasanya dilakukan dalam kunjungan singkat yang tersebar selama beberapa hari. Jika Anda sudah menjalankan Claude Code dalam tmux pada VPS, Recall adalah komponen yang membawa sesi kemarin ke sesi hari ini.
Instal Recall dari marketplace plugin
Dua perintah, yang dijalankan di dalam sesi Claude Code:
/plugin marketplace add raiyanyahya/recall
/plugin install recall@recallPerintah kedua membaca plugin@marketplace. Kedua nama tersebut adalah recall di sini. Hal ini tampak seperti kesalahan salin-tempel, tetapi sebenarnya tidak.
Periksa instalasi dengan menjalankan salah satu perintah milik plugin:
/recall:show/recall:show menampilkan ringkasan saat ini. Pada project yang benar-benar baru, belum ada yang dapat ditampilkan. Jadi, yang sebenarnya diperiksa adalah apakah perintah tersebut tersedia. Jika Claude Code tidak mengenali /recall:show, plugin belum dimuat dan tidak ada hook yang akan dijalankan.
Untuk menjalankannya dari checkout, clone repository lalu validasi terlebih dahulu:
git clone https://github.com/raiyanyahya/recall ~/recall
cd ~/recall && claude plugin validate .claude plugin validate . membaca manifest di .claude-plugin/ dan melaporkan apakah plugin tersebut memiliki struktur yang valid. Kemudian, mulai Claude Code dari direktori project dengan claude --plugin-dir ~/recall.
Yang ditulis hook, dan kapan
Recall mendaftarkan tiga hook Claude Code. Masing-masing menjalankan skrip Python dari direktori plugin.
SessionStartberjalan saat startup, resume, dan clear. Hook ini menampilkancontext.mdagar sesi dibuka dengan ringkasan yang terlihat.Stopberjalan setiap kali Claude selesai memberikan respons. Hook ini menambahkan giliran tersebut ke log.SessionEndberjalan saat sesi ditutup dan dapat membuat ulang ringkasan.
Dua file dihasilkan, dan keduanya berada di dalam .recall/.
history.mdadalah catatan append-only: prompt, respons, file yang diakses, dan perintah yang dijalankan.context.mdadalah ringkasan yang dibuat secara otomatis: tujuan, ringkasan, langkah berikutnya, file yang diakses, perintah yang dijalankan, dan konteks git.
Setelah satu sesi nyata, lihat isi direktori tersebut.
ls -la .recall/Dengan capture yang diaktifkan, tanpa penanda pause, dan transkrip yang tersedia, Anda seharusnya melihat history.md berisi konten. Anda mungkin tidak melihat context.md sama sekali. Itu adalah perilaku default, bukan kesalahan. auto_save_context adalah off kecuali Anda menetapkannya. Karena itu, ringkasan hanya ditulis saat Anda memintanya:
/recall:savePerintah tersebut menjalankan summarizer lokal pada history.md dan menulis ulang context.md. Algoritmanya menggunakan penilaian TF-IDF (term frequency, inverse document frequency) yang dilanjutkan dengan pemeringkatan kalimat TextRank. Proses ini deterministik dan ekstraktif. Artinya, proses ini memilih kalimat yang sudah ada di dalam log. Tidak ada model yang dipanggil, sehingga langkah ini gratis dan dapat berjalan saat mesin offline.
Konfigurasikan Recall untuk satu proyek
Konfigurasi disimpan dalam file recall.config.json di direktori root proyek. Berikut adalah default yang disertakan:
{
"output_dir": ".recall",
"capture_history": true,
"summary_sentences": 8,
"redact": true,
"include_git": true,
"max_input_chars": 200000
}output_dirmenentukan lokasi penyimpanan kedua file tersebut. Simpan di dalam proyek.capture_historymengaktifkan atau menonaktifkan loghistory.md.auto_save_contextmenerimaoffatauon_end, dan secara default menggunakanoff.summary_sentencesmenentukan jumlah kalimat yang dipertahankan dalamcontext.md. Nilai yang lebih tinggi menghasilkan ringkasan yang lebih panjang dan sedikit menambah beban saat sesi dimulai.redactmenghapus pola rahasia umum sebelum apa pun ditulis ke disk.include_gitmenambahkan statistik diff saat ini dan commit terbaru ke ringkasan.max_input_charsmembatasi jumlahhistory.mdyang dibaca summarizer dalam satu proses.
Untuk proyek pada VPS, perubahan yang berguna adalah mengaktifkan penyimpanan otomatis. Sesi pada server sering berakhir ketika terminal terputus, bukan ketika Anda memutuskan untuk menghentikannya.
{
"auto_save_context": "on_end",
"summary_sentences": 12
}Untuk menghentikan capture sementara tanpa mengubah konfigurasi, buat pause marker. Hapus marker tersebut untuk mulai melakukan capture lagi.
touch .recall/.capture-pausedLakukan ini sebelum sesi yang digunakan untuk menangani kredensial production, karena redaction adalah filter, bukan jaminan. Alasan yang sama mendasari menjauhkan secret dari AI agent secara umum: secret yang aman adalah secret yang tidak pernah dilihat agent.
Berapa banyak token yang dihemat oleh Recall?
Jumlahnya bergantung pada alternatif yang digunakan. Memuat ringkasan saat sesi dimulai membutuhkan sedikit token. Hal yang digantikannya dapat membutuhkan banyak token, karena model yang tidak memiliki konteks tentang proyek Anda harus menemukannya kembali dengan membaca file.
Data di balik grafik ini
[
{
"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"
}
]Angka berikut adalah angka umum untuk proyek berukuran menengah, bukan hasil pengukuran proyek Anda. Ringkasan Recall dimuat dengan sekitar 1,200 token. Angka ini sejalan dengan klaim yang dipublikasikan proyek tersebut, yaitu seribu hingga dua ribu token untuk melanjutkan sesi. Memutar ulang transkrip sebelumnya secara lengkap akan memuat kembali seluruh percakapan, sekitar 85,000 token. Membiarkan model menemukan kembali proyek dengan membaca file berada di antara keduanya, yaitu sekitar 30,000 token. Angka tersebut bertambah seiring ukuran repositori. Baris CLAUDE.md digunakan sebagai pembanding skala. Baris ini lebih hemat karena pendek dan statis, serta memberi tahu model aturan tetap Anda, bukan kejadian pada malam sebelumnya.
Ukur angka Anda sendiri. Satu token kira-kira setara dengan empat karakter dalam prosa berbahasa Inggris, dan sedikit kurang untuk kode. Jika Anda juga memberikan ringkasan kepada model lokal pada VPS yang sama, periksa konteks yang digunakan sebelum mempercayai proses pelanjutan sesi. Alasannya, panjang konteks default Ollama bergantung pada VRAM yang tersedia.
wc -c .recall/context.md .recall/history.md
echo $(( $(wc -c < .recall/context.md) / 4 ))Di dalam sesi, /context menampilkan hal yang sedang dimuat ke dalam jendela konteks, sedangkan /cost melaporkan total sesi. Mulai satu sesi tanpa konteks awal, lalu mulai sesi berikutnya dengan ringkasan yang sudah tersedia, dan bandingkan hasilnya. Untuk gambaran lengkap tentang penggunaan token dalam sesi, cara Claude Code menggunakan token menjelaskan rinciannya.
Ada satu catatan agar klaim ini tetap akurat. Ringkasan dimuat pada setiap awal sesi. Karena itu, ringkasan yang tidak pernah digunakan merupakan biaya kecil, bukan penghematan. Biarkan summary_sentences mendekati nilai default, kecuali sesi Anda berlangsung lama. Sesi yang lebih tenang membantu dari sisi lainnya, karena agent yang diarahkan untuk melakukan perubahan sekecil mungkin yang berfungsi menghasilkan log yang lebih pendek untuk diprioritaskan oleh pembuat ringkasan.
Buat ulang ringkasan tanpa sesi
Jika Anda meng-clone repository, summarizer memiliki entry point command line sendiri. Ini berguna pada VPS ketika sesi berakhir bersama terminal, tetapi Anda tetap memerlukan digest.
python3 ~/recall/scripts/make_context.py --helpOutput bantuan mencantumkan flag yang diterima: --cwd untuk root proyek, --transcript untuk file transkrip tertentu, --quiet untuk menyembunyikan output, dan --harness untuk memilih antara claude dan opencode. Arahkan ke sebuah proyek:
python3 ~/recall/scripts/make_context.py --cwd /srv/projects/apiSummarizer membaca transkrip sesi dan history.md, lalu menulis context.md di bawah direktori yang Anda berikan. Jika Anda menginstalnya melalui marketplace, plugin berada di direktori yang dikelola Claude Code, dan /recall:save adalah cara yang didukung untuk melakukan tugas yang sama.
Mengapa tidak ada data yang ditulis
Tidak ada direktori .recall/ setelah sesi selesai sepenuhnya. Periksa apakah capture dinonaktifkan, direktori output dikonfigurasi di lokasi lain, atau tidak ada transkrip yang ditemukan sebelum menyimpulkan bahwa hook tidak pernah dijalankan. Ketik /recall:show untuk memastikan plugin dimuat, lalu jalankan python3 -V. Perintah hook mencoba python3 terlebih dahulu dan python kedua. Karena itu, mesin yang tidak memiliki keduanya akan gagal dengan stderr dan status keluar 127. Claude Code menampilkan pemberitahuan error hook yang tidak memblokir, berisi baris pertama stderr.
history.md bertambah, tetapi context.md tidak pernah berubah. auto_save_context secara default adalah off. Jalankan /recall:save, atau atur kunci tersebut ke on_end dan biarkan hook SessionEnd yang melakukannya.
File muncul di bawah project yang salah. Recall menulis menggunakan path relatif terhadap direktori tempat Claude Code dijalankan. Karena itu, memulai sesi dari direktori home akan menempatkan memory di sana. Mulai dari root project, lalu gunakan ls -la .recall/ untuk menemukan lokasi file yang sebenarnya.
Capture berhenti dan tidak ada peringatan. Periksa marker jeda dengan ls -a .recall/. File .capture-paused yang Anda buat minggu lalu masih menjalankan fungsinya.
Ringkasan terlalu singkat setelah sesi yang panjang. max_input_chars membatasi input summarizer hingga 200000 karakter, sehingga log yang sangat panjang akan dipotong. Lakukan rotasi.
mv .recall/history.md .recall/history-2026-07-30.mdSetelah itu, jalankan satu sesi singkat dan periksa kembali ls -la .recall/ untuk memastikan history.md baru telah muncul.
Batas Recall
Recall adalah log dan peringkas. Jelaskan dengan jelas hal-hal yang tidak tercakup oleh pendekatan ini.
Peringkasnya bersifat ekstraktif. TextRank memilih kalimat yang sudah ada di history.md, sehingga tidak pernah menilai apakah suatu keputusan benar. Keputusan yang keliru dan dicatat pada hari Selasa akan terbaca sama persis seperti keputusan yang baik pada hari Rabu. Jika dampaknya penting, baca context.md dan perbaiki secara manual. File tersebut menggunakan format markdown, dan tidak ada yang menghalangi Anda untuk mengeditnya.
Tidak ada fitur pencarian. Anda mendapatkan satu ringkasan saat ini dan satu log yang terus bertambah untuk setiap proyek, bukan memori yang dapat ditelusuri dengan kueri di seluruh proyek. Jika pertanyaannya adalah apa yang Anda putuskan tentang database tiga minggu lalu, Anda harus melakukan grep pada history.md. Recall juga tidak menyediakan koordinasi langsung: dua sesi dalam proyek yang sama berbagi file log, tetapi Recall tidak mengirim entri log baru ke konteks sesi lain. Jika satu sesi perlu mengetahui aktivitas sesi lain, sesi dapat bertukar teks secara langsung saat keduanya berjalan.
Recall tidak membantu di dalam satu sesi. Konteks yang penuh di tengah sesi adalah masalah yang berbeda dengan solusi yang berbeda. Mengelola jendela konteks di dalam satu sesi adalah panduan pendamping untuk panduan ini.
Ringkasan diperlakukan sebagai input yang tidak tepercaya secara sengaja. context.md disisipkan di dalam fenced block dan diberi label, lalu Claude meminta konfirmasi sebelum mengandalkannya. Desain ini diperlukan karena direktori .recall/ yang di-commit adalah tempat siapa pun yang memiliki akses commit dapat menulis teks yang akan dibaca oleh agent Anda. Seberapa sering agent berhenti untuk menanyakan isi yang dibacanya ditentukan oleh mode izin saat sesi dimulai. Dengan Claude Code v2.1.283 atau yang lebih baru, auto mode sudah menjadi mode awal bawaan untuk sesi terminal interaktif dan VS Code pada semua plan dan provider. Dengan demikian, classifier meninjau sebagian besar tindakan, bukan Anda. Organisasi dengan konfigurasi HIPAA tetap memulai sesi dalam Manual mode. Tentukan sekali apakah .recall/ bersifat pribadi atau digunakan bersama: tambahkan ke .gitignore untuk memori pribadi, atau commit file tersebut dan tinjau seperti kontribusi lainnya. Jika agent berjalan tanpa pengawasan, menjalankan Claude Code dengan aman di VPS membahas batasan yang lebih luas.
Redaksi dilakukan dengan upaya terbaik. Fitur ini menargetkan pola umum seperti API key, token, blok PEM, dan assignment .env. Baca .recall/ sebelum melakukan commit.
Nomor versinya mencerminkan tingkat kematangan secara jujur. Pada versi 0.4.0, yang masih merupakan release terbaru pada October 2026, key konfigurasi dan tata letak file masih dapat berubah antar-release. Karena itu, baca changelog sebelum melakukan upgrade pada setup yang Anda andalkan.
FAQ
Apakah Recall mengirim kode atau transkrip saya ke mana pun?
Tidak. Hook capture dan summarizer berupa skrip Python yang berjalan di mesin Anda sendiri. Plugin tidak menyimpan API key dan tidak melakukan panggilan jaringan. Proses peringkasan menggunakan TF-IDF dan TextRank, bukan model, sehingga tidak memerlukan biaya dan dapat berjalan saat mesin offline. Konsekuensinya, ringkasan bersifat ekstraktif: sistem memilih kalimat dari log Anda, bukan menulis kalimat baru.
Mengapa .recall/context.md saya hilang atau sudah tidak terbaru?
auto_save_context secara default bernilai off, sehingga ringkasan hanya dibuat ulang saat Anda menjalankan /recall:save. Atur "auto_save_context": "on_end" di recall.config.json agar ringkasan ditulis ulang setiap sesi berakhir. Jika history.md juga hilang, periksa capture_history, marker .capture-paused, dan ketersediaan transkrip sesi. Hook yang berjalan akan melewati penulisan riwayat dalam kondisi tersebut. Pastikan plugin dimuat dengan /recall:show, lalu pastikan python3 -V memberikan jawaban pada mesin tersebut, karena hook berupa skrip Python.
Berapa banyak yang dihemat Recall pada setiap sesi?
Memuat ringkasan memerlukan sekitar 1,200 token, dibandingkan biasanya 30,000 token untuk model yang harus membaca ulang repositori Anda untuk menentukan konteksnya. Angka tersebut merupakan perkiraan umum. Ukur penggunaan Anda sendiri dengan wc -c .recall/context.md dan perintah /context di dalam sesi, lalu bandingkan cold start dengan sesi yang melanjutkan dari ringkasan.
Apakah saya tetap memerlukan file CLAUDE.md?
Ya, dan keduanya memiliki fungsi yang berbeda. CLAUDE.md adalah hal yang Anda tulis secara sengaja: aturan yang berlaku terus-menerus dan perintah build. context.md dibuat dari kejadian aktual pada sesi sebelumnya, sehingga dapat memuat migrasi yang belum selesai dan mungkin tidak terpikir untuk Anda dokumentasikan. Simpan keduanya.
Apakah satu VPS dapat menyimpan memori untuk beberapa proyek?
Ya. Recall menyimpan memori di .recall/ dalam setiap direktori proyek, sehingga dua proyek pada server yang sama memiliki log dan ringkasan yang terpisah. Selalu jalankan Claude Code dari root proyek, karena file mengikuti direktori kerja, bukan akun pengguna.