Optimasi biayaPanduan
Penggunaan token Claude Code: jauhkan output tool dari konteks
Bagaimana hook PreToolUse dan plugin context-mode menjaga log pengujian keluar dari konteks Claude Code, plus perkiraan biaya sesi dengan dan tanpa pemfilteran.

Di halaman ini
Agen Anda menjalankan test suite tiga kali, dan tagihannya lebih besar daripada tugasnya. Penyebabnya jarang kode yang ditulisnya. Ini log pengujian: begitu hasil tool masuk ke konteks Claude Code, setiap permintaan berikutnya membawanya lagi. Solusinya adalah memperkecil output tool sebelum model melihatnya. Cara resminya adalah hook PreToolUse pada Bash; cara pihak ketiga adalah plugin context-mode. Keduanya ada di bawah, dengan perkiraan biaya untuk sesi panjang pada model CheapTokens.
Mengapa satu log dibayar berkali-kali#
Menurut halaman biaya Claude Code (https://code.claude.com/docs/en/costs, diperiksa 23 Oktober 2026), Claude Code mengirim percakapan lengkap dengan setiap permintaan, dan setiap penggunaan tool memicu permintaan lain yang membawa hasil tool. Prompt caching membaca ulang riwayat dengan tarif cached yang lebih murah, tetapi tokennya tetap ada.
Misalkan agen menjalankan npm test dan mendapatkan log 10.000 baris. Dokumentasi mengatakan log seperti itu bisa puluhan ribu token. Asumsikan 30.000 token. Apa pun yang Anda lakukan selanjutnya, 30.000 token itu menjadi bagian dari input langkah 11, langkah 12, langkah 13, dan seterusnya sampai Anda /clear atau compact. Dan itulah jebakannya: log berguna untuk satu langkah, dan Anda membayarnya untuk tiga puluh langkah.
Perbaikan 1: hook PreToolUse yang memfilter output pengujian#
Halaman dokumentasi yang sama menyarankan hook sebagai praproses: hook PreToolUse pada Bash menulis ulang perintah pengujian (npm test, pytest, go test) agar disalurkan melalui grep -. Agen kemudian hanya melihat kegagalan plus beberapa baris konteks, bukan 10.000 baris titik hijau. Dokumentasi mengatakan ini dapat mengubah puluhan ribu token menjadi ratusan.

Ini skrip dari halaman dokumentasi tersebut (diperiksa 23 Oktober 2026). Ini membutuhkan jq. Buat folder dengan mkdir -, simpan skrip sebagai ~/ dan jalankan chmod +x padanya:
#!/bin/bash
input=$(cat)
cmd=$(echo "$input" | jq -r '.tool_input.command')
pattern='^(npm test|pytest|go test)( [^;&|<>`$#\\[:cntrl:]]*)?$'
if [[ "$cmd" =~ $pattern ]]; then
filtered_cmd="$cmd 2>&1 | grep -A 5 -E '(FAIL|ERROR|error:)' | head -100"
echo "$input" | jq --arg filtered "$filtered_cmd" '{hookSpecificOutput: {hookEventName: "PreToolUse", updatedInput: (.tool_input + {command: $filtered})}}'
else
echo "{}"
fiLalu daftarkan di ~/:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [{ "type": "command", "command": "~/.claude/hooks/filter-test-output.sh" }]
}
]
}
}Untuk memeriksa apakah berfungsi, buka /hooks di dalam Claude Code dan cari entri PreToolUse, atau mulai dengan claude - dan minta agen menjalankan npm test. Ketika hook telah menulis ulang perintah, file memiliki baris modified tool input keys dengan field command. Jika pengujian lulus, outputnya kosong, sehingga agen mendapatkan keberhasilan yang tenang; sesuaikan pola jika runner Anda mencetak kegagalan secara berbeda.
Perbaikan 2: context-mode untuk hasil tool yang besar#
Hook hanya mencakup perintah yang dapat Anda salurkan. Snapshot halaman dari Playwright atau daftar dua puluh issue GitHub berasal dari tool MCP. Itulah yang disasar context-mode. Menurut README-nya (https://github.com/mksglu/context-mode, diperiksa 23 Oktober 2026; tidak menunjukkan versi atau tanggal), ini adalah server MCP dan plugin yang menjaga output tool mentah keluar dari context window, menyimpan status sesi di SQLite dan merutekan panggilan tool melalui hook. Ini membutuhkan Claude Code v1.0.33 atau lebih baru, dan lisensinya adalah Elastic License 2.0, yang bukan lisensi open-source OSI.
Instal di dalam Claude Code:
/plugin marketplace add mksglu/context-mode
/plugin install context-mode@context-modeRestart atau jalankan /reload-plugins, lalu verifikasi dengan /. Varian hanya-MCP, claude mcp add context-, menambahkan tool tetapi tidak memiliki perutean otomatis.
Proyek ini melaporkan pengurangan besar: 315 KB menjadi 5,4 KB (98%), snapshot halaman 56 KB menjadi 299 byte, 986 KB menjadi 62 KB. Itu adalah angka penulisnya sendiri: anggap sebagai batas atas dan ukur pada sesi Anda sendiri dengan /context sebelum dan sesudah.
Berapa biaya sesi panjang, dengan dan tanpa pemfilteran#
Berikut aritmetika pada satu sesi yang diasumsikan. Ini sesi coding 40 langkah pada konteks dasar rata-rata 20.000 token, 500 token output per langkah, dan tiga kali pengujian, pada langkah 10, 20 dan 30. Setiap log mentah adalah 30.000 token; versi terfilter adalah 500.
- Log dari langkah 10 dikirim ulang dalam 30 permintaan setelahnya: 30 × 30.000 = 900.000 token. Langkah 20: 20 × 30.000 = 600.000. Langkah 30: 10 × 30.000 = 300.000. Input tambahan: 900.000 + 600.000 + 300.000 = 1.800.000.
- Terfilter: (30 + 20 + 10) × 500 = 30.000 input tambahan.
- Input dasar: 40 × 20.000 = 800.000. Output: 40 × 500 = 20.000.
- Jadi sesinya adalah 800.000 + 1.800.000 = 2.600.000 token input tanpa filter dan 800.000 + 30.000 = 830.000 dengan filter, dengan 20.000 token output baik dengan maupun tanpa filter.
Perhitungan menghitung setiap token input pada tarif penuh. Caching menurunkan angka sebenarnya, tetapi menurunkan kedua kasus dengan logika yang sama. Harga langsung untuk MiniMax-M2.7 (MiniMaxAI/, konteks 180K, hingga 8.192 token output), yang merupakan model yang cocok untuk loop agen yang berat input seperti ini, ada di grafik di bawah.
Asumsi: 40 langkah, konteks dasar 20.000 token, 500 token output per langkah, tiga kali pengujian 30.000 token (terfilter: 500).
Pada MiniMax-M2.7 sesinya berbiaya $0.133 tanpa filter dan $0.0445 dengan filter, dan secara total, dengan input dan output dihitung bersama, lebih murah daripada harga referensi OpenRouter. Kira-kira dua pertiga dari input dalam kasus tanpa filter adalah log yang dibaca agen sekali.
Intinya bukanlah dolar yang tepat. Intinya adalah filter menghilangkan sekitar 1.770.000 dari 2.600.000 token input (2.600.000 − 830.000 = 1.770.000) pada model apa pun, dan model yang lebih murah menurunkan harga setiap token yang tersisa.
Jalankan Claude Code pada model CheapTokens#
Claude Code berbicara protokol Anthropic Messages, dan CheapTokens mendukungnya. Base URL untuk Claude Code tidak memiliki /v1. Pengaturan lengkap ada di cara menghubungkan Claude Code ke CheapTokens. Versi singkatnya, dengan kunci placeholder:
export ANTHROPIC_BASE_URL=https://api.cheaptokens.dev
export ANTHROPIC_AUTH_TOKEN=YOUR_CHEAPTOKENS_KEY
export ANTHROPIC_MODEL=MiniMaxAI/MiniMax-M2.7
claudeGunakan id lengkap dari dokumentasi; nama pendek dari tabel harga tidak diterima oleh API. Harga untuk setiap model ada di halaman harga. Untuk kebiasaan lain yang memangkas tagihan Claude Code (/clear, /compact, /mcp, subagen), lihat Cara membuat Claude Code lebih murah. Untuk melihat bagaimana input dan output dihitung pada permintaan nyata, baca Berapa banyak token yang digunakan permintaan API.
Daftar periksa singkat#
- Jalankan
/contextdalam sesi panjang dan lihat apa yang memakan ruang. - Tambahkan hook Bash untuk perintah pengujian; konfirmasi penulisan ulang di
/hooksatau log debug. - Jika tool MCP mengembalikan snapshot besar, coba context-mode dan bandingkan
/contextsebelum dan sesudah. /cleardi antara tugas yang tidak terkait, agar log lama berhenti ikut terbawa.



