Cara hentikan sesi Claude Code yang perlahan dan mahal
Setiap giliran menghantar semula seluruh konteks, lalu sesi menjadi perlahan dan mahal. Jalankan /context, kurangkan kos tetap, kemudian clear dan compact dengan sengaja.
Cara menghentikan sesi Claude Code yang panjang daripada menjadi perlahan dan mahal
Sesi Claude Code yang panjang menjadi perlahan dan mahal kerana setiap giliran menghantar semula keseluruhan konteks, dan konteks itu terus bertambah. Penyelesaiannya ialah amalan pengurusan konteks mengikut urutan tetap. Jalankan /context untuk melihat perkara yang memenuhi tetingkap konteks, kurangkan item yang dikenakan caj pada setiap permintaan, kemudian gunakan /clear antara tugas yang tidak berkaitan dan /compact bersama arahan dalam satu tugas yang panjang. Bekerjalah dalam tempoh yang berterusan kerana cache prompt yang tidak lagi tersedia menukar bacaan yang murah kepada penulisan semula penuh bagi semua perkara yang telah anda nyatakan.
Sebab meter terus berjalan dijelaskan dalam meter token di sebalik sesi ejen.
Baca /context sebelum mengubah apa-apa
Jangan teka perkara yang memenuhi tetingkap. Claude Code akan memberitahu anda.
/context [all] memaparkan penggunaan konteks semasa sebagai grid berwarna, dengan cadangan pengoptimuman untuk alat yang menggunakan banyak konteks dan pembaziran memori; all mengembangkan pecahan mengikut item dalam mod skrin penuh. Baca hasilnya sebagai lima kelompok.
- System prompt. Arahan harness Claude Code sendiri. Tetap untuk sesi tersebut.
- Definisi alat. Skema bagi setiap alat yang boleh dipanggil oleh ejen, termasuk setiap pelayan MCP (Model Context Protocol) yang disambungkan.
- Fail memori.
CLAUDE.mddan memori automatik yang dimuatkan pada permulaan sesi. - Fail dan hasil alat. Setiap fail yang dibaca dan semua output yang dicetak semula oleh arahan anda.
- Sejarah mesej. Giliran anda dan balasan Claude Code.
Tiga yang pertama ialah kos tetap yang dibayar pada setiap permintaan sepanjang sesi. Dua yang terakhir akan bertambah. Kurangkan kos tetap sekali pada permulaan; urus bahagian yang bertambah secara berterusan.
Dua rentetan menunjukkan bahawa 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 ialah had keras, lalu permintaan ditolak; ralat API (application programming interface) yang sepadan ialah Prompt is too long. Yang kedua ialah tetingkap pemadatan, yang boleh berada di bawah tetingkap konteks sebenar pada model 1 juta token. Permintaan masih berjaya selepas melepasi had itu, jadi ia ialah amaran dan bukannya penolakan.
Dalam pelan berbayar, /usage menambah separuh lagi dengan menandakan tingkah laku seperti konteks panjang atau cache miss serta mengaitkan penggunaan terkini dengan kemahiran, subejen dan pelayan MCP tertentu. Jika ia memberitahu anda bahawa kuota sudah digunakan sepenuhnya, tetingkap had yang sedang anda tunggu menentukan sama ada pemangkasan konteks akan membantu anda sekarang atau anda memerlukan laluan lain untuk kembali bekerja.
CLAUDE.md ialah beban kekal, jadi pastikan kandungannya ringkas
CLAUDE.md anda dimuatkan ke dalam konteks pada permulaan sesi dan kekal di situ. Jika fail itu mengandungi prosedur deployment yang terperinci, token tersebut masih ada ketika anda membetulkan kesilapan taip dalam fail ujian. Panduan Anthropic menyarankan supaya hanya perkara penting dimasukkan dan fail itu dikekalkan di bawah 200 baris.
Pindahkan prosedur ke dalam skills. Sesuatu skill hanya dimuatkan apabila dipanggil, jadi aliran kerja yang anda jalankan dua kali seminggu tidak menggunakan apa-apa kos pada hari lain. Setiap skill mempunyai bajet tersendiri selepas compaction: kandungannya dimasukkan semula, dengan had 5,000 token bagi setiap skill dan 25,000 token secara keseluruhan; kandungan yang paling lama digugurkan dahulu. Truncation mengekalkan bahagian awal fail, jadi letakkan arahan paling penting berhampiran bahagian atas SKILL.md.
Perkara yang kekal selepas compaction menentukan lokasi sesuatu arahan.
- System prompt dan gaya output tidak berubah kerana kedua-duanya bukan sebahagian daripada sejarah mesej.
CLAUDE.mdpada root projek, peraturan tanpa skop dan memori automatik dimasukkan semula daripada disk.- Peraturan dengan frontmatter
paths:hilang sehingga fail yang sepadan dibaca semula. CLAUDE.mdbersarang dalam subdirektori hilang sehingga fail dalam subdirektori itu dibaca semula.- Hooks tidak terjejas kerana hook dijalankan sebagai kod dan tidak pernah masuk ke dalam konteks.
Oleh itu, peraturan yang anda bergantung padanya hendaklah diletakkan dalam CLAUDE.md pada root projek: Claude Code mengosongkan output tool yang lebih lama dahulu, kemudian membuat ringkasan. Arahan daripada bahagian awal perbualan mungkin hilang. Edit memori dengan /memory. Claude Code menyimpan salinan yang dimuatkannya pada permulaan sesi, jadi trim pada pertengahan sesi mengekalkan cache prompt dan tidak berkuat kuasa sehingga /clear, /compact atau restart yang seterusnya. Kehilangan konteks hanyalah satu sebab peraturan tidak lagi dipatuhi. Jika peraturan itu jelas masih berada dalam tetingkap konteks tetapi tetap diabaikan, teliti punca lain sebelum anda menulisnya semula.
/clear antara tugas, /compact dalam satu tugas
Kedua-duanya kelihatan boleh saling menggantikan, tetapi kosnya sangat berbeza.
/clear [name] memulakan perbualan baharu dengan konteks kosong. Ia tidak menghantar sebarang permintaan, jadi tiada kos dikenakan. Berikan nama untuk melabelkan perbualan sebelumnya dalam pemilih /resume; /reset dan /new ialah alias. Gunakannya sebaik sahaja anda beralih kepada tugas yang tidak berkaitan, kerana tugas lama akan dihantar semula dan dikenakan bayaran sekali lagi pada setiap mesej tugas baharu jika tidak.
/compact [instructions] membebaskan ruang konteks sambil meneruskan perbualan yang sama: ia meringkaskan sejarah setakat ini lalu menggantikannya dengan ringkasan tersebut. Gunakannya dalam satu tugas yang panjang apabila kesinambungan masih diperlukan.
Sentiasa berikan arahan kepada /compact. /compact tanpa arahan meringkaskan berdasarkan gesaan lalai yang tidak mengetahui bahagian kerja yang masih diperlukan. Versi yang diberikan arahan mengekalkan fokus tersebut:
/compact focus on the auth bug fix
/compact keep only the plan and the diffJika anda melakukan compact atas sebab yang sama setiap kali, letakkan arahan berterusan dalam CLAUDE.md projek anda di bawah tajuk # Compact instructions. Dalam sesi baharu, /compact mencetak Not enough messages to compact., yang hanya bermaksud tiada sejarah lagi.
Dua jenis kos sering dikelirukan di sini. Permintaan ringkasan berkongsi awalan anda, jadi ia membaca cache sedia ada dan bukannya memproses semula sejarah. Sebahagian besar masanya digunakan untuk menjana ringkasan. Compacting konteks yang besar tetap merupakan permintaan yang besar kerana perbualan yang diringkaskan ialah inputnya. Giliran selepas compacting bukan bahagian yang lambat: ia membina semula cache untuk gesaan yang jauh lebih pendek.
Dua arahan yang lebih murah juga tersedia. /rewind [description] mengembalikan kod dan perbualan kepada checkpoint; untuk path yang mahu ditinggalkan sepenuhnya, arahan ini lebih baik daripada compacting kerana ia memendekkan kandungan kembali kepada awalan yang sudah dicache. /recap menambah ringkasan sebagai output arahan dan bukannya menggantikan sejarah, jadi awalan yang dicache kekal utuh.
Compaction automatik yang berulang kali dicetuskan akan mencetak perkara berikut:
Autocompact is thrashing: the context refilled to the limit...Compaction berjaya, tetapi output fail atau tool mengisi semula tetingkap beberapa kali berturut-turut, lalu Claude Code berhenti mencuba semula. Pulihkan keadaan dengan membaca fail yang terlalu besar mengikut julat baris, menjalankan /compact dengan fokus yang menggugurkan output besar tersebut, memindahkan kerja itu kepada subagent, atau menggunakan /clear jika perbualan terdahulu sudah tidak diperlukan.
Pelayan MCP ialah overhed tetap
Setiap pelayan MCP yang anda sambungkan menambah saiz setiap permintaan sepanjang sesi. Anda menanggung kos ini sama ada anda memanggilnya atau tidak.
Claude Code mengurangkan kesan ini. Takrif alat MCP ditangguhkan secara lalai. Oleh itu, hanya nama alat dimasukkan ke dalam konteks sehingga Claude menggunakan alat tertentu. Jalankan /context untuk melihat kos sebenar pelayan anda, dan /mcp disable <name> untuk membuang pelayan yang tidak akan digunakan hari ini. Jika anda menjalankan pelayan MCP sendiri pada VPS, had aritmetik yang sama menentukan bilangan alat yang wajar didedahkan oleh satu pelayan.
Lakukan perkara ini pada permulaan sesi. Selagi takrif alat ditangguhkan, menyambungkan atau memutuskan sambungan pelayan hanya menambah kandungan pada perbualan, dan cache kekal tersedia. Jika takrif dimuatkan ke dalam awalan kerana carian alat dimatikan atau pelayan dikecualikan daripada penangguhan, perubahan yang sama menyebabkan permintaan seterusnya membaca semula semuanya.
Tapis output alat yang terperinci sebelum dimasukkan ke dalam konteks
Hasil alat ialah input, dan input dihantar semula pada setiap giliran berikutnya. Ujian yang memaparkan 20,000 token output bukan kos sekali sahaja: anda membayarnya lagi pada setiap giliran sehingga output itu keluar daripada tetingkap.
Tapis pada sumbernya. Hook yang mengecilkan hasil ujian kepada kegagalan sebelum Claude melihatnya menukar output yang panjang itu kepada beberapa ratus token, pada giliran ini dan pada setiap penghantaran semula:
npm test 2>&1 | grep -E "FAIL|Error:" | head -40Hook tidak pernah dimasukkan ke dalam konteks kerana hook berjalan sebagai kod. Lakukan perkara yang sama untuk mana-mana alat yang outputnya melebihi satu skrin. Logik yang sama terpakai pada fail 3,000 baris: minta julat baris yang diperlukan kerana keseluruhan fail kekal dalam tetingkap selepas diterima.
Hadkan skop bacaan ejen dan delegasikan kerja yang bising
Prom yang menyatakan nama fail dan gejala akan membaca fail tersebut. Permintaan terbuka untuk mengemas kini projek akan membaca apa sahaja yang dianggap relevan oleh ejen, dan semua bacaan itu kekal dalam tetingkap konteks.
Delegasikan kerja yang menghasilkan banyak output kepada subejen. Pelaksanaan ujian dan pemprosesan log kedua-duanya menggunakan konteks sebenar; subejen menyimpan output itu dalam tetingkapnya sendiri dan hanya mengembalikan ringkasan. Pertimbangannya: subejen membina cache sendiri tanpa cache hit pada panggilan pertama, dan menggunakan tempoh hayat cache lima minit walaupun dengan langganan. Delegasi melindungi konteks utama anda dengan berkesan. Namun, jumlah token keseluruhan tidak semestinya berkurang.
Jam cache: bekerja dalam sesi berterusan
Caching prompt menjadikan penghantaran semula berpatutan: 0.1x kadar input asas untuk membaca awalan, berbanding 1.25x untuk menulisnya, atau 2x untuk menulisnya dengan tempoh hayat satu jam. Setiap penggunaan menyegarkan entri tanpa kos tambahan, jadi tempoh itu dikira semula dari penggunaan terakhir. Pengganda ini menunjukkan bentuk bil tetapi bukan jumlahnya, jadi gabungkannya dengan kos sebenar sejuta token untuk menukar seluruh tetingkap konteks kepada nilai dalam dolar.
Tempoh hayat yang anda terima bergantung pada cara anda membuat pengesahan. Oleh itu, kenyataan umum bahawa "cache anda tamat selepas lima minit" adalah tidak tepat.
- Dengan langganan Claude, Claude Code meminta tempoh hayat satu jam secara automatik.
- Selepas anda melepasi had pelan dan menggunakan kredit penggunaan, penggunaan itu akan dibilkan, lalu tempoh hayat kembali kepada lima minit.
- Dengan kunci API atau penyedia cloud, tempoh hayat kekal lima minit.
ENABLE_PROMPT_CACHING_1H=1mengaktifkan tempoh hayat satu jam, manakalaFORCE_PROMPT_CACHING_5M=1memaksanya kembali kepada lima minit.
Nasihat tentang rentak kerja adalah sama dalam kedua-dua keadaan: bekerja dalam sesi berterusan kerana tempoh tidak aktif yang melebihi tempoh hayat menyebabkan giliran seterusnya menulis semula seluruh awalan yang telah terkumpul. Sesi Claude Code terpisah dalam tmux tidak dikenakan kos semasa tidak aktif, dan cache hangat ialah perkara yang dikorbankan oleh tempoh tidak aktif itu.
Sesetengah tindakan membuang cache walaupun anda masih bekerja: menukar model, mengubah tahap effort, menghidupkan fast mode, menyambung atau memutuskan sambungan pelayan MCP, mengaktifkan atau menyahaktifkan plugin, menolak keseluruhan tool, menjalankan compact, dan menaik taraf Claude Code. /model biasanya menjadi kejutan kerana setiap model mempunyai cache sendiri. Oleh itu, permintaan seterusnya membaca seluruh sejarah tanpa cache hit walaupun kandungannya sama. Bacaan semula itu dibilkan mengikut kadar model destinasi. Jadi, pertukaran pertengahan sesi kepada Fable mengenakan caj untuk seluruh sejarah terkumpul anda pada kadar input Fable 5 yang diterbitkan.
Mengedit fail, mengedit CLAUDE.md, menggunakan skills dan commands, menjalankan /recap, membuat rewind, serta memulakan subagent semuanya mengekalkan cache. Cache itu terhad kepada satu mesin dan satu direktori. Oleh itu, dua sesi dalam direktori berbeza tidak dapat menggunakan cache satu sama lain. Skop itu mengikuti CLI, bukan akaun anda. Oleh itu, cache ini tidak dibawa ke aplikasi desktop Claude, yang pada Linux ialah pemasangan beta berasingan di samping CLI.
Untuk melihat sama ada caching berfungsi, baca current_usage. cache_creation_input_tokens ditulis pada kadar penulisan cache, manakala cache_read_input_tokens disediakan pada kira-kira satu persepuluh kadar input standard. Nisbah bacaan kepada penciptaan yang tinggi menunjukkan keadaan yang baik. Jika penciptaan kekal tinggi dari satu giliran ke giliran berikutnya, ada sesuatu dalam awalan anda yang terus berubah.
Adakah tetingkap konteks yang lebih besar menyelesaikan masalah ini?
Sebahagiannya. Beberapa model semasa menyokong tetingkap konteks sebanyak 1 million token, dan pemampatan berfungsi dengan cara yang sama pada had yang lebih besar. Ekonomi penggunaan tidak berubah kerana gesaan penuh masih dihantar semula dan masih dicaj pada setiap giliran. Tetingkap yang lebih besar menentukan masa anda terpaksa bertindak; kebersihan konteks menentukan kos. Jika bil ialah masalahnya dan bukannya had, pelan Claude yang sesuai dengan cara anda bekerja menentukan sama ada anda membelanjakan dolar atau elaun pelan.
Penyuntingan konteks dan pemadatan dalam API ialah dua perkara yang berbeza
Jika anda membangunkan ejen sendiri pada Messages API, tiada arahan slash dan anda perlu melaksanakannya sendiri. Peruntukkan masa untuk kerja ini sejak awal kerana API tidak mempunyai peringkat percuma selain kredit pendaftaran yang kecil, jadi setiap giliran sejarah yang tidak dipangkas akan dicaj sepenuhnya. Penyedia yang anda gunakan menentukan pengiraan kos itu sebelum sebarang pemangkasan berlaku. Jika pilihan masih terbuka, bandingkan kos beban kerja yang sama pada kedua-dua API dan jangan hanya membandingkan kadar utama bagi setiap token. Dua ciri sebelah pelayan boleh melaksanakan tugas ini, tetapi kedua-duanya bukan ciri yang sama.
Penyuntingan konteks mengosongkan kandungan tertentu daripada sejarah perbualan secara terpilih apabila sejarah itu berkembang. Setiap hasil yang dikosongkan digantikan dengan teks ruang letak supaya Claude mengetahui bahawa sesuatu telah dibuang. Ciri ini masih dalam beta: hantar anthropic-beta: context-management-2025-06-27 dan konfigurasikan strategi di bawah context_management.edits. clear_tool_uses_20250919 mengosongkan hasil alat, manakala clear_thinking_20251015 mengurus blok pemikiran. Nilai lalai trigger ialah 100,000 token input, keep ialah 3 penggunaan alat terakhir, dan clear_tool_inputs ialah false. Oleh itu, input dikekalkan dan hanya hasil yang dibuang.
Pemadatan menjana ringkasan dan menggantikan keseluruhan sejarah perbualan dengan ringkasan tersebut. Ciri ini juga masih dalam beta: hantar anthropic-beta: compact-2026-01-12 dan gunakan jenis edit compact_20260112. Pencetus lalai ialah {"type": "input_tokens", "value": 150000}, dan nilainya mestilah sekurang-kurangnya 50,000.
Pemadatan mempunyai satu peraturan serah tugas yang boleh menyebabkan ejen gagal tanpa disedari. Respons bermula dengan blok kandungan compaction yang mengandungi ringkasan, diikuti blok teks biasa. Anda mesti menghantar semula blok itu dalam permintaan seterusnya. API kemudiannya membuang setiap blok kandungan yang mendahuluinya. Dalam amalan, tambahkan keseluruhan response.content, bukan teksnya sahaja.
Dokumentasi Anthropic menyatakan bahawa pemadatan sebelah pelayan ialah strategi utama untuk mengurus konteks dalam perbualan yang berjalan lama, manakala penyuntingan konteks ialah pilihan untuk mengawal kandungan yang hendak dikosongkan dengan lebih terperinci. Semak sokongan model terlebih dahulu. Model Opus, Sonnet dan Fable semasa menyokong pemadatan; claude-haiku-4-5 tidak menyokongnya, dan halaman pemadatan mengandungi senarai semasa. Kedua-dua beta ini tidak mengawal /compact milik Claude Code. Dokumentasinya menerangkan ciri itu sebagai permintaan ringkasan sekali sahaja yang dihantar oleh klien.
FAQ
Mengapa sesi Claude Code saya menjadi lebih perlahan dan lebih mahal semakin lama ia berjalan?
Kerana keseluruhan perbualan dihantar semula pada setiap giliran. Oleh itu, soalan satu baris dalam sesi yang telah dibuka sepanjang hari membawa keseluruhan kandungan hari itu. Prompt caching mengekalkan kos rendah selagi cache masih aktif, iaitu pada kadar input asas 0.1x untuk bacaan. Apabila giliran tidak mendapat padanan cache, awalan yang sama ditulis semula pada kadar 1.25x. Jalankan /context untuk melihat perkara yang memenuhi tetingkap konteks, dan baca perkara yang dicaj dalam sesi Claude Code untuk memahami mekanismenya.
Apakah perbezaan antara /clear dengan /compact dalam Claude Code?
/clear memulakan perbualan baharu dengan konteks kosong. Perintah ini tidak menghantar sebarang permintaan, jadi tiada caj dikenakan. Perintah ini sesuai digunakan antara tugasan yang tidak berkaitan. /compact mengekalkan perbualan yang sama dan menggantikan sejarahnya dengan ringkasan. Oleh itu, perintah ini sesuai digunakan dalam satu tugasan yang panjang. Berikan fokus kepadanya, seperti dalam /compact keep only the plan and the diff, kerana arahan itu menentukan perkara yang dikekalkan.
Bagaimanakah saya boleh melihat perkara yang menggunakan tetingkap konteks Claude Code saya?
Jalankan /context, atau /context all untuk mendapatkan pecahan penuh bagi setiap item. Perintah ini memaparkan prompt sistem, definisi alat, pelayan MCP, fail memori dan sejarah sebagai grid berwarna, bersama cadangan untuk alat yang menggunakan banyak konteks serta memori yang berlebihan. Dalam pelan berbayar, /usage turut mengaitkan penggunaan terkini dengan skill, subagen dan pelayan MCP tertentu.
Patutkah saya menggunakan tetingkap konteks 1 juta token dan bukannya melakukan pemadatan?
Tetingkap yang lebih besar hanya menangguhkan masalah, bukan menyelesaikannya. Beberapa model semasa menggunakan tetingkap konteks 1 juta token, termasuk Opus 4.8 dan Sonnet 5, dan pemadatan berfungsi dengan cara yang sama pada model tersebut. Setiap giliran masih menghantar semula keseluruhan prompt dan masih dikenakan caj, jadi perbualan 400,000 token tetap mahal sama ada muat atau tidak.
Apakah perbezaan antara penyuntingan konteks dengan pemadatan dalam Claude API?
Penyuntingan konteks memadam kandungan lama secara terpilih, terutamanya hasil alat, dan meninggalkan teks ruang letak pada setiap lokasi supaya Claude mengetahui bahawa kandungan itu telah dibuang. Pemadatan menjana ringkasan dan menggantikan keseluruhan sejarah dengan ringkasan tersebut. Dokumentasi Anthropic menyebut pemadatan sebagai strategi utama untuk perbualan yang berjalan lama, manakala penyuntingan konteks digunakan sebagai pilihan terperinci. Kedua-duanya ialah ciri beta dengan header masing-masing, dan kedua-duanya berasingan daripada /compact Claude Code.