SSD Nodes Learn
Panduan Matt ConnorOleh Matt Connor · Diperbarui 2026-07-24

Cara mengatasi Claude Code lambat dan mahal

Sesi Claude Code menjadi lambat karena pengiriman ulang seluruh konteks. Gunakan perintah /context untuk memantau token dan optimasi biaya penggunaan Anda.

Cara menghentikan sesi Claude Code yang lama agar tidak lambat dan mahal

Sesi Claude Code yang lama menjadi lambat dan mahal karena setiap giliran mengirim ulang seluruh konteks, dan konteks tersebut terus bertambah. Solusinya adalah menjaga kebersihan sesi dengan urutan yang tetap. Jalankan /context untuk melihat apa yang memenuhi jendela, hapus item yang Anda bayar pada setiap permintaan, lalu gunakan /clear di antara tugas yang tidak terkait dan /compact dengan instruksi di dalam satu tugas yang panjang. Bekerjalah dalam rentang waktu yang berkelanjutan, karena prompt cache yang dingin mengubah pembacaan murah menjadi penulisan ulang penuh atas semua yang telah Anda katakan.

Alasan mengapa penggunaan token terjadi dijelaskan dalam meter token di balik sesi agent.

Baca /context sebelum Anda mengubah apa pun

Jangan menebak isi jendela tersebut. Claude Code akan memberitahukannya kepada Anda.

/context [all] menampilkan penggunaan konteks saat ini sebagai kisi berwarna, lengkap dengan saran optimasi untuk alat yang menggunakan banyak konteks dan pemborosan memori; all memperluas rincian per item dalam mode layar penuh. Baca hasilnya sebagai lima kategori.

  • System prompt. Instruksi harness milik Claude Code. Bersifat tetap selama sesi berlangsung.
  • Definisi tool. Skema untuk setiap tool yang dapat dipanggil agen, termasuk setiap server MCP (Model Context Protocol) yang terhubung.
  • File memori. CLAUDE.md dan memori otomatis, dimuat saat sesi dimulai.
  • File dan hasil tool. Setiap file yang dibaca, dan semua output dari perintah Anda.
  • Riwayat pesan. Pesan Anda dan balasannya.

Tiga poin pertama adalah beban tetap yang dibayarkan pada setiap permintaan selama sesi berlangsung. Dua poin terakhir terus bertambah. Kurangi beban tetap satu kali di awal; kelola bagian yang terus bertambah secara berkelanjutan.

Dua string menunjukkan bahwa jendela telah 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 akan ditolak; error API (application programming interface) yang sesuai berbunyi Prompt is too long. Yang kedua adalah jendela kompresi, yang dapat berada di bawah jendela konteks asli model pada model 1 juta token. Permintaan tetap berhasil melampauinya, sehingga yang satu merupakan peringatan, bukan penolakan.

Pada paket berbayar, /usage menambahkan setengah bagian lainnya, menandai perilaku seperti konteks panjang atau kegagalan cache, serta mengatribusikan penggunaan terbaru ke skill, subagent, dan server MCP individu.

CLAUDE.md adalah pajak permanen, jadi buatlah tetap ringkas

CLAUDE.md Anda dimuat ke dalam konteks saat sesi dimulai dan tetap ada di sana. Jika file tersebut berisi prosedur deployment yang detail, token tersebut tetap digunakan meskipun Anda hanya memperbaiki kesalahan ketik pada file tes. Panduan Anthropic adalah hanya menyertakan hal-hal esensial dan menjaga file tetap di bawah 200 baris.

Pindahkan prosedur ke dalam skills. Sebuah skill hanya dimuat saat dipanggil, sehingga workflow yang Anda jalankan dua kali seminggu tidak memakan biaya pada hari lainnya. Skills memiliki anggaran sendiri setelah kompresi: isi file dimasukkan kembali, dibatasi maksimal 5.000 token per skill dan 25.000 token secara total, dengan file terlama dihapus terlebih dahulu. Pemotongan (truncation) mempertahankan bagian awal file, jadi letakkan instruksi paling penting di bagian atas SKILL.md.

