SSD Nodes Learn Hosting plans →
Panduan Matt ConnorOleh Matt Connor

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 tepat agar sesi lebih 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.md dan 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 digunakan saat Anda memperbaiki typo dalam file pengujian. Panduan Anthropic menyarankan agar file ini hanya berisi hal-hal penting dan tidak lebih dari 200 baris.

Pindahkan prosedur ke dalam skill. Skill hanya dimuat saat dipanggil, sehingga workflow yang Anda jalankan dua kali seminggu tidak menghabiskan biaya pada hari lainnya. Skill memiliki anggaran tersendiri setelah compaction: isi skill dimasukkan kembali, dibatasi hingga 5,000 token per skill dan total 25,000 token; skill tertua dihapus terlebih dahulu. Truncation mempertahankan bagian awal file, jadi letakkan instruksi terpenting di dekat bagian atas SKILL.md.

Hal yang tetap ada setelah compaction menentukan lokasi instruksi.

  • System prompt dan gaya output tidak berubah karena keduanya bukan bagian dari riwayat pesan.
  • CLAUDE.md di root proyek, aturan tanpa cakupan, dan auto memory dimuat kembali dari disk.
  • Aturan dengan frontmatter paths: hilang sampai file yang sesuai dibaca lagi.
  • CLAUDE.md bertingkat dalam subdirektori hilang sampai file dalam subdirektori tersebut dibaca lagi.
  • Hook tetap berjalan karena hook dieksekusi sebagai kode; hanya konteks yang sebelumnya ditambahkan oleh hook yang diringkas bersama bagian percakapan lainnya.

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 awal percakapan dapat hilang. Edit memory dengan /memory. Claude Code menyimpan salinan yang dimuat saat sesi dimulai, sehingga trim di tengah sesi mempertahankan prompt cache dan tidak berlaku sampai /clear, /compact berikutnya, atau restart. Hilangnya konteks hanyalah salah satu alasan aturan berhenti diikuti. Jadi, jika aturan tersebut masih terlihat jelas dalam konteks tetapi tetap diabaikan, telusuri penyebab lain sebelum menulis ulang aturan tersebut.

/clear di antara tugas, /compact dalam satu tugas

Keduanya tampak dapat dipertukarkan, tetapi biayanya sangat berbeda.

/clear [name] memulai percakapan baru dengan konteks kosong. Perintah ini tidak mengirim permintaan, sehingga tidak menimbulkan biaya. Berikan nama untuk melabeli percakapan sebelumnya di pemilih /resume; /reset dan /new adalah alias. Gunakan perintah ini segera saat beralih ke tugas yang tidak berkaitan, karena tanpa perintah tersebut 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 dalam satu tugas panjang yang masih memerlukan kesinambungan.

Selalu berikan instruksi kepada /compact. /compact tanpa argumen merangkum berdasarkan prompt default yang tidak mengetahui bagian pekerjaan mana yang masih Anda perlukan. Jika diberi instruksi, bagian tersebut tetap dipertahankan:

/compact focus on the auth bug fix
/compact keep only the plan and the diff

Jika Anda selalu melakukan compact karena alasan yang sama, masukkan instruksi tetap di CLAUDE.md proyek Anda, di bawah heading # Compact instructions. Dalam sesi baru, /compact menampilkan Not enough messages to compact.. Artinya, percakapan memiliki terlalu sedikit giliran untuk dirangkum. Hal ini dapat terjadi meskipun konteks penuh, ketika satu paste besar telah memenuhi kapasitasnya.

Ada dua biaya yang sering tertukar. Permintaan peringkasan menggunakan prefix yang sama, sehingga membaca cache yang ada alih-alih memproses ulang riwayat. Sebagian besar waktunya digunakan untuk menghasilkan ringkasan. Compact pada konteks besar tetap merupakan permintaan besar karena percakapan yang dirangkum menjadi input. Giliran setelah compact bukan bagian yang lambat: cache dibangun ulang untuk prompt yang jauh lebih pendek.

Ada dua perintah yang lebih hemat. /rewind mengembalikan kode dan percakapan ke checkpoint. Untuk path yang ingin Anda tinggalkan sepenuhnya, perintah ini lebih baik daripada compact karena memotong percakapan kembali ke prefix yang sudah tersimpan di cache. /recap menambahkan ringkasan sebagai output perintah tanpa mengganti riwayat, sehingga prefix yang tersimpan di cache tetap utuh.

