Optimasi Token Claude Code: turunkan biaya dengan /usage tanpa menurunkan kualitas
Kurangi token Claude Code dengan /usage, CLAUDE.md, hooks, subagent, input terarah, dan OpenTelemetry.
Optimasi token di Claude Code bukan sekadar menghemat biaya. Saat context terlalu besar, respons menjadi lebih lambat, asumsi lama ikut masuk ke task baru, dan Claude membaca ulang log, diff, serta keputusan yang sudah tidak relevan. Target yang lebih tepat adalah menjaga kualitas kerja dengan context yang lebih kecil dan lebih bersih.
Per Juni 2026, titik masuk praktisnya adalah /usage. Referensi command resmi menjelaskan /usage sebagai command untuk melihat session cost, plan usage limits, dan activity stats. /cost dan /stats ada sebagai alias, tetapi untuk artikel dan kebiasaan tim, /usage lebih jelas. Di plan Pro, Max, Team, dan Enterprise, layar ini juga bisa mengatribusikan usage ke skills, subagents, plugins, dan MCP servers.
Panduan ini memakai empat lapisan: observasi, kurangi context dasar, pisahkan pekerjaan yang berisik, lalu ukur workflow tim yang berulang. Hook adalah script atau endpoint yang berjalan pada event lifecycle Claude Code. Subagent adalah context terpisah untuk task yang sempit. Harness adalah kerangka kerja yang membuat kerja agent aman dan bisa diulang.
flowchart LR
A["Observasi: /usage dan /context"] --> B["Kurangi: CLAUDE.md dan input terarah"]
B --> C["Pisahkan: hooks / skills / subagents"]
C --> D["Ukur: OpenTelemetry dan aturan tim"]
Mulai dari /usage
Tidak perlu menjalankan /usage setelah setiap prompt. Gunakan saat sesi terasa lambat, setelah output tool yang besar, sebelum handoff, atau setelah workflow yang akan diulang. Pasangkan dengan /context untuk melihat apakah biaya berasal dari task sekarang, history lama, memory file, atau tool context.
Bagian billing perlu dipisahkan dari diagnosis kerja. Session cost di /usage adalah estimasi lokal dari jumlah token. Pengguna API harus memastikan tagihan resmi di Claude Console. Untuk pengguna subscription, angka dollar di session tidak boleh dibaca sebagai tagihan langsung; plan usage bar dan activity attribution lebih berguna untuk batas harian.
# Jalankan di dalam Claude Code
/usage
/context
# Saat percakapan panjang tetapi pekerjaan harus lanjut
/compact Preserve changed files, failing tests, decisions, and unresolved questions.
# Saat pindah ke task yang tidak berkaitan
/clear
/compact merangkum state penting agar pekerjaan bisa lanjut. /clear memulai context baru. Clear terlalu awal membuat keputusan hilang; tidak pernah clear membuat task baru membayar context lama.
Jaga memory yang selalu dimuat tetap pendek
Token tidak hanya datang dari prompt terakhir. Conversation history, CLAUDE.md, auto memory, log, output tool, MCP server, dan catatan investigasi juga ikut dihitung. Pisahkan informasi menjadi tiga kelompok.
| Jenis | Tempat terbaik | Contoh |
|---|---|---|
| Selalu diperlukan | CLAUDE.md pendek | Build, test, batasan keras |
| Diperlukan untuk task ini | Percakapan dan /compact | File berubah, test gagal, keputusan terbuka |
| Bisa dibuang setelah dilihat | Output command terfilter | Log panjang, generated diff, hasil search luas |
Dokumentasi memory resmi menjelaskan bahwa CLAUDE.md dimuat sebagai context. Makin panjang file, makin besar biaya tetap setiap sesi. Import bisa membantu merapikan struktur, tetapi tidak menghemat token jika semua konten tetap dimuat saat startup.
# CLAUDE.md
## Project commands
- Build: npm run build
- Test: npm run test
- Type check: npm run typecheck
## Fast navigation
- API code: src/api/
- UI components: src/components/
- Tests: tests/
## Avoid by default
- Do not scan node_modules/, dist/, coverage/, or generated clients.
- Do not paste full logs. Ask for the failing command and relevant lines.
## Compact instructions
When compacting, preserve changed files, failing tests, decisions, credentials policy, and next actions.
Checklist review yang panjang, aturan terjemahan, runbook migrasi, atau release playbook lebih cocok menjadi skill atau dokumen terpisah. Skill dimuat saat dibutuhkan; CLAUDE.md masuk ke context sejak awal sesi.
Filter input sebelum dibaca Claude
Pemborosan paling umum adalah menempel seluruh log atau seluruh diff. Claude butuh bukti, bukan dump. Simpan artefak penuh di disk, lalu kirim dulu baris yang bisa memengaruhi keputusan berikutnya.
# Jangan kirim seluruh production log: ambil request ID dan error sekitar
tail -n 800 logs/app.log | grep -E -n -C 4 "request_id=abc123|ERROR|WARN"
# Lihat ukuran PR sebelum membaca diff penuh
git diff --stat
git diff -- src/auth.ts tests/auth.test.ts
# Simpan output test penuh, kirim area failure ke Claude
npm test 2>&1 | tee test.log
grep -E -n -C 6 "FAIL|ERROR|Error|failed|Assertion" test.log | head -160
Ini bukan menyembunyikan informasi. Ini hanya menentukan potongan pertama yang dibaca Claude. Jika belum cukup, tambahkan file lain atau baris log berikutnya.
Gunakan hooks dengan hati-hati
Jika filter yang sama sering dipakai, jadikan hook. Hook tidak boleh menyembunyikan kegagalan dan tidak sebaiknya menyetujui command berisiko secara diam-diam. Mulai dengan ask, cek command yang ditulis ulang, lalu uji lokal.
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/filter-test-output.sh"
}
]
}
]
}
}
#!/usr/bin/env bash
set -euo pipefail
input=$(cat)
cmd=$(echo "$input" | jq -r '.tool_input.command // ""')
case "$cmd" in
npm\ test*|pnpm\ test*|pytest*|go\ test*)
filtered="$cmd 2>&1 | grep -E -n -C 6 '(FAIL|ERROR|Error|failed|Assertion)' | head -160"
jq -n --arg command "$filtered" '{
hookSpecificOutput: {
hookEventName: "PreToolUse",
permissionDecision: "ask",
permissionDecisionReason: "Run test command with filtered output",
updatedInput: { command: $command }
}
}'
;;
*)
echo '{}'
;;
esac
Contoh ini membutuhkan jq. Untuk tim, simpan juga log penuh dan pertahankan exit code asli. Hook hanya berguna jika mengurangi noise tanpa mengurangi bukti.
Pisahkan pekerjaan yang verbose
Subagent berguna saat prosesnya panjang tetapi main session hanya perlu kesimpulan pendek: cek dokumentasi resmi dan kembalikan fakta yang berubah, periksa sepuluh file locale dan kembalikan blocker, atau jalankan test gagal dan ringkas stack trace pertama yang bisa ditindaklanjuti.
Jangan membuat subagent hanya karena bisa. Setiap subagent punya context, memory, tools, dan biaya sendiri. Tujuannya menjaga main decision context tetap bersih, bukan memparalelkan task yang masih kabur. Skill juga begitu: keluarkan playbook panjang yang jarang dipakai dari CLAUDE.md.
Monitor usage tim
Untuk satu developer, /usage dan /context biasanya cukup. Untuk workflow tim, OpenTelemetry mengubah cost, token count, model, duration, dan tool activity menjadi data bersama. Mulai dengan console exporter sebelum menyambungkan collector atau dashboard.
export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_METRICS_EXPORTER=console
export OTEL_LOGS_EXPORTER=console
export OTEL_METRIC_EXPORT_INTERVAL=10000
export OTEL_LOGS_EXPORT_INTERVAL=5000
claude
Ukur kualitas bersama usage. Jika token turun 30% tetapi correction round dan review defect naik, prosesnya memburuk.
Use case praktis
Investigasi log
Kirim request ID, error terbaru, timestamp, expected behavior, dan beberapa baris sekitar. Mulai kecil, lalu perluas hanya jika bukti kurang.
Code review
Berikan git diff --stat, changed files, test output, dan fokus review. PR besar sebaiknya dibagi menjadi security, performance, dan compatibility pass.
Publishing multibahasa
Simpan keputusan artikel canonical di main session. Translation, link, description length, dan CTA check bisa berjalan di context terpisah.
Hari training
Saat workshop, concurrent usage lebih tinggi. Aturan seperti “baca lima file dulu”, “maksimal 160 baris failure”, dan “jelaskan alasan memperluas scope” membuat biaya dan ritme kelas stabil.
Pitfall yang perlu dihindari
- Hanya menulis
/cost. Gunakan/usage, lalu jelaskan/costdan/statssebagai alias. - Memotong bukti. Reproduction, expected output, failing command, dan decision harus tetap ada.
- Menjadikan CLAUDE.md buku catatan operasional. Workflow jarang lebih cocok sebagai skill.
- Mengaktifkan terlalu banyak MCP. Cek
/mcpdan gunakan CLI jika cukup. - Menyembunyikan failure lewat hook. Simpan log penuh dan tampilkan potongan terfilter.
- Menganggap subagent selalu lebih murah. Ia mengisolasi noise, tetapi punya context sendiri.
Script handoff kecil
Script Node.js tanpa dependency ini membuat brief pendek dari changed files, ukuran diff, dan baris failure test.
#!/usr/bin/env node
import { execFileSync } from "node:child_process";
import { existsSync, readFileSync } from "node:fs";
function git(args) {
return execFileSync("git", args, { encoding: "utf8" }).trim();
}
const testLogPath = process.argv[2];
const changedFiles = git(["diff", "--name-only"])
.split(/\r?\n/)
.filter(Boolean);
const diffStat = git(["diff", "--stat"]);
const testLog = testLogPath && existsSync(testLogPath)
? readFileSync(testLogPath, "utf8")
: "";
const failures = testLog
.split(/\r?\n/)
.filter((line) => /(FAIL|ERROR|Error|failed|Assertion)/.test(line))
.slice(0, 80);
console.log("# Claude handoff brief\n");
console.log("## Changed files");
console.log(changedFiles.length ? changedFiles.map((file) => `- ${file}`).join("\n") : "- None");
console.log("\n## Diff stat");
console.log(diffStat || "No diff");
console.log("\n## Test failures");
console.log(failures.length ? failures.map((line) => `- ${line}`).join("\n") : "- No matching failure lines");
node scripts/claude-brief.mjs test.log > claude-brief.md
Dokumentasi resmi yang dicek
- Commands untuk
/usage,/context,/compact, dan/clear. - Manage costs effectively untuk cost, MCP, hooks, skills, subagents, dan model effort.
- How Claude remembers your project untuk CLAUDE.md dan auto memory.
- Hooks reference dan Monitoring untuk PreToolUse dan OpenTelemetry.
Baca juga optimasi kecepatan, panduan permission, dan panduan harness engineering.
Hasil yang dicoba
Dalam rewrite ini, saya memakai artikel Jepang sebagai canonical, mengecek dokumentasi resmi, lalu memperbarui sepuluh locale. Perbaikan paling terasa adalah memisahkan permanent memory, task state, dan disposable logs. Brief pendek berisi changed files, failure lines, dan verification status memberi jawaban lebih stabil daripada menempel seluruh output test.
Untuk prompt dan material setup yang bisa dipakai ulang, mulai dari ClaudeCodeLab products. Untuk rollout tim, permission, review policy, telemetry, dan training, gunakan Claude Code training and consultation.
PDF gratis: cheatsheet Claude Code
Masukkan email dan unduh satu halaman berisi command, kebiasaan review, dan workflow aman.
Kami menjaga datamu dan tidak mengirim spam.
Tentang penulis
Masa
Engineer yang berfokus pada workflow Claude Code praktis dan adopsi tim.
Artikel terkait
Permission safety ladder Claude Code: perluas akses tanpa kehilangan kontrol
Naik dari read-only ke edit terbatas, command bukti, dan cek deploy dengan kontrol yang jelas.
Claude Code Small PR Proof Pack: perubahan kecil yang mudah direview
Paket bukti untuk PR Claude Code: diff, check, URL publik, jalur CTA, dan rollback.
Review gate Claude Code sebelum commit: diff, test, URL publik, dan CTA
Cara memakai Claude Code sebelum commit: diff scope, build, URL publik, link Gumroad, CTA konsultasi, missing test, dan file tidak terkait.