Recall: Memori Claude Code di VPS
Pelajari cara memasang Recall 0.4.0 di VPS. Plugin lokal ini mencatat setiap sesi Claude Code dan membuat ringkasan yang dapat dilanjutkan tanpa token API.
Fungsi Recall untuk memori Claude Code
Recall adalah plugin Claude Code yang memberikan memori untuk setiap proyek di antara sesi. Plugin ini menulis dua file Markdown ke dalam folder .recall/ di proyek Anda: log append-only tentang hal-hal yang terjadi dan ringkasan singkat tentang posisi terakhir Anda. Keduanya dibuat di mesin yang Anda gunakan oleh peringkas Python lokal, sehingga memori itu sendiri tidak menggunakan token API.
Recall mengatasi kesenjangan yang kecil tetapi selalu ada. Anda menutup sesi di VPS pada hari Selasa. Pada hari Rabu, Claude Code tidak mengetahui apa pun tentang hari Selasa. Anda menjelaskan kembali proyek secara manual, atau membiarkan model membaca kembali separuh repositori untuk memahaminya. Keduanya menggunakan token, dan cara kedua menggunakan jauh lebih banyak token.
Recall versi 0.4.0 adalah versi terkini per Juli 2026, dan proyek ini menggunakan lisensi MIT. Recall adalah sebuah plugin. Plugin ini tidak melakukan panggilan jaringan apa pun.
Apa yang Anda perlukan di 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 memberikan jawaban Python 3.12.3. Recall mendukung Python 3.9 dan yang lebih baru. Image container minimal terkadang tidak menyertakan interpreter sama sekali, sehingga shell memberikan jawaban python3: command not found. Instal salah satunya sebelum melanjutkan.
sudo apt update && sudo apt install -y python3NumPy adalah akselerator opsional untuk 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 rangkaian pengujian proyek memeriksa bahwa kedua jalur memilih kalimat yang sama.
Memori sesi lebih penting di server daripada di laptop karena pekerjaan server biasanya dilakukan dalam kunjungan singkat yang tersebar selama beberapa hari. Jika Anda sudah memiliki Claude Code yang berjalan di tmux pada VPS, Recall adalah komponen yang membawa sesi kemarin ke hari ini.
Instal Recall dari marketplace plugin
Dua perintah, masukkan 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 bukan.
Periksa instalasi dengan menjalankan salah satu perintah bawaan 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 keberadaan perintah tersebut. Jika Claude Code tidak mengenali /recall:show, plugin belum dimuat dan tidak ada hook yang akan dijalankan.
Untuk menjalankan plugin dari checkout, lakukan 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.
Apa 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 Anda.Stopberjalan setiap kali Claude menyelesaikan respons. Hook ini menambahkan giliran tersebut ke log.SessionEndberjalan saat sesi ditutup dan dapat membuat ulang ringkasan.
Dua file dihasilkan, keduanya berada di dalam .recall/.
history.mdadalah catatan append-only: prompt, respons, file yang diubah, dan perintah yang dijalankan.context.mdadalah ringkasan yang dibuat: tujuan, ringkasan, langkah berikutnya, file yang diubah, perintah yang dijalankan, dan konteks git.
Setelah satu sesi nyata, periksa direktorinya.
ls -la .recall/Anda seharusnya melihat history.md yang 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 peringkas lokal pada history.md dan menulis ulang context.md. Algoritmanya menggunakan penilaian TF-IDF (term frequency, inverse document frequency) yang diteruskan ke pemeringkatan kalimat TextRank. Algoritma ini deterministik dan ekstraktif, yang berarti memilih kalimat yang sudah ada di log Anda. Tidak ada model yang dipanggil, sehingga langkah ini gratis dan dapat dijalankan saat mesin offline.
Konfigurasikan Recall untuk satu proyek
Konfigurasi berada dalam file recall.config.json di root proyek. Berikut adalah nilai default yang disertakan:
{
"output_dir": ".recall",
"capture_history": true,
"summary_sentences": 8,
"redact": true,
"include_git": true,
"max_input_chars": 200000
}output_dirmenentukan lokasi kedua file. Simpan di dalam proyek.capture_historymengaktifkan atau menonaktifkan loghistory.md.auto_save_contextmenerimaoffatauon_end, dan default-nya adalahoff.summary_sentencesmenentukan jumlah kalimat yang dipertahankan ke dalamcontext.md. Nilai yang lebih besar menghasilkan ringkasan yang lebih panjang dan sedikit menambah beban saat sesi dimulai.redactmenghapus pola rahasia umum sebelum apa pun ditulis ke disk.include_gitmenambahkan diff saat ini dan commit terbaru ke ringkasan.max_input_charsmembatasi jumlahhistory.mdyang dibaca summarizer dalam satu proses.
Untuk proyek di VPS, perubahan yang berguna adalah penyimpanan otomatis. Sesi di server sering berakhir ketika terminal terputus, bukan ketika Anda memutuskan untuk berhenti.
{
"auto_save_context": "on_end",
"summary_sentences": 12
}Untuk menghentikan capture sementara tanpa mengubah konfigurasi, buat marker jeda. Hapus marker tersebut untuk mulai melakukan capture lagi.
touch .recall/.capture-pausedLakukan ini sebelum sesi ketika Anda menangani kredensial produksi. Redaction adalah filter, bukan jaminan. Alasan yang sama mendasari menjauhkan rahasia dari agen AI secara umum: rahasia yang aman adalah rahasia yang tidak pernah dilihat agen.
Berapa banyak token yang dihemat Recall?
Hal ini bergantung pada alternatifnya. Memuat ringkasan saat sesi dimulai membutuhkan sedikit token. Hal yang digantikannya dapat membutuhkan banyak token, karena model yang tidak memiliki memori tentang proyek Anda akan menemukannya kembali dengan membaca file.
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"
}
]Angka berikut adalah angka umum untuk proyek berukuran sedang, bukan pengukuran proyek Anda. Ringkasan Recall dimuat dengan sekitar 1,200 token. Angka ini sejalan dengan klaim yang dipublikasikan proyek, yaitu satu hingga dua ribu token untuk melanjutkan sesi. Memutar ulang transkrip sebelumnya secara lengkap akan memuat ulang seluruh percakapan, sekitar 85,000 token. Membiarkan model menemukan kembali proyek dengan membaca file berada di antara keduanya, sekitar 30,000 token. Angka ini bertambah seiring ukuran repositori. Baris CLAUDE.md disertakan sebagai pembanding. Baris ini lebih hemat karena singkat dan statis, serta memberi tahu model aturan yang selalu berlaku bagi Anda, bukan kejadian pada sesi sebelumnya.
Ukur angka Anda sendiri. Satu token kira-kira setara dengan empat karakter prosa bahasa Inggris, dan sedikit lebih sedikit untuk kode.
wc -c .recall/context.md .recall/history.md
echo $(( $(wc -c < .recall/context.md) / 4 ))Di dalam sesi, /context menampilkan hal yang saat ini dimuat ke jendela konteks, sedangkan /cost melaporkan total sesi. Mulai satu sesi tanpa konteks sebelumnya, lalu mulai sesi berikutnya dengan ringkasan yang sudah tersedia dan bandingkan hasilnya. Untuk gambaran lengkap tentang penggunaan token dalam sesi, lihat cara Claude Code menggunakan token untuk perinciannya.
Ada satu catatan agar klaim ini tetap akurat. Ringkasan dimuat setiap kali sesi dimulai. Jadi, ringkasan yang tidak pernah Anda gunakan menjadi biaya kecil, bukan penghematan. Biarkan summary_sentences mendekati nilai default, kecuali sesi Anda berlangsung lama.
Bangun ulang ringkasan tanpa sesi
Jika Anda mengkloning repositori, summarizer memiliki titik masuk baris perintah sendiri. Ini berguna pada VPS ketika sesi terhenti bersama terminal dan Anda tetap memerlukan ringkasannya.
python3 ~/recall/scripts/make_context.py --helpOutput bantuan mencantumkan flag yang diterimanya: --cwd untuk root proyek, --transcript untuk file transkrip eksplisit, --quiet untuk menekan output, dan --harness untuk memilih antara claude dan opencode. Arahkan ke sebuah proyek:
python3 ~/recall/scripts/make_context.py --cwd /srv/projects/apiProgram tersebut 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 pekerjaan yang sama.
Mengapa tidak ada data yang ditulis
Tidak ada direktori .recall/ setelah sesi selesai. Hook tidak pernah dijalankan. Ketik /recall:show untuk memastikan plugin dimuat, lalu jalankan python3 -V. Perintah hook mencoba python3 terlebih dahulu dan python berikutnya. Karena itu, mesin yang tidak memiliki keduanya tidak menulis apa pun dan tidak menampilkan peringatan.
history.md bertambah, tetapi context.md tidak pernah berubah. Secara default, auto_save_context adalah off. Jalankan /recall:save, atau tetapkan kunci tersebut ke on_end dan biarkan hook SessionEnd menjalankannya.
File muncul di bawah proyek yang salah. Recall menulis menggunakan path relatif terhadap direktori tempat Claude Code dijalankan. Jadi, memulai sesi dari direktori home akan menempatkan memori di sana. Mulai dari root proyek, lalu gunakan ls -la .recall/ untuk mengetahui lokasi file yang sebenarnya.
Pengambilan data berhenti tanpa 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. Karena itu, log yang sangat panjang akan dipotong. Putar log tersebut.
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.
Di Mana Recall Berhenti
Recall adalah log dan peringkas. Penting untuk memahami hal-hal yang tidak tercakup.
Peringkas ini bersifat ekstraktif. TextRank memilih kalimat yang sudah ada di history.md, sehingga tidak pernah menilai apakah suatu keputusan benar. Langkah yang keliru dan tercatat pada hari Selasa akan terbaca sama persis seperti keputusan yang baik pada hari Rabu. Jika taruhannya besar, baca context.md dan perbaiki secara manual. File tersebut berformat markdown dan dapat Anda edit.
Tidak ada fitur pencarian. Anda mendapatkan satu ringkasan terkini dan satu log yang terus bertambah untuk setiap proyek, bukan memori yang dapat dikuerikan di seluruh proyek. Jika pertanyaannya adalah keputusan Anda tentang database tiga minggu lalu, Anda harus melakukan grep pada history.md.
Recall tidak membantu di dalam satu sesi. Jendela konteks yang penuh di tengah sesi adalah masalah yang berbeda dengan solusi yang berbeda. Lihat mengelola jendela konteks dalam satu sesi sebagai pelengkap panduan ini.
Ringkasan sengaja diperlakukan sebagai input yang tidak tepercaya. context.md disisipkan dalam fenced block dan diberi label. Claude akan 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 agen Anda. 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 agen berjalan tanpa pengawasan, menjalankan Claude Code dengan aman di VPS membahas batasan yang lebih luas.
Redaksi bersifat upaya terbaik. Fitur ini menargetkan pola umum seperti API key, token, blok PEM, dan assignment .env. Baca .recall/ sebelum melakukan commit.
Nomor versi ini secara jujur menunjukkan tingkat kematangannya. Pada 0.4.0 di Juli 2026, config key dan tata letak file masih dapat berubah antar-rilis. Karena itu, baca changelog sebelum meng-upgrade setup yang Anda andalkan.
FAQ
Apakah Recall mengirimkan kode atau transkrip saya ke mana pun?
Tidak. Hook capture dan summarizer adalah skrip Python yang berjalan di mesin Anda sendiri, plugin tidak menyimpan kunci API, dan plugin tidak melakukan panggilan jaringan. Peringkasan menggunakan TF-IDF dan TextRank, bukan model, sehingga proses ini tidak memerlukan biaya dan dapat berjalan saat mesin luring. Kekurangannya, ringkasan bersifat ekstraktif: ringkasan memilih kalimat dari log Anda, bukan menulis kalimat baru.
Mengapa .recall/context.md saya tidak ada atau sudah kedaluwarsa?
auto_save_context secara default bernilai off, sehingga ringkasan dibuat ulang hanya ketika Anda menjalankan /recall:save. Tetapkan "auto_save_context": "on_end" di recall.config.json agar ringkasan ditulis ulang setiap sesi berakhir. Jika history.md juga tidak ada, hook sama sekali tidak berjalan: pastikan plugin dimuat dengan /recall:show, lalu pastikan python3 -V memberikan respons pada mesin tersebut, karena hook adalah skrip Python.
Berapa banyak token yang dihemat Recall setiap sesi?
Memuat ringkasan memerlukan sekitar 1,200 token, dibandingkan biasanya 30,000 token untuk model yang harus membaca ulang repositori Anda untuk mengetahui posisinya. Angka tersebut adalah angka umum. Ukur penggunaan Anda sendiri dengan wc -c .recall/context.md dan perintah /context di dalam sesi, dengan membandingkan awal sesi tanpa konteks dengan sesi yang dilanjutkan dari ringkasan.
Apakah saya masih memerlukan file CLAUDE.md?
Ya, dan keduanya memiliki fungsi yang berbeda. CLAUDE.md adalah hal yang sengaja Anda tulis: aturan yang berlaku tetap dan perintah build. context.md dibuat berdasarkan hal yang benar-benar terjadi pada sesi terakhir, sehingga file tersebut memuat migrasi yang belum selesai dan tidak akan terpikir oleh Anda untuk ditulis. Simpan keduanya.
Dapatkah satu VPS 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.