Apa yang tersisa setelah kompresi menentukan di mana sebuah instruksi harus ditempatkan.

  • System prompt dan gaya output tidak berubah, karena keduanya bukan bagian dari riwayat pesan.
  • CLAUDE.md di project-root, aturan unscoped, dan auto memory dimasukkan kembali dari disk.
  • Aturan dengan frontmatter paths: akan hilang sampai file yang sesuai dibaca kembali.
  • CLAUDE.md bersarang di subdirektori akan hilang sampai file di subdirektori tersebut dibaca kembali.
  • Hooks tidak terpengaruh, karena hook berjalan sebagai kode dan tidak pernah masuk ke dalam konteks.

Jadi, aturan yang Anda butuhkan harus berada di CLAUDE.md project-root: Claude Code menghapus output tool yang lebih lama terlebih dahulu lalu melakukan ringkasan, sehingga instruksi dari awal percakapan mungkin hilang. Edit memory dengan /memory. Claude Code menyimpan salinan yang dimuat saat sesi dimulai, sehingga pemotongan di tengah sesi tetap menjaga prompt cache dan tidak akan diterapkan sampai /clear, /compact, atau restart berikutnya.

/clear di antara tugas, /compact di dalam satu tugas

Kedua perintah ini terlihat serupa tetapi memiliki biaya yang sangat berbeda.

/clear [name] memulai percakapan baru dengan konteks kosong. Perintah ini tidak mengirimkan permintaan, sehingga tidak memakan biaya. Masukkan nama untuk melabeli percakapan sebelumnya pada pemilih /resume; /reset dan /new adalah alias. Gunakan perintah ini segera setelah Anda berpindah ke tugas yang tidak terkait, karena jika tidak, tugas lama akan dikirim ulang dan ditagih kembali pada setiap pesan baru.

/compact [instructions] mengosongkan konteks sambil melanjutkan percakapan yang sama: perintah ini meringkas riwayat yang ada dan menggantinya. Gunakan perintah ini di dalam satu tugas panjang yang masih membutuhkan kontinuitas.

Selalu berikan instruksi pada /compact. Perintah /compact tanpa instruksi akan meringkas menggunakan prompt default yang tidak mengetahui bagian pekerjaan mana yang masih Anda butuhkan. Perintah dengan instruksi akan mempertahankannya:

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

Jika Anda melakukan kompresi dengan alasan yang sama setiap saat, masukkan instruksi tetap pada CLAUDE.md proyek Anda di bawah tajuk # Compact instructions. Pada sesi baru, /compact akan mencetak Not enough messages to compact., yang berarti belum ada riwayat.

Dua jenis biaya sering membingungkan di sini. Permintaan peringkasan menggunakan prefix Anda, sehingga ia membaca cache yang ada alih-alih memproses ulang riwayat, dan sebagian besar waktunya digunakan untuk menghasilkan ringkasan. Melakukan kompresi pada konteks besar tetap merupakan permintaan besar, karena percakapan yang diringkas adalah inputnya. Langkah setelah kompresi bukanlah bagian yang lambat: ia membangun ulang cache untuk prompt yang jauh lebih pendek.

Terdapat dua perintah yang lebih murah. /rewind [description] mengembalikan kode dan percakapan ke titik pemeriksaan (checkpoint); untuk jalur yang ingin Anda tinggalkan sepenuhnya, perintah ini lebih baik daripada kompresi karena ia memotong kembali ke prefix yang sudah tersimpan di cache. /recap menambahkan ringkasan sebagai output perintah alih-alih mengganti riwayat, sehingga prefix yang tersimpan di cache tetap utuh.

Kompresi otomatis yang berjalan berulang kali akan mencetak ini:

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

Kompresi berhasil, tetapi output file atau alat mengisi kembali jendela beberapa kali berturut-turut, sehingga Claude Code berhenti mencoba kembali. Pulihkan dengan membaca file yang terlalu besar dalam rentang baris, jalankan /compact dengan fokus yang membuang output besar tersebut, pindahkan pekerjaan tersebut ke subagent, atau gunakan /clear jika percakapan sebelumnya sudah selesai.