Jika compact otomatis berulang kali dijalankan, pesan berikut akan ditampilkan:

Autocompact is thrashing: the context refilled to the limit...

Compact berhasil, tetapi file atau output tool mengisi kembali window beberapa kali berturut-turut sehingga Claude Code berhenti mencoba. Pulihkan 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 merupakan overhead tetap

Setiap server MCP yang Anda hubungkan menambah beban pada setiap request selama seluruh sesi. Anda tetap membayar biayanya meskipun server tersebut tidak dipanggil.

Claude Code mengurangi dampak ini. Secara default, definisi tool MCP ditangguhkan, sehingga hanya nama tool yang masuk ke konteks sampai Claude menggunakan tool tertentu. Jalankan /context untuk melihat biaya sebenarnya dari server Anda, lalu jalankan /mcp disable <name> untuk menghapus server yang tidak akan digunakan hari ini. Jika Anda menjalankan server MCP sendiri pada VPS, perhitungan yang sama membatasi jumlah tool yang sebaiknya diekspos oleh satu server.

Lakukan ini pada awal sesi. Selama definisi tetap ditangguhkan, menghubungkan atau memutuskan koneksi server hanya menambahkan informasi ke percakapan, dan cache tetap tersedia. Jika definisi dimuat ke dalam prefix karena pencarian tool dinonaktifkan, tidak tersedia, atau berada di bawah ambang auto, 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 -40

Hook 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. Penulisan prefix dikenai biaya 1.25x tarif input dasar, atau 2x untuk masa berlaku satu jam. Pembacaan ulang dikenai biaya 0.1x pada Haiku 5.5, 0.05x pada Opus 5.5 dan Sonnet 5.5 ($0.20 dan $0.10 per juta token), serta 0.025x pada Fable 5.1 ($0.25 per juta token). Setiap penggunaan memperbarui entri tanpa biaya tambahan, sehingga penghitung waktu dimulai dari penggunaan terakhir. Pengali tersebut menunjukkan bentuk tagihan, tetapi bukan jumlahnya. Padukan pengali itu dengan biaya sebenarnya satu juta token untuk mengubah context window penuh menjadi nilai dalam dolar.

Masa berlaku yang Anda dapatkan bergantung pada metode autentikasi. Karena itu, pernyataan umum bahwa "cache Anda kedaluwarsa setelah lima menit" tidak selalu benar.

  • Pada langganan Claude, Claude Code secara otomatis meminta masa berlaku satu jam.
  • Setelah melewati batas paket dan mulai menggunakan kredit penggunaan, penggunaan tersebut ditagihkan sehingga masa berlaku kembali menjadi lima menit.
  • Dengan API key atau cloud provider, masa berlaku tetap lima menit. Mengatur promptCacheTtl ke 1h atau ENABLE_PROMPT_CACHING_1H=1 memilih masa berlaku satu jam, sedangkan FORCE_PROMPT_CACHING_5M=1 memaksanya kembali menjadi lima menit.

Saran mengenai ritme kerja tetap sama: bekerja dalam sesi berkelanjutan karena jeda idle yang melebihi masa berlaku membuat giliran berikutnya menulis ulang seluruh prefix yang telah terkumpul. Sesi Claude Code yang dilepas di tmux tidak menimbulkan biaya saat idle. Cache yang tetap hangat adalah hal yang dikorbankan oleh waktu idle tersebut.

Beberapa tindakan membuang cache meskipun Anda masih bekerja: mengganti model, mengubah tingkat effort pada model lama, mengaktifkan fast mode, menghubungkan atau memutuskan MCP server, menolak seluruh tool saat definisi tool dimuat di awal, mengaktifkan atau menonaktifkan plugin yang menambahkan tool, melakukan compacting, menghapus image lama ketika percakapan memuat terlalu banyak image, dan meng-upgrade Claude Code. Pada Opus 5.5, Sonnet 5.5, Haiku 5.5, dan Fable 5.1 dengan API key atau langganan, perubahan effort kini mempertahankan cache. /model biasanya menjadi kejutan karena setiap model memiliki cache sendiri. Akibatnya, request berikutnya membaca seluruh riwayat tanpa cache hit meskipun isinya identik. Pembacaan ulang tersebut ditagihkan dengan tarif model tujuan sebagai penulisan cache baru. Jadi, perpindahan ke Fable di tengah sesi menagihkan seluruh riwayat yang telah terkumpul berdasarkan tarif penulisan cache Fable yang dipublikasikan: $12.50 per juta token untuk masa berlaku lima menit atau $20 untuk masa berlaku satu jam, dengan tarif yang sama pada Fable 5 dan Fable 5.1.

