Cara Menghentikan Sesi Claude Code yang Lambat dan Mahal
Setiap giliran mengirim ulang seluruh konteks. Jalankan /context, kurangi biaya tetap, lalu gunakan /clear dan /compact secara sengaja agar sesi tetap cepat.
Cara mencegah sesi Claude Code yang panjang menjadi lambat dan mahal
Sesi Claude Code yang panjang menjadi lambat dan mahal karena setiap giliran mengirim ulang seluruh konteks, dan konteks itu terus bertambah. Perbaikannya adalah menerapkan kebersihan konteks dalam urutan yang tetap. Jalankan /context untuk melihat apa yang memenuhi jendela konteks, kurangi item yang dikenai biaya pada setiap permintaan, lalu gunakan /clear di antara tugas yang tidak berkaitan dan /compact dengan instruksi di dalam satu tugas yang panjang. Kerjakan tugas dalam rangkaian berkelanjutan karena cache prompt yang dingin mengubah pembacaan yang murah menjadi penulisan ulang penuh atas semua yang telah Anda sampaikan.
Penjelasan tentang alasan meter biaya tetap berjalan tersedia di meter token di balik sesi agen.
Baca /context sebelum mengubah apa pun
Jangan menebak isi penggunaan jendela. Claude Code akan memberi tahu Anda.
/context [all] menampilkan penggunaan konteks saat ini sebagai kisi berwarna, dengan saran pengoptimalan untuk alat yang menggunakan banyak konteks dan pembengkakan memori; all memperluas rincian per item dalam mode layar penuh. Baca hasilnya sebagai lima kelompok.
- Prompt sistem. Instruksi harness milik Claude Code. Tetap selama sesi berlangsung.
- Definisi alat. Skema untuk setiap alat yang dapat dipanggil agen, termasuk setiap server MCP (Model Context Protocol) yang terhubung.
- File memori.
CLAUDE.mddan memori otomatis yang dimuat saat sesi dimulai. - File dan hasil alat. Setiap file yang dibaca dan semua output yang dicetak oleh perintah Anda.
- Riwayat pesan. Giliran Anda dan balasannya.
Tiga yang pertama adalah biaya tetap yang dibayarkan pada setiap permintaan selama sesi berlangsung. Dua yang terakhir terus bertambah. Kurangi biaya tetap sekali, pada awal sesi; kelola bagian yang terus bertambah secara berkelanjutan.
Dua string menunjukkan bahwa jendela sudah penuh:
Context exceeds the 200k-token limit by 94k tokens — run /compact or /clear to continue.
Context is 94k tokens past the 200k-token compaction window — run /compact to reduce usage.Yang pertama adalah batas keras, dan permintaan ditolak; error API (application programming interface) yang sesuai berbunyi Prompt is too long. Yang kedua adalah jendela kompaksi, yang dapat berada di bawah jendela konteks sebenarnya pada model dengan 1 million token. Permintaan tetap berhasil setelah melewati batas tersebut, sehingga string itu merupakan peringatan, bukan penolakan.
Pada paket berbayar, /usage menambahkan separuh informasi lainnya dengan menandai perilaku seperti konteks panjang atau cache miss, serta mengaitkan penggunaan terbaru dengan skill, subagen, dan server MCP individual. Jika alat itu memberi tahu bahwa kuota sudah terpakai, jendela batas mana yang sedang Anda tunggu menentukan apakah pengurangan konteks akan membantu Anda sekarang atau Anda memerlukan jalur lain untuk kembali bekerja.
CLAUDE.md adalah beban permanen, jadi buat isinya tetap ringkas
CLAUDE.md Anda dimuat ke dalam konteks saat sesi dimulai dan tetap berada di sana. Jika berisi prosedur deployment yang terperinci, token tersebut tetap ada saat Anda memperbaiki typo dalam file pengujian. Panduan Anthropic menyarankan agar Anda hanya menyertakan hal-hal penting dan menjaga file ini di bawah 200 baris.
Pindahkan prosedur ke dalam skills. Sebuah skill hanya dimuat saat dipanggil, sehingga alur kerja yang Anda jalankan dua kali seminggu tidak membebani hari-hari lainnya. Skills memiliki anggaran tersendiri setelah compaction: isi file dimuat kembali, dibatasi hingga 5,000 token per skill dan 25,000 token secara total, dengan item tertua dihapus terlebih dahulu. Truncation mempertahankan bagian awal file, jadi letakkan instruksi paling penting di dekat bagian atas SKILL.md.
Instruksi yang tetap tersedia setelah compaction menentukan tempat instruksi tersebut harus diletakkan.
- System prompt dan gaya output tidak berubah karena keduanya bukan bagian dari riwayat pesan.
CLAUDE.mdpada root proyek, aturan tanpa cakupan, dan auto memory dimuat kembali dari disk.- Aturan dengan frontmatter
paths:hilang sampai file yang sesuai dibaca kembali. CLAUDE.mdbertingkat dalam subdirektori hilang sampai file dalam subdirektori tersebut dibaca kembali.- Hooks tidak terpengaruh karena hook berjalan sebagai kode dan tidak pernah masuk ke konteks.
Jadi, aturan yang Anda andalkan harus ditempatkan di CLAUDE.md pada root proyek: Claude Code menghapus output tool yang lebih lama terlebih dahulu, lalu membuat ringkasan, sehingga instruksi dari bagian awal percakapan dapat hilang. Edit memory dengan /memory. Claude Code menyimpan salinan yang dimuat saat sesi dimulai, sehingga pemangkasan di tengah sesi mempertahankan prompt cache dan tidak diterapkan sampai /clear, /compact berikutnya, atau restart. Kehilangan konteks hanyalah salah satu alasan aturan berhenti diikuti. Jadi, ketika aturan tersebut jelas masih berada dalam window tetapi tetap diabaikan, telusuri penyebab lain sebelum menulis ulang aturan tersebut.
/clear antartugas, /compact di dalam satu tugas
Keduanya tampak dapat saling menggantikan, tetapi biayanya sangat berbeda.
/clear [name] memulai percakapan baru dengan konteks kosong. Perintah ini tidak mengirimkan permintaan, sehingga tidak dikenai biaya. Berikan nama untuk melabeli percakapan sebelumnya di pemilih /resume; /reset dan /new adalah alias. Gunakan perintah ini segera setelah beralih ke tugas yang tidak berkaitan, karena tugas lama akan dikirim ulang dan ditagihkan kembali pada setiap pesan dalam tugas baru.
/compact [instructions] membebaskan konteks sambil melanjutkan percakapan yang sama: perintah ini merangkum riwayat hingga saat itu lalu menggantinya. Gunakan perintah ini di dalam satu tugas panjang yang masih memerlukan kesinambungan konteks.
Selalu berikan instruksi kepada /compact. /compact tanpa argumen akan membuat ringkasan berdasarkan prompt default yang tidak mengetahui bagian pekerjaan mana yang masih Anda perlukan. Perintah dengan instruksi akan mempertahankannya:
/compact focus on the auth bug fix
/compact keep only the plan and the diffJika Anda melakukan compact karena alasan yang sama setiap kali, masukkan instruksi tetap di CLAUDE.md proyek Anda, di bawah heading # Compact instructions. Dalam sesi baru, /compact menampilkan Not enough messages to compact., yang hanya berarti belum ada riwayat.
Ada dua biaya yang sering tertukar di sini. Permintaan pembuatan ringkasan menggunakan prefix Anda, sehingga membaca cache yang ada tanpa memproses ulang riwayat. Sebagian besar waktunya digunakan untuk menghasilkan ringkasan. Compact pada konteks besar tetap merupakan permintaan besar karena percakapan yang diringkas menjadi input. Turn setelah compact bukan bagian yang lambat: turn tersebut membangun ulang cache untuk prompt yang jauh lebih pendek.
Ada dua perintah yang lebih murah. /rewind [description] mengembalikan kode dan percakapan ke checkpoint; untuk path yang ingin Anda tinggalkan sepenuhnya, perintah ini lebih baik daripada compact karena memotong kembali ke prefix yang sudah tersimpan di cache. /recap menambahkan ringkasan sebagai output perintah, bukan mengganti riwayat, sehingga prefix yang tersimpan di cache tetap utuh.
Compaction otomatis yang berulang kali berjalan akan menampilkan ini:
Autocompact is thrashing: the context refilled to the limit...Compaction berhasil, tetapi file atau output tool mengisi ulang window beberapa kali berturut-turut sehingga Claude Code berhenti mencoba lagi. Pulihkan kondisi ini dengan membaca file yang terlalu besar berdasarkan rentang baris, menjalankan /compact dengan fokus yang menghapus output besar, memindahkan pekerjaan tersebut ke subagent, atau menjalankan /clear jika percakapan sebelumnya sudah selesai.
Server MCP menimbulkan overhead tetap
Setiap server MCP yang Anda hubungkan menambah beban pada setiap request selama seluruh sesi. Biaya ini tetap ada meskipun server tersebut tidak Anda panggil.
Claude Code mengurangi dampak ini. Definisi tool MCP ditunda secara default, sehingga hanya nama tool yang masuk ke konteks sampai Claude menggunakan tool tertentu. Jalankan /context untuk melihat biaya sebenarnya dari server Anda, dan /mcp disable <name> untuk menghapus server yang tidak akan digunakan hari ini. Jika Anda menjalankan server MCP milik sendiri pada VPS, batas aritmetika yang sama menentukan jumlah tool yang sebaiknya diekspos oleh satu server.
Lakukan ini pada awal sesi. Selama definisi tetap ditunda, menghubungkan atau memutuskan koneksi server hanya menambahkan entri ke percakapan, dan cache tetap bertahan. Jika definisi dimuat ke prefix karena pencarian tool dinonaktifkan atau server tidak ditunda, perubahan yang sama membuat request berikutnya membaca ulang semuanya.
Filter output verbose sebelum masuk ke context
Hasil tool adalah input, dan input dikirim ulang pada setiap giliran berikutnya. Test run yang menghasilkan 20,000 token output bukan biaya satu kali: Anda membayarnya lagi pada setiap giliran sampai output tersebut keluar dari window.
Lakukan filtering di sumbernya. Hook yang mengurangi hasil test run menjadi hanya kegagalan sebelum Claude melihatnya mengubah output yang sangat panjang itu menjadi beberapa ratus token, pada giliran ini dan setiap pengiriman ulang berikutnya:
npm test 2>&1 | grep -E "FAIL|Error:" | head -40Hook tidak pernah masuk ke context karena dijalankan sebagai kode. Terapkan cara ini pada tool apa pun yang output-nya melebihi satu layar. Logika yang sama berlaku untuk file berisi 3,000 baris: minta rentang baris yang diperlukan, karena seluruh file akan tetap berada di window setelah diterima.
Batasi file yang dibaca agent, dan delegasikan pekerjaan yang menghasilkan banyak output
Prompt yang menyebutkan file dan gejalanya akan membuat agent membaca file tersebut. Permintaan terbuka untuk merapikan project membuat agent membaca apa pun yang dianggap relevan, dan semua hasil pembacaan itu tetap berada dalam context window.
Delegasikan pekerjaan yang menghasilkan banyak output kepada subagent. Menjalankan pengujian dan memproses log sama-sama menggunakan context yang nyata; subagent menyimpan output tersebut dalam window-nya sendiri dan hanya mengembalikan ringkasan. Konsekuensinya, subagent membangun cache sendiri tanpa cache hit pada pemanggilan pertama dan tetap menggunakan masa berlaku cache lima menit, bahkan pada subscription. Delegasi secara konsisten melindungi context utama. Namun, delegasi tidak selalu mengurangi total token.
Jam cache: bekerja dalam sesi berkelanjutan
Caching prompt membuat pengiriman ulang terjangkau: 0.1x tarif input dasar untuk membaca prefix, dibandingkan 1.25x untuk menulisnya, atau 2x untuk menulisnya dengan masa berlaku satu jam. Setiap penggunaan memperbarui entri tanpa biaya tambahan, sehingga waktunya dihitung sejak penggunaan terakhir. Pengali tersebut menunjukkan bentuk tagihan, tetapi bukan nilainya, jadi padukan dengan biaya sebenarnya untuk satu juta token untuk mengubah seluruh context window menjadi angka dalam dolar.
Masa berlaku yang Anda dapatkan bergantung pada cara autentikasi. Karena itu, pernyataan umum bahwa "cache Anda kedaluwarsa setelah lima menit" tidak selalu benar.
- Pada langganan Claude, Claude Code otomatis meminta masa berlaku satu jam.
- Setelah melewati batas paket dan mulai menggunakan usage credits, penggunaan tersebut ditagihkan kepada Anda, sehingga masa berlaku kembali menjadi lima menit.
- Dengan API key atau cloud provider, masa berlaku tetap lima menit.
ENABLE_PROMPT_CACHING_1H=1memilih masa berlaku satu jam, sedangkanFORCE_PROMPT_CACHING_5M=1memaksanya kembali menjadi lima menit.
Saran ritmenya tetap sama: bekerja dalam sesi berkelanjutan, karena jeda idle yang melewati masa berlaku membuat giliran berikutnya menulis ulang seluruh prefix yang telah terkumpul. Sesi Claude Code yang detached di tmux tidak dikenai biaya selama idle, dan cache yang tetap aktif adalah hal yang dikorbankan oleh waktu idle tersebut.
Beberapa tindakan membuang cache meskipun Anda masih bekerja: mengganti model, mengubah tingkat effort, mengaktifkan fast mode, menghubungkan atau memutuskan MCP server, mengaktifkan atau menonaktifkan plugin, menolak seluruh tool, melakukan compacting, dan meng-upgrade Claude Code. /model biasanya menjadi kejutan, karena setiap model memiliki cache sendiri. Akibatnya, request berikutnya membaca seluruh riwayat tanpa cache hit meskipun kontennya identik. Pembacaan ulang tersebut ditagihkan berdasarkan tarif model tujuan, sehingga perpindahan ke Fable di tengah sesi menagihkan seluruh riwayat yang telah terkumpul dengan tarif input Fable 5 yang dipublikasikan.
Mengedit file, mengedit CLAUDE.md, memanggil skills dan commands, menjalankan /recap, melakukan rewind, dan membuat subagent tetap mempertahankan cache. Cache ini berlaku untuk satu mesin dan satu direktori, sehingga dua sesi pada direktori berbeda tidak dapat menggunakan cache satu sama lain. Cakupan tersebut mengikuti CLI, bukan akun Anda. Karena itu, tidak ada bagian yang terbawa ke aplikasi desktop Claude, yang di Linux merupakan instalasi beta terpisah di samping CLI.
Untuk melihat apakah caching berfungsi, baca current_usage. cache_creation_input_tokens ditulis dengan tarif penulisan cache; cache_read_input_tokens disajikan dengan tarif sekitar sepersepuluh dari tarif input standar. Rasio pembacaan terhadap pembuatan yang tinggi merupakan kondisi yang baik. Jika pembuatan tetap tinggi pada setiap giliran, berarti ada bagian dalam prefix Anda yang terus berubah.
Apakah context window yang lebih besar menyelesaikan masalah ini?
Sebagian. Beberapa model saat ini mendukung context window hingga 1 million token, dan compaction bekerja dengan cara yang sama pada batas yang lebih besar. Faktor ekonominya tidak berubah karena seluruh prompt tetap dikirim ulang dan tetap dikenai biaya pada setiap turn. Context window yang lebih besar menentukan kapan Anda dipaksa bertindak; hygiene menentukan biayanya. Jika masalahnya adalah tagihan, bukan batas kapasitas, paket Claude mana yang sesuai dengan cara kerja Anda menentukan apakah Anda membayar dalam dolar atau menggunakan kuota paket.
Pengeditan konteks dan pemadatan dalam API adalah dua hal yang berbeda
Jika Anda membangun agent sendiri pada Messages API, tidak ada slash command dan Anda harus mengimplementasikannya sendiri. Alokasikan pekerjaan ini sejak awal karena API tidak memiliki free tier selain kredit pendaftaran kecil, sehingga setiap giliran dengan riwayat yang belum dipangkas ditagihkan sepenuhnya. Provider yang Anda pilih menentukan perhitungan tersebut sebelum pemangkasan apa pun dilakukan. Jika pilihannya masih terbuka, hitung biaya beban kerja yang sama pada kedua API dan jangan hanya membandingkan tarif per token yang tercantum. Ada dua fitur sisi server yang dapat menangani hal ini, dan keduanya bukan fitur yang sama.
Pengeditan konteks secara selektif menghapus konten tertentu dari riwayat percakapan saat riwayat tersebut bertambah. Setiap hasil yang dihapus diganti dengan teks placeholder agar Claude mengetahui bahwa ada konten yang dihapus. Fitur ini masih beta: kirim anthropic-beta: context-management-2025-06-27 dan konfigurasikan strateginya di bawah context_management.edits. clear_tool_uses_20250919 menghapus hasil tool, sedangkan clear_thinking_20251015 mengelola blok thinking. Nilai default trigger adalah 100,000 input token, keep adalah 3 penggunaan tool terakhir, dan clear_tool_inputs adalah false. Dengan demikian, input tetap dipertahankan dan hanya hasil yang dihapus.
Pemadatan membuat ringkasan lalu mengganti seluruh riwayat percakapan dengan ringkasan tersebut. Fitur ini juga masih beta: kirim anthropic-beta: compact-2026-01-12 dan gunakan tipe edit compact_20260112. Pemicu defaultnya adalah {"type": "input_tokens", "value": 150000}, dan nilainya harus minimal 50,000.
Pemadatan memiliki satu aturan serah terima yang dapat menyebabkan agent gagal tanpa terlihat jelas. Respons diawali dengan blok konten compaction yang berisi ringkasan, lalu diikuti blok teks biasa. Anda harus mengirimkan kembali blok tersebut pada permintaan berikutnya. API kemudian menghapus setiap blok konten yang muncul sebelumnya. Dalam praktiknya, tambahkan seluruh response.content, bukan hanya teksnya.
Dokumentasi Anthropic menyebut pemadatan sisi server sebagai strategi utama untuk mengelola konteks dalam percakapan yang berjalan lama. Pengeditan konteks digunakan jika Anda memerlukan kontrol yang lebih terperinci atas konten yang dihapus. Periksa dukungan model terlebih dahulu. Model Opus, Sonnet, dan Fable saat ini mendukung pemadatan; claude-haiku-4-5 tidak mendukungnya, dan halaman pemadatan memuat daftar terbaru. Tidak satu pun dari kedua beta tersebut mengendalikan /compact milik Claude Code. Dokumentasinya menjelaskan bahwa fitur tersebut adalah permintaan peringkasan satu kali yang dikirim oleh client.
FAQ
Mengapa sesi Claude Code saya menjadi semakin lambat dan mahal jika berjalan semakin lama?
Karena seluruh percakapan dikirim ulang pada setiap giliran, sehingga pertanyaan satu baris dalam sesi yang telah terbuka sepanjang hari membawa seluruh percakapan hari itu. Prompt caching membuat proses ini tetap murah selama cache masih tersedia, yaitu sebesar 0.1x tarif input dasar untuk pembacaan; setelah satu giliran tidak menemukan cache, awalan yang sama ditulis ulang dengan tarif 1.25x. Jalankan /context untuk melihat apa saja yang memenuhi context window, lalu baca cara penagihan sesi Claude Code untuk memahami mekanismenya.
Apa perbedaan antara /clear dan /compact di Claude Code?
/clear memulai percakapan baru dengan context yang kosong. Perintah ini tidak mengirim request, sehingga tidak dikenai biaya, dan merupakan pilihan yang tepat di antara tugas-tugas yang tidak berkaitan. /compact mempertahankan percakapan yang sama dan mengganti riwayat dengan ringkasan, sehingga merupakan pilihan yang tepat dalam satu tugas yang panjang. Berikan fokus, seperti pada /compact keep only the plan and the diff, karena instruksi tersebut menentukan informasi yang dipertahankan.
Bagaimana cara melihat apa yang menggunakan context window Claude Code saya?
Jalankan /context, atau /context all untuk melihat perincian lengkap per item. Perintah ini menampilkan system prompt, definisi tool, server MCP, file memori, dan riwayat sebagai grid berwarna, disertai saran untuk tool yang menggunakan banyak context dan pembengkakan memori. Pada paket berbayar, /usage juga mengaitkan penggunaan terbaru dengan skill, subagent, dan server MCP secara individual.
Apakah saya sebaiknya menggunakan context window 1 million token daripada melakukan compacting?
Context window yang lebih besar hanya menunda masalah, bukan menyelesaikannya. Beberapa model saat ini menjalankan context window 1 million token, termasuk Opus 4.8 dan Sonnet 5, dan compacting bekerja dengan cara yang sama di sana. Setiap giliran tetap mengirim ulang seluruh prompt dan tetap dikenai biaya, sehingga percakapan 400,000 token tetap mahal, terlepas dari apakah percakapan tersebut muat atau tidak.
Apa perbedaan antara context editing dan compaction di Claude API?
Context editing menghapus konten lama secara selektif, terutama hasil tool, dan meninggalkan teks placeholder pada setiap posisi agar Claude mengetahui bahwa konten tersebut telah dihapus. Compaction membuat ringkasan dan mengganti seluruh riwayat dengan ringkasan tersebut. Dokumentasi Anthropic menyebut compaction sebagai strategi utama untuk percakapan yang berjalan lama, serta menempatkan context editing sebagai opsi yang lebih terperinci. Keduanya masih berstatus beta dengan header masing-masing, dan keduanya terpisah dari /compact Claude Code.