MCP server memiliki overhead tetap

Setiap MCP server yang Anda hubungkan menambah beban pada setiap permintaan selama sesi berlangsung. Beban ini tetap ada meskipun Anda tidak memanggilnya.

Claude Code memitigasi hal ini. Definisi tool MCP ditunda secara default, sehingga hanya nama tool yang masuk ke dalam konteks sampai Claude menggunakan tool spesifik. Jalankan /context untuk melihat biaya server Anda yang sebenarnya, dan /mcp disable <name> untuk menghapus server yang tidak akan Anda gunakan hari ini. Jika Anda menjalankan MCP server Anda sendiri di VPS, perhitungan yang sama membatasi jumlah tool yang boleh diekspos oleh satu server.

Lakukan ini di awal sesi. Selama definisi tetap ditunda, menghubungkan atau memutuskan koneksi server hanya akan menambah percakapan, dan cache tetap tersimpan. Jika definisi dimuat ke dalam prefix (karena fitur pencarian tool dimatikan atau server dikecualikan dari penundaan), perubahan yang sama akan menyebabkan permintaan berikutnya membaca ulang semuanya.

Filter output tool yang verbose sebelum masuk ke context

Hasil tool adalah input, dan input dikirim ulang pada setiap turn berikutnya. Hasil pengujian yang menghasilkan 20,000 token output bukan merupakan biaya satu kali: Anda akan membayarnya lagi pada setiap turn sampai output tersebut keluar dari window.

Lakukan filter pada sumbernya. Sebuah hook yang meringkas hasil pengujian hanya menjadi daftar kegagalan sebelum Claude melihatnya akan mengubah tumpukan output tersebut menjadi beberapa ratus token, baik pada turn ini maupun pada setiap pengiriman ulangnya:

npm test 2>&1 | grep -E "FAIL|Error:" | head -40

Hook tidak pernah masuk ke dalam context karena hook berjalan sebagai kode. Lakukan hal ini untuk tool apa pun yang outputnya melebihi kapasitas layar. Logika yang sama berlaku untuk file berisi 3,000 baris: mintalah rentang baris yang Anda butuhkan, karena seluruh isi file akan tetap berada di dalam window setelah diterima.

Batasi cakupan pembacaan agen, dan delegasikan tugas yang bising

Prompt yang menyebutkan nama file akan membaca file tersebut. Permintaan terbuka untuk merapikan proyek akan membaca apa pun yang dianggap relevan oleh agen, dan setiap pembacaan tersebut tetap tersimpan di dalam jendela konteks.

Delegasikan pekerjaan yang bertele-tele ke subagen. Pengujian dan pemrosesan log keduanya mengonsumsi konteks yang besar; subagen menyimpan output tersebut di jendela tersendiri dan hanya mengembalikan ringkasan. Konsekuensinya: subagen membangun cache sendiri yang tidak memiliki hit pada panggilan pertama, dan menggunakan masa berlaku cache lima menit meskipun Anda menggunakan langganan. Delegasi secara andal melindungi konteks utama Anda. Hal ini tidak selalu menurunkan total token.

Cache clock: bekerja dalam sesi

Prompt caching membuat pengiriman ulang menjadi murah: 0.1x dari 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 timer dimulai dari penggunaan terakhir.

Masa berlaku yang Anda dapatkan bergantung pada metode autentikasi Anda. Pernyataan umum bahwa "cache Anda kedaluwarsa setelah lima menit" adalah tidak akurat.

  • Pada langganan Claude, Claude Code meminta masa berlaku satu jam secara otomatis.
  • Setelah Anda melewati batas paket dan menggunakan kredit penggunaan, Anda akan ditagih untuk penggunaan tersebut, sehingga durasi turun menjadi lima menit.
  • Pada API key atau penyedia cloud, durasi tetap lima menit. ENABLE_PROMPT_CACHING_1H=1 mengaktifkan masa berlaku satu jam, dan FORCE_PROMPT_CACHING_5M=1 memaksanya kembali ke lima menit.