Mengedit file, mengedit CLAUDE.md, memanggil skills dan commands, menjalankan /recap, melakukan rewind, dan membuat subagent tetap mempertahankan cache. Cakupan cache terbatas pada satu mesin dan satu direktori, sehingga dua sesi di direktori berbeda tidak dapat menggunakan cache satu sama lain. Cakupan tersebut mengikuti CLI, bukan akun Anda. Karena itu, cache tidak terbawa ke aplikasi desktop Claude, yang pada Linux merupakan instalasi beta terpisah di samping CLI.

Untuk mengetahui apakah caching berfungsi, baca current_usage. cache_creation_input_tokens ditulis dengan tarif penulisan cache, sedangkan cache_read_input_tokens disajikan dengan tarif pembacaan cache model, yaitu antara 2.5% dan 10% dari tarif input standar, bergantung pada model. Rasio pembacaan terhadap pembuatan yang tinggi menunjukkan kondisi yang baik. Jika pembuatan tetap tinggi pada setiap giliran, berarti ada bagian dari prefix Anda yang terus berubah.

Apakah context window yang lebih besar mengatasi masalah ini?

Sebagian. Setiap model saat ini (Fable 5.1, Opus 5.5, Sonnet 5.5, dan Haiku 5.5) menggunakan context window sebesar 1 million token, dan compaction bekerja dengan cara yang sama pada batas yang lebih besar. Dampak ekonominya tidak berubah karena seluruh prompt tetap dikirim ulang dan tetap ditagihkan pada setiap giliran. Window yang lebih besar menentukan kapan Anda terpaksa bertindak; hygiene menentukan biayanya. Jika masalahnya adalah tagihan, bukan batas kapasitas, paket Claude mana yang sesuai dengan cara Anda bekerja menentukan apakah Anda membelanjakan dolar atau menggunakan jatah paket.

Pengeditan konteks dan compact dalam API adalah hal yang berbeda

Jika Anda membangun agent sendiri pada Messages API, tidak ada slash command dan Anda harus mengimplementasikannya sendiri. Sediakan anggaran untuk pekerjaan tersebut sejak awal karena free allowance API tidak akan membayar token Anda. Pengguna baru menerima sejumlah kecil kredit gratis untuk menguji API. Allowance tetap yang dicantumkan Anthropic, yaitu 50 jam gratis per hari untuk setiap organisasi pada halaman harga dan 1,550 per bulan dalam dokumentasi, mencakup waktu container eksekusi kode yang ditagihkan terpisah dari token. Setiap giliran mengirim ulang seluruh riwayat yang belum dipangkas dan menagihkan semuanya: dengan tarif pembacaan cache saat prefix tersimpan di cache, serta dengan tarif input penuh atau premium penulisan cache saat prefix tidak tersimpan. Provider yang Anda pilih menentukan perhitungan tersebut sebelum pemangkasan apa pun dilakukan. Jika pilihan masih terbuka, hitung biaya beban kerja yang sama pada kedua API alih-alih membandingkan tarif per token yang tercantum di muka. Ada dua fitur sisi server untuk melakukan pekerjaan ini, dan keduanya bukan fitur yang sama.

Pengeditan konteks secara selektif menghapus konten tertentu dari riwayat percakapan seiring pertumbuhannya. Setiap hasil yang dihapus diganti dengan teks placeholder agar Claude mengetahui bahwa sesuatu telah 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. trigger secara default bernilai 100,000 token input, keep bernilai 3 penggunaan tool terakhir, dan clear_tool_inputs bernilai false. Dengan demikian, input tetap dipertahankan dan hanya hasil yang dihapus.

