Pemangkasan Sesi (Session Pruning)
Pemangkasan sesi memotong hasil alat yang lama dari konteks dalam memori tepat sebelum setiap panggilan LLM. Ini tidak menulis ulang riwayat sesi yang ada di disk (*.jsonl).
Kapan Ini Berjalan
- Ketika
mode: "cache-ttl"diaktifkan dan panggilan Anthropic terakhir untuk sesi tersebut lebih lama darittl. - Hanya memengaruhi pesan yang dikirim ke model untuk permintaan tersebut.
- Hanya aktif untuk panggilan API Anthropic (dan model Anthropic di OpenRouter).
- Untuk hasil terbaik, sesuaikan
ttldengancacheControlTtlmodel Anda. - Setelah pemangkasan, jendela TTL direset sehingga permintaan berikutnya tetap menggunakan cache sampai
ttlkedaluwarsa kembali.
Default Cerdas (Anthropic)
- Profil OAuth atau setup-token: mengaktifkan pemangkasan
cache-ttldan menyetel heartbeat ke1h. - Profil Kunci API: mengaktifkan pemangkasan
cache-ttl, menyetel heartbeat ke30m, dan defaultcacheControlTtlke1hpada model Anthropic. - Jika Anda menyetel salah satu nilai ini secara eksplisit, OpenClaw tidak akan menimpanya.
Apa yang Diperbaiki (Biaya + Perilaku Cache)
- Mengapa dipangkas: Prompt caching Anthropic hanya berlaku di dalam jendela TTL. Jika sesi tidak aktif melampaui TTL, permintaan berikutnya akan menyimpan cache ulang seluruh prompt kecuali Anda memotongnya terlebih dahulu.
- Apa yang menjadi lebih murah: pemangkasan mengurangi ukuran cacheWrite untuk permintaan pertama setelah TTL kedaluwarsa.
- Mengapa reset TTL penting: setelah pemangkasan berjalan, jendela cache direset, sehingga permintaan tindak lanjut dapat menggunakan kembali prompt yang baru saja disimpan di cache daripada menyimpan ulang seluruh riwayat lagi.
- Apa yang tidak dilakukan: pemangkasan tidak menambahkan token atau biaya “ganda”; ini hanya mengubah apa yang disimpan di cache pada permintaan pertama setelah TTL terlampaui.
Apa yang Bisa Dipangkas
- Hanya pesan
toolResult(hasil alat). - Pesan pengguna (user) + asisten (assistant) tidak pernah dimodifikasi.
- Sejumlah
keepLastAssistantspesan asisten terakhir dilindungi; hasil alat setelah batas tersebut tidak akan dipangkas. - Jika tidak ada cukup pesan asisten untuk menetapkan batas, pemangkasan akan dilewati.
- Hasil alat yang berisi blok gambar akan dilewati (tidak pernah dipotong/dikosongkan).
Estimasi Jendela Konteks (Context Window)
Pemangkasan menggunakan estimasi jendela konteks (karakter ≈ token × 4). Jendela dasar diselesaikan dalam urutan berikut:- Penimpaan
models.providers.*.models[].contextWindow. - Definisi model
contextWindow(dari registri model). - Default
200000token.
agents.defaults.contextTokens disetel, nilai tersebut diperlakukan sebagai batas (minimum) pada jendela yang diselesaikan.
Mode
cache-ttl
- Pemangkasan hanya berjalan jika panggilan Anthropic terakhir lebih lama dari
ttl(default5m). - Saat berjalan: perilaku pemotongan lunak (soft-trim) + pengosongan keras (hard-clear) yang sama seperti sebelumnya.
Pemangkasan Lunak vs Keras
- Pemotongan Lunak (Soft-trim): hanya untuk hasil alat yang berukuran sangat besar.
- Menyimpan bagian awal (head) + akhir (tail), menyisipkan
..., dan menambahkan catatan dengan ukuran aslinya. - Melewati hasil yang memiliki blok gambar.
- Menyimpan bagian awal (head) + akhir (tail), menyisipkan
- Pengosongan Keras (Hard-clear): mengganti seluruh hasil alat dengan
hardClear.placeholder.
Pemilihan Alat
tools.allow/tools.denymendukung wildcard*.deny(tolak) menang atasallow(izinkan).- Pencocokan tidak peka huruf besar-kecil (case-insensitive).
- Daftar izinkan kosong berarti semua alat diizinkan.
Interaksi dengan Batas Lainnya
- Alat bawaan sudah memotong output mereka sendiri; pemangkasan sesi adalah lapisan tambahan yang mencegah obrolan yang berjalan lama menumpuk terlalu banyak output alat dalam konteks model.
- Pemadatan (Compaction) berbeda: pemadatan meringkas dan menetap (persist), pemangkasan bersifat sementara per permintaan. Lihat /id-ID/concepts/compaction.
Default (Saat Diaktifkan)
ttl:"5m"keepLastAssistants:3softTrimRatio:0.3hardClearRatio:0.5minPrunableToolChars:50000softTrim:{ maxChars: 4000, headChars: 1500, tailChars: 1500 }hardClear:{ enabled: true, placeholder: "[Konten hasil alat lama telah dibersihkan]" }