Saran ritme kerjanya tetap sama: bekerjalah dalam sesi yang berkelanjutan. Jeda waktu diam yang melebihi masa berlaku akan menyebabkan permintaan berikutnya menulis ulang seluruh prefix yang telah terkumpul. Sebuah sesi Claude Code terpisah di tmux tidak memakan biaya saat diam, dan cache yang hangat adalah keuntungan dari waktu diam tersebut.

Beberapa tindakan menghapus cache saat Anda masih bekerja: mengganti model, mengubah tingkat upaya (effort level), mengaktifkan mode cepat, menghubungkan atau memutuskan server MCP, mengaktifkan atau menonaktifkan plugin, menolak seluruh alat, melakukan kompaksi, dan memperbarui Claude Code. /model adalah kejutan yang umum terjadi, karena setiap model memiliki cache sendiri, sehingga permintaan berikutnya membaca seluruh riwayat tanpa hit cache meskipun kontennya identik.

Mengedit file, mengedit CLAUDE.md, memanggil skill dan perintah, menjalankan /recap, melakukan rewind, dan membuat subagent tetap mempertahankan cache. Cache ini dibatasi pada satu mesin dan satu direktori, sehingga dua sesi di direktori berbeda tidak dapat berbagi cache satu sama lain.

Untuk melihat apakah caching berfungsi, baca current_usage. cache_creation_input_tokens ditulis pada tarif penulisan cache; cache_read_input_tokens disajikan pada sekitar sepersepuluh dari tarif input standar. Rasio pembacaan terhadap pembuatan yang tinggi menunjukkan kondisi yang sehat. Jika pembuatan tetap tinggi secara terus-menerus, berarti ada sesuatu dalam prefix Anda yang terus berubah.

Apakah context window yang lebih besar dapat memperbaiki ini?

Sebagian. Beberapa model saat ini mendukung context window sebesar 1 juta token, dan metode kompresi bekerja dengan cara yang sama pada batas yang lebih besar tersebut. Aspek ekonomisnya tidak berubah, karena seluruh prompt tetap dikirim ulang dan tetap ditagih pada setiap giliran. Context window yang lebih besar menentukan kapan Anda terpaksa melakukan tindakan; manajemen data menentukan biayanya. Jika masalahnya adalah tagihan dan bukan batas kapasitas, paket Claude mana yang sesuai dengan cara kerja Anda akan menentukan apakah Anda menghabiskan saldo dolar atau kuota paket.

Pengeditan konteks dan kompresi dalam API adalah hal yang berbeda

Jika Anda membangun agent sendiri menggunakan Messages API, perintah slash tidak tersedia dan Anda harus mengimplementasikannya sendiri. Ada dua fitur sisi server yang menjalankan tugas ini, dan keduanya bukan fitur yang sama.

Pengeditan konteks menghapus konten tertentu secara selektif dari riwayat percakapan seiring bertambahnya panjang percakapan. Setiap hasil yang dihapus diganti dengan teks placeholder agar Claude mengetahui bahwa ada data yang dihilangkan. Ini adalah fitur beta: kirim anthropic-beta: context-management-2025-06-27 dan konfigurasi strategi di bawah context_management.edits. clear_tool_uses_20250919 menghapus hasil tool, dan clear_thinking_20251015 mengelola blok pemikiran (thinking blocks). Nilai trigger secara default adalah 100.000 token input, keep untuk 3 penggunaan tool terakhir, dan clear_tool_inputs untuk false, sehingga input tetap ada dan hanya hasil yang dihapus.

Kompresi menghasilkan ringkasan dan mengganti seluruh riwayat percakapan dengan ringkasan tersebut. Ini juga merupakan fitur beta: kirim anthropic-beta: compact-2026-01-12 dan gunakan tipe edit compact_20260112. Pemicu secara default adalah {"type": "input_tokens", "value": 150000}, dan nilainya harus minimal 50.000.