Compact menghasilkan ringkasan lalu mengganti seluruh riwayat percakapan dengan ringkasan tersebut. Fitur ini tersedia dalam dua beta. Compact berdasarkan ambang berjalan di dalam request biasa: kirim anthropic-beta: compact-2026-01-12 dan gunakan tipe edit compact_20260112. Pemicu defaultnya adalah {"type": "input_tokens", "value": 150000} dan nilainya harus sekurang-kurangnya 50,000. Compact sesuai permintaan memungkinkan kode Anda menentukan waktunya: kirim anthropic-beta: compact-2026-09-04 dengan "compaction": {"type": "summarize"} tingkat teratas, dan responsnya hanya berupa blok ringkasan. Ikhtisar compact Anthropic menyarankan penggunaan compact sesuai permintaan jika fitur tersebut tersedia.

Compact berdasarkan ambang memiliki satu aturan serah terima yang sering diam-diam merusak agent. Respons dimulai dengan blok konten compaction yang berisi ringkasan, lalu diikuti blok teks biasa. Anda harus meneruskan blok tersebut pada request berikutnya, kemudian API akan menghapus setiap blok konten sebelumnya. Dalam praktiknya, tambahkan seluruh response.content, bukan hanya teksnya. Compact sesuai permintaan bekerja dengan cara sebaliknya: Anda sendiri menghapus pesan yang telah dirangkum, menempatkan blok yang dikembalikan di posisi pertama dalam messages, lalu mengirimkannya kembali persis seperti yang dikembalikan, termasuk signature.

Dokumentasi Anthropic menyebut compact sisi server sebagai strategi utama untuk mengelola konteks dalam percakapan yang berjalan lama, sedangkan pengeditan konteks digunakan untuk mengendalikan konten yang dihapus secara lebih terperinci. Periksa dukungan model terlebih dahulu. Semua model saat ini mendukung kedua jenis compact, termasuk Haiku 5.5. Model claude-haiku-4-5 yang lebih lama tidak mendukungnya, dan setiap halaman compact memuat daftar model yang berlaku saat ini. Tidak satu pun beta ini mengendalikan /compact milik Claude Code. Dokumentasinya menjelaskan bahwa fitur tersebut merupakan permintaan peringkasan terpisah yang dikirim client bersama riwayat Anda.

FAQ

Mengapa sesi Claude Code saya menjadi lebih lambat dan lebih mahal semakin lama berjalan?

Karena seluruh percakapan dikirim ulang pada setiap giliran. Jadi, pertanyaan satu baris dalam sesi yang telah terbuka sepanjang hari membawa serta seluruh percakapan hari itu. Prompt caching membuat biaya tetap rendah selama cache masih aktif: pembacaan dikenai biaya 0.1x dari tarif input dasar pada Haiku 5.5, 0.05x pada Opus 5.5 dan Sonnet 5.5, serta 0.025x pada Fable 5.1. Setelah suatu giliran tidak menemukan kecocokan di cache, prefix yang sama ditulis ulang dengan tarif 1.25x, atau 2x untuk masa berlaku satu jam. Jalankan /context untuk melihat bagian yang memenuhi context window, lalu baca penjelasan tentang biaya yang dikenakan pada sesi Claude Code untuk memahami mekanismenya.

Apa perbedaan antara /clear dan /compact di Claude Code?

/clear memulai percakapan baru dengan context kosong. Perintah ini tidak mengirim request, sehingga tidak menimbulkan biaya, dan merupakan pilihan yang tepat di antara tugas yang tidak berkaitan. /compact mempertahankan percakapan yang sama dan mengganti riwayatnya 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 memenuhi 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 memory, dan riwayat dalam bentuk grid berwarna, disertai saran untuk tool yang menggunakan banyak context dan memory bloat. Pada paket berbayar, /usage juga mengaitkan penggunaan terbaru dengan skill, subagent, dan server MCP tertentu.

Apakah sebaiknya saya menggunakan context window 1 million token daripada melakukan compacting?

Context window yang lebih besar hanya menunda masalah, bukan menyelesaikannya. Setiap model saat ini (Fable 5.1, Opus 5.5, Sonnet 5.5, dan Haiku 5.5) menggunakan context window 1 million token, dan compaction bekerja dengan cara yang sama di sana. Setiap giliran tetap mengirim ulang seluruh prompt dan tetap dikenai biaya untuknya. Jadi, percakapan dengan 400,000 token tetap mahal, terlepas dari apakah percakapan tersebut dapat ditampung.

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 lokasi 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 milik Claude Code.