cara atasi sesi Claude Code perlahan dan mahal
Sesi Claude Code menjadi mahal kerana penghantaran semula konteks. Gunakan /context untuk semak penggunaan dan bersihkan sesi bagi mengurangkan kos token.
Cara menghentikan sesi Claude Code yang lama daripada menjadi perlahan dan mahal
Sesi Claude Code yang lama menjadi perlahan dan mahal kerana setiap pusingan menghantar semula keseluruhan konteks, dan konteks tersebut sentiasa bertambah. Penyelesaiannya adalah melalui pembersihan dalam urutan yang tetap. Jalankan /context untuk melihat kandungan yang memenuhi tetingkap, buang item yang anda bayar bagi setiap permintaan, kemudian gunakan /clear di antara tugasan yang tidak berkaitan dan /compact dengan arahan di dalam satu tugasan yang panjang. Bekerja dalam tempoh yang berterusan, kerana cache prompt yang sejuk menukarkan pembacaan murah kepada penulisan semula sepenuhnya bagi semua perkara yang telah anda katakan.
Sebab mengapa meter penggunaan berjalan dijawab dalam meter token di sebalik sesi ejen.
Baca /context sebelum anda mengubah apa-apa
Jangan meneka kandungan tetingkap. Claude Code akan memberitahu anda.
/context [all] memaparkan penggunaan konteks semasa sebagai grid berwarna, dengan cadangan pengoptimuman untuk alatan yang menggunakan banyak konteks dan pembaziran memori; all memaparkan pecahan setiap item dalam mod skrin penuh. Baca hasil tersebut sebagai lima kategori.
- System prompt. Arahan rangka kerja Claude Code sendiri. Tetap untuk sesi tersebut.
- Tool definitions. Skema bagi setiap alatan yang boleh dipanggil ejen, termasuk setiap pelayan MCP (Model Context Protocol) yang disambungkan.
- Memory files.
CLAUDE.mddan memori automatik, dimuatkan pada permulaan sesi. - Files and tool results. Setiap fail yang dibaca, dan semua output daripada arahan anda.
- Message history. Giliran anda dan jawapan daripada ejen.
Tiga perkara pertama adalah kos tetap, yang dikenakan pada setiap permintaan sepanjang sesi. Dua perkara terakhir akan bertambah. Kurangkan kos tetap sekali, pada permulaan; uruskan bahagian yang bertambah secara berterusan.
Dua string memberitahu anda jika tetingkap 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 had keras, dan permintaan akan ditolak; ralat API (application programming interface) yang sepadan ialah Prompt is too long. Yang kedua adalah tetingkap pemadatan, yang boleh berada di bawah tetingkap konteks sebenar model pada model 1 juta token. Permintaan masih berjaya melepasi had ini, jadi ia adalah amaran dan bukannya penolakan.
Pada pelan berbayar, /usage menambah separuh lagi, menandakan tingkah laku seperti konteks panjang atau kegagalan cache dan mengaitkan penggunaan terkini kepada kemahiran, subagent, dan pelayan MCP individu.
CLAUDE.md adalah cukai kekal, jadi pastikan ia ringkas
CLAUDE.md anda dimuatkan ke dalam konteks pada permulaan sesi dan kekal di sana. Jika ia mengandungi prosedur deployment yang terperinci, token tersebut akan digunakan walaupun anda hanya membetulkan ralat taip dalam fail ujian. Panduan Anthropic adalah untuk memasukkan perkara penting sahaja dan mengekalkan fail di bawah 200 baris.
Pindahkan prosedur ke dalam skills. Sebuah skill hanya dimuatkan apabila dipanggil, jadi workflow yang anda jalankan dua kali seminggu tidak menggunakan kos pada hari-hari lain. Skills mempunyai bajet sendiri selepas proses pemampatan (compaction): kandungan dimuatkan semula, dihadkan kepada 5,000 token bagi setiap skill dan 25,000 token secara keseluruhan, dengan fail lama akan dibuang dahulu. Pemotongan (truncation) mengekalkan bahagian awal fail, jadi letakkan arahan paling penting berdekatan bahagian atas SKILL.md.
Apa yang terselamat selepas pemampatan menentukan di mana sesuatu arahan harus diletakkan.
- System prompt dan gaya output tidak berubah, kerana ia bukan sebahagian daripada sejarah mesej.
CLAUDE.mddi project-root, peraturan tanpa skop, dan auto memory dimuatkan semula dari disk.- Peraturan dengan frontmatter
paths:akan hilang sehingga fail yang sepadan dibaca semula. CLAUDE.mdbersarang dalam subdirectory akan hilang sehingga fail dalam subdirectory tersebut dibaca semula.- Hooks tidak terjejas, kerana hook berjalan sebagai kod dan tidak pernah masuk ke dalam konteks.
Oleh itu, peraturan yang anda perlukan harus berada dalam CLAUDE.md di project-root: Claude Code memadam output tool yang lebih lama terlebih dahulu dan kemudian meringkaskannya, jadi arahan dari awal perbualan mungkin hilang. Edit memory dengan /memory. Claude Code menyimpan salinan yang dimuatkan pada permulaan sesi, jadi pemotongan di tengah sesi mengekalkan prompt cache dan tidak akan terpakai sehingga /clear, /compact, atau restart yang seterusnya.
/clear antara tugasan, /compact di dalam satu tugasan
Kedua-dua arahan ini kelihatan serupa tetapi mempunyai kos yang sangat berbeza.
/clear [name] memulakan perbualan baharu dengan konteks kosong. Ia tidak menghantar sebarang permintaan, jadi ia tidak melibatkan kos. Masukkan nama untuk melabel perbualan terdahulu dalam pemilih /resume; /reset dan /new adalah alias. Gunakan arahan ini sebaik sahaja anda bertukar ke tugasan yang tidak berkaitan, kerana jika tidak, tugasan lama akan dihantar semula, dan dicaj semula, pada setiap mesej dalam tugasan baharu.
/compact [instructions] membebaskan konteks sambil meneruskan perbualan yang sama: ia meringkaskan sejarah setakat ini dan menggantikannya. Gunakan arahan ini di dalam satu tugasan panjang yang masih memerlukan kesinambungan.
Sentiasa berikan arahan kepada /compact. Arahan /compact yang kosong akan meringkas menggunakan prom asal yang tidak tahu bahagian kerja mana yang anda masih perlukan. Arahan yang disertakan akan mengekalkannya:
/compact focus on the auth bug fix
/compact keep only the plan and the diffJika anda melakukan pemadatan (compaction) untuk sebab yang sama setiap kali, letakkan arahan tetap dalam CLAUDE.md projek anda di bawah tajuk # Compact instructions. Dalam sesi baharu, /compact akan mencetak Not enough messages to compact., yang bermaksud belum ada sejarah perbualan.
Dua jenis kos sering mengelirukan di sini. Permintaan ringkasan berkongsi prefix anda, jadi ia membaca cache sedia ada dan bukannya memproses semula sejarah, dan sebahagian besar masa digunakan untuk menjana ringkasan. Memadatkan konteks yang besar tetap merupakan permintaan yang besar, kerana perbualan yang diringkaskan adalah inputnya. Giliran selepas pemadatan bukanlah bahagian yang lambat: ia membina semula cache untuk prom yang jauh lebih pendek.
Dua arahan yang lebih murah wujud. /rewind [description] mengembalikan kod dan perbualan ke titik semak (checkpoint); untuk laluan yang ingin anda tinggalkan sepenuhnya, ia lebih baik daripada pemadatan, kerana ia memotong balik ke prefix yang sudah sedia ada dalam cache. /recap menambah ringkasan sebagai output arahan dan bukannya menggantikan sejarah, jadi prefix yang tersimpan dalam cache kekal utuh.
Pemadatan automatik yang berulang kali akan mencetak ini:
Autocompact is thrashing: the context refilled to the limit...Pemadatan berjaya, tetapi output fail atau alatan telah mengisi semula tetingkap beberapa kali berturut-turut, jadi Claude Code berhenti mencuba semula. Pulihkan dengan membaca fail yang terlalu besar dalam julat baris, jalankan /compact dengan fokus yang membuang output besar tersebut, pindahkan kerja itu ke subagent, atau gunakan /clear jika perbualan terdahulu telah selesai.
MCP servers mempunyai overhead tetap
Setiap pelayan MCP yang anda sambungkan menambah beban kepada setiap permintaan sepanjang sesi berlangsung. Beban ini tetap ada sama ada anda memanggilnya atau tidak.
Claude Code mengurangkan kesan ini. Definisi alatan MCP ditangguhkan secara lalai, jadi hanya nama alatan sahaja yang masuk ke dalam konteks sehingga Claude menggunakan alatan khusus. Jalankan /context untuk melihat kos sebenar pelayan anda, dan /mcp disable <name> untuk menggugurkan pelayan yang tidak anda gunakan hari ini. Jika anda menjalankan pelayan MCP anda sendiri pada VPS, pengiraan yang sama mengehadkan jumlah alatan yang patut didedahkan oleh satu pelayan.
Lakukan ini pada permulaan sesi. Walaupun definisi ditangguhkan, menyambung atau memutuskan sambungan pelayan hanya menambah maklumat pada perbualan, dan cache tetap kekal. Jika definisi dimuatkan ke dalam prefix (kerana carian alatan dimatikan atau pelayan dikecualikan daripada penangguhan), perubahan yang sama akan menyebabkan permintaan seterusnya membaca semula segalanya.
Tapis output alat yang verbose sebelum masuk ke dalam context
Hasil alat adalah input, dan input dihantar semula pada setiap pusingan seterusnya. Pelaksanaan ujian yang menghasilkan 20,000 token output bukan kos sekali sahaja: anda perlu membayarnya semula pada setiap pusingan sehingga ia keluar dari tetingkap.
Tapis pada sumber. Hook yang mengurangkan hasil ujian kepada kegagalan sahaja sebelum Claude melihatnya akan menukar timbunan output tersebut kepada beberapa ratus token, pada pusingan ini dan pada setiap penghantaran semula:
npm test 2>&1 | grep -E "FAIL|Error:" | head -40Hook tidak pernah masuk ke dalam context kerana ia dijalankan sebagai kod. Lakukan ini untuk mana-mana alat yang outputnya melebihi had skrin. Logik yang sama terpakai untuk fail 3,000 baris: minta julat baris yang anda perlukan, kerana keseluruhan fail akan kekal dalam tetingkap sebaik sahaja ia tiba.
Hadkan skop pembacaan ejen, dan delegasikan tugas yang bising
Prompt yang menamakan fail dan simptom akan membaca fail tersebut. Permintaan terbuka untuk menyusun projek akan membaca apa sahaja yang dianggap relevan oleh ejen, dan setiap pembacaan tersebut akan kekal dalam tetingkap.
Delegasikan kerja yang meleret kepada sub-ejen. Pelaksanaan ujian dan pemprosesan log kedua-duanya menggunakan konteks sebenar; sub-ejen menyimpan output tersebut dalam tetingkapnya sendiri dan hanya mengembalikan ringkasan. Kesannya: sub-ejen membina cache sendiri tanpa sebarang padanan pada panggilan pertama, dan menggunakan tempoh hayat cache lima minit walaupun pada langganan. Delegasi melindungi konteks utama anda dengan berkesan. Ia tidak sentiasa mengurangkan jumlah token secara keseluruhan.
Jam cache: bekerja dalam tempoh berterusan
Caching prompt menjadikan penghantaran semula lebih murah: 0.1x kadar input asas untuk membaca prefix, berbanding 1.25x untuk menulisnya, atau 2x untuk menulisnya bagi jangka hayat satu jam. Setiap penggunaan menyegarkan entri tanpa kos tambahan, jadi jam bermula dari penggunaan terakhir.
Jangka hayat yang anda peroleh bergantung pada cara anda melakukan pengesahan, sebab itulah kenyataan umum "cache anda tamat tempoh selepas lima minit" adalah tidak tepat.
- Dengan langganan Claude, Claude Code meminta jangka hayat satu jam secara automatik.
- Apabila anda telah melebihi had pelan dan menggunakan kredit penggunaan, anda akan dikenakan caj untuk penggunaan tersebut, jadi ia kembali kepada lima minit.
- Melalui kunci API atau penyedia awan, ia kekal pada lima minit.
ENABLE_PROMPT_CACHING_1H=1memilih jangka hayat satu jam, manakalaFORCE_PROMPT_CACHING_5M=1memaksanya kembali ke lima minit.
Nasihat ritma adalah sama bagi kedua-duanya: bekerja dalam tempoh berterusan, kerana jurang tidak aktif melebihi jangka hayat akan menyebabkan giliran seterusnya menulis semula keseluruhan prefix yang terkumpul. Sesi Claude Code terpisah dalam tmux tidak menelan kos semasa tidak aktif, dan cache yang hangat adalah apa yang hilang semasa waktu tidak aktif tersebut.
Beberapa tindakan membuang cache semasa anda masih bekerja: menukar model, menukar tahap usaha, menghidupkan mod pantas, menyambung atau memutuskan pelayan MCP, mengaktifkan atau menyatikan plugin, menolak keseluruhan alatan, pemadatan, dan menaik taraf Claude Code. /model adalah kejutan biasa, kerana setiap model mempunyai cache sendiri, jadi permintaan seterusnya akan membaca keseluruhan sejarah tanpa sebarang padanan cache walaupun kandungannya adalah identikal.
Mengedit fail, mengedit CLAUDE.md, memanggil kemahiran dan arahan, menjalankan /recap, memutar balik, dan melahirkan subagent semuanya mengekalkan cache. Ia terhad kepada satu mesin dan satu direktori, jadi dua sesi dalam direktori berbeza tidak akan berkongsi cache antara satu sama lain.
Untuk melihat sama ada caching berfungsi, baca current_usage. cache_creation_input_tokens ditulis pada kadar penulisan cache; cache_read_input_tokens disajikan pada kira-kira satu persepuluh daripada kadar input standard. Nisbah bacaan-kepada-penciptaan yang tinggi adalah baik. Jika penciptaan kekal tinggi setiap giliran, sesuatu dalam prefix anda sentiasa berubah.
Adakah tetingkap konteks yang lebih besar dapat menyelesaikan masalah ini?
Sebahagiannya. Beberapa model semasa menyokong tetingkap konteks 1 juta token, dan pemampatan berfungsi dengan cara yang sama pada had yang lebih besar. Kos ekonomi tidak berubah, kerana keseluruhan prom adalah dihantar semula dan masih dikenakan caj pada setiap pusingan. Tetingkap yang lebih besar menentukan bila anda terpaksa bertindak; kebersihan data menentukan kos. Jika bil adalah masalahnya dan bukannya had kapasiti, pelan Claude mana yang sesuai dengan cara kerja anda menentukan sama ada anda membelanjakan wang atau kuota pelan.
Penyuntingan konteks dan pemadatan dalam API adalah perkara yang berbeza
Jika anda membina ejen anda sendiri menggunakan Messages API, tiada arahan slash yang wujud dan anda perlu melaksanakannya sendiri. Dua ciri sebelah pelayan (server-side) menjalankan tugas ini, dan kedua-duanya bukan ciri yang sama.
Penyuntingan konteks memadamkan kandungan tertentu secara terpilih daripada sejarah perbualan apabila ia berkembang, menggantikan setiap hasil yang dipadam dengan teks penanda tempat (placeholder) supaya Claude tahu sesuatu telah dialih keluar. Ia adalah versi beta: hantar anthropic-beta: context-management-2025-06-27 dan konfigurasi strategi di bawah context_management.edits. clear_tool_uses_20250919 memadamkan hasil alatan (tool results), dan clear_thinking_20251015 menguruskan blok pemikiran (thinking blocks). trigger ditetapkan secara lalai kepada 100,000 token input, keep kepada 3 penggunaan alatan terakhir, dan clear_tool_inputs kepada false, supaya input kekal dan hanya hasil dipadamkan.
Pemadatan menjana ringkasan dan menggantikan keseluruhan sejarah perbualan dengan ringkasan tersebut. Ia juga merupakan versi beta: hantar anthropic-beta: compact-2026-01-12 dan gunakan jenis suntingan compact_20260112. Pencetus (trigger) ditetapkan secara lalai kepada {"type": "input_tokens", "value": 150000}, dan nilainya mestilah sekurang-kurangnya 50,000.
Pemadatan mempunyai satu peraturan penyerahan (handoff) yang merosakkan ejen secara senyap. Respons bermula dengan blok kandungan compaction yang mengandungi ringkasan, diikuti dengan blok teks biasa. Anda mesti menghantar semula blok tersebut dalam permintaan seterusnya, dan API kemudian akan membuang setiap blok kandungan sebelum blok tersebut. Secara praktikal: sertakan keseluruhan response.content, bukan hanya teks sahaja.
Dokumentasi Anthropic menyatakan pemadatan sebelah pelayan adalah strategi utama untuk mengurus konteks dalam perbualan jangka panjang, manakala penyuntingan konteks adalah pilihan untuk kawalan lebih terperinci tentang apa yang perlu dipadamkan. Semak sokongan model terlebih dahulu. Model Opus, Sonnet dan Fable semasa menyokong pemadatan; claude-haiku-4-5 tidak menyokongnya, dan halaman pemadatan mengandungi senarai terkini. Kedua-dua versi beta ini tidak mengawal /compact milik Claude Code sendiri, yang dokumentasinya menyifatkan sebagai permintaan ringkasan sekali guna yang dihantar oleh klien.
FAQ
Mengapa sesi Claude Code saya menjadi lebih perlahan dan lebih mahal apabila ia berjalan lebih lama?
Ini berlaku kerana keseluruhan perbualan dihantar semula pada setiap pusingan. Soalan satu baris dalam sesi yang telah dibuka sepanjang hari akan membawa keseluruhan sejarah perbualan tersebut. Prompt caching mengekalkan kos yang rendah selagi cache masih aktif, pada kadar 0.1x daripada kadar input asas untuk pembacaan; sebaik sahaja pusingan terlepas cache, prefix yang sama ditulis semula pada kadar 1.25x. Jalankan /context untuk melihat kandungan yang memenuhi tetingkap, dan baca apa yang dicaj oleh sesi Claude Code untuk memahami mekanismenya.
Apakah perbezaan antara /clear dan /compact dalam Claude Code?
/clear memulakan perbualan baharu dengan konteks kosong. Ia tidak menghantar sebarang permintaan, jadi ia tidak melibatkan kos, dan ia adalah pilihan yang tepat untuk tugasan yang tidak berkaitan. /compact mengekalkan perbualan yang sama dan menggantikan sejarah dengan ringkasan, jadi ia adalah pilihan yang tepat dalam satu tugasan yang panjang. Berikan fokus kepadanya, seperti dalam /compact keep only the plan and the diff, kerana arahan tersebut menentukan maklumat yang akan dikekalkan.
Bagaimanakah saya boleh melihat apa yang menggunakan tetingkap konteks Claude Code saya?
Jalankan /context, atau /context all untuk pecahan terperinci bagi setiap item. Ia memaparkan prompt sistem, definisi alatan, pelayan MCP, fail memori, dan sejarah dalam bentuk grid berwarna, berserta cadangan untuk alatan yang menggunakan banyak konteks dan pembengkakan memori. Pada pelan berbayar, /usage juga mengagihkan penggunaan terkini kepada kemahiran, subagent, dan pelayan MCP individu.
Patutkah saya menggunakan tetingkap konteks 1 juta token berbanding melakukan pemadatan (compacting)?
Tetingkap yang lebih besar hanya melambatkan masalah dan bukannya menyelesaikannya. Beberapa model semasa menyokong tetingkap konteks 1 juta token, termasuk Opus 4.8 dan Sonnet 5, dan pemadatan berfungsi dengan cara yang sama di sana. Setiap pusingan masih menghantar semula prompt penuh dan tetap dicaj untuknya, jadi perbualan 400,000-token tetap mahal tidak kira sama ada ia muat atau tidak.
Apakah perbezaan antara penyuntingan konteks (context editing) dan pemadatan (compaction) dalam Claude API?
Penyuntingan konteks memadam kandungan lama secara terpilih, terutamanya hasil alatan, dan meninggalkan teks penanda tempat (placeholder) di mana setiap satu berada supaya Claude tahu ia telah dipadamkan. Pemadatan menghasilkan ringkasan dan menggantikan sejarah penuh dengan ringkasan tersebut. Dokumentasi Anthropic memanggil pemadatan sebagai strategi utama untuk perbualan yang berjalan lama, dan meletakkan penyuntingan konteks sebagai pilihan yang lebih terperinci. Kedua-duanya adalah versi beta dengan pengepala tersendiri, dan kedua-duanya adalah berasingan daripada /compact Claude Code.