Kompresi memiliki satu aturan penyerahan (handoff) yang dapat merusak agent secara diam-diam. Respon dimulai dengan blok konten compaction yang berisi ringkasan, diikuti oleh blok teks normal. Anda harus mengirimkan kembali blok tersebut pada permintaan berikutnya, dan API kemudian akan menghapus setiap blok konten sebelumnya. Praktiknya: lampirkan seluruh bagian response.content, bukan hanya teksnya saja.

Dokumentasi Anthropic menyebut kompresi sisi server sebagai strategi utama untuk mengelola konteks dalam percakapan jangka panjang, dan pengeditan konteks sebagai opsi untuk kontrol yang lebih halus terhadap data yang dihapus. Periksa dukungan model terlebih dahulu. Model Opus, Sonnet, dan Fable saat ini mendukung kompresi; claude-haiku-4-5 tidak mendukung, dan halaman kompresi menyediakan daftar terbaru. Tidak ada fitur beta yang menggerakkan /compact milik Claude Code sendiri, yang dalam dokumentasinya dijelaskan sebagai permintaan ringkasan satu kali yang dikirim oleh client.

FAQ

Mengapa sesi Claude Code saya menjadi lebih lambat dan lebih mahal jika dijalankan lebih lama?

Karena seluruh percakapan dikirim ulang pada setiap giliran. Pertanyaan satu baris dalam sesi yang telah terbuka seharian akan membawa seluruh riwayat hari tersebut. Prompt caching menjaga biaya tetap rendah selama cache masih hangat, yaitu 0.1x dari tarif input dasar untuk pembacaan; jika satu giliran gagal menggunakan cache, prefix yang sama ditulis ulang dengan tarif 1.25x. Jalankan /context untuk melihat apa yang memenuhi jendela konteks, dan baca apa yang ditagih oleh sesi Claude Code untuk memahami mekanismenya.

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

/clear memulai percakapan baru dengan konteks kosong. Perintah ini tidak mengirimkan permintaan, sehingga tidak memakan biaya, dan merupakan pilihan tepat untuk tugas yang tidak saling terkait. /compact mempertahankan percakapan yang sama dan mengganti riwayat dengan ringkasan, sehingga merupakan pilihan tepat di dalam satu tugas yang panjang. Berikan fokus, seperti pada /compact keep only the plan and the diff, karena instruksi tersebut menentukan informasi apa yang tetap dipertahankan.

Bagaimana cara melihat apa yang menghabiskan jendela konteks Claude Code saya?

Jalankan /context, atau /context all untuk rincian lengkap per item. Perintah ini menampilkan system prompt, definisi tool, server MCP, file memori, dan riwayat dalam bentuk grid berwarna, disertai saran untuk tool yang berat konteks dan pemborosan memori. Pada paket berbayar, /usage juga mengatribusikan penggunaan terbaru ke skill, subagent, dan server MCP individu.

Haruskah saya menggunakan jendela konteks 1 juta token alih-alih melakukan kompaksi?

Jendela yang lebih besar hanya menunda masalah, bukan menyelesaikannya. Beberapa model saat ini menjalankan jendela konteks 1 juta token, termasuk Opus 4.8 dan Sonnet 5, dan kompaksi berperilaku sama di sana. Setiap giliran tetap mengirim ulang prompt lengkap dan tetap menagih biayanya, sehingga percakapan 400,000-token tetap mahal terlepas dari apakah ia muat atau tidak.

Apa perbedaan antara pengeditan konteks dan kompaksi pada Claude API?

Pengeditan konteks menghapus konten lama secara selektif, terutama hasil tool, dan meninggalkan teks placeholder di posisi asalnya agar Claude tahu bahwa konten tersebut telah dihapus. Kompaksi menghasilkan ringkasan dan mengganti seluruh riwayat dengan ringkasan tersebut. Dokumentasi Anthropic menyebut kompaksi sebagai strategi utama untuk percakapan yang berjalan lama, dan memposisikan pengeditan konteks sebagai opsi kontrol halus. Keduanya masih dalam tahap beta dengan header masing-masing, dan keduanya terpisah dari /compact milik Claude Code.