Menghemat Miliyaran Token Claude Code: Bedah Tuntas RTK, Headroom, dan WOZCODE

Menghemat Miliyaran Token Claude Code: Bedah Tuntas RTK, Headroom, dan WOZCODE

Oleh Reggi, 27 Aug 2026

Setiap kali AI coding agent menjalankan perintah terminal, context window Anda sebenarnya sedang "dirampok". Perintah sederhana seperti melihat status repositori atau membaca berkas log menyetor ratusan baris teks sampah. Ada header dekoratif, spasi perataan, metadata komit, hingga jalur direktori yang diulang terus-menerus. Output ini dirancang untuk dibaca mata manusia, bukan untuk dicerna oleh model bahasa besar. Ketika tagihan API Anthropic mulai membengkak akibat CLI noise yang memenuhi context window, perdebatan teknis tentang efisiensi seperti rtk vs headroom vs woze code (WOZCODE) menjadi topik krusial bagi para engineer yang ingin menyelamatkan kantong mereka.

Pada sebuah codebase produksi berbasis TypeScript dan Next.js, pemantauan terhadap 26.779 perintah CLI dan 2.246 permintaan API selama sebulan membuktikan satu hal: miliaran token melayang gratis hanya untuk memproses output terminal yang tidak mempengaruhi keputusan AI berikutnya. Untuk mengatasi masalah ini, komunitas mengembangkan dua pendekatan berbeda. Pendekatan pertama adalah arsitektur dua lapis menggunakan RTK dan Headroom, sedangkan pendekatan kedua adalah mengganti tool bawaan menggunakan plugin WOZCODE.


Lapisan 1: Menyaring Noise Perintah via RTK

RTK (Rust Token Killer) adalah binary berbasis Rust yang bertindak sebagai pemotong sampah di tingkat terminal. Sistem ini bekerja sebagai kait PreToolUse pada Claude Code. Saat agent memanggil perintah Bash, kait ini mencegat dan mengubah perintah secara transparan sebelum dieksekusi.

bash
# Alur pencegatan perintah oleh RTK # 1. Agent memanggil: git status # 2. PreToolUse hook aktif # 3. Hook mengubah perintah menjadi: rtk git status # 4. RTK mengeksekusi git status dan menyaring output # 5. Output terkompresi masuk ke context window (hingga 80% lebih kecil)

Ada empat strategi utama yang diterapkan oleh RTK untuk menghemat token antara 60% hingga 90% per perintah:

  1. Smart Filtering: Membuang teks boilerplate yang tidak relevan.
  2. Grouping: Menggabungkan entitas atau baris yang serupa.
  3. Truncation: Memotong output panjang namun tetap mempertahankan konteks paling krusial (misalnya hanya menyisakan bagian log build yang error).
  4. Deduplication: Menghapus baris berulang yang tidak menambah informasi baru.

Dengan overhead eksekusi di bawah 10ms per perintah, agent AI bahkan tidak menyadari keberadaan RTK. Agent tetap melihat antarmuka tool yang sama dan menerima output dengan konteks semantik yang identik.


Lapisan 2: Kompresi Sesi dan Caching via Headroom

Jika RTK bekerja di tingkat terminal sebelum output masuk ke context window, Headroom bekerja di tingkat jaringan. Headroom adalah proxy lokal yang berjalan di localhost:8787, berada tepat di antara agent coding dan provider API Anthropic.

┌──────────┐     ┌─────────────┐     ┌─────────┐     ┌──────────────┐     ┌──────────────┐
│  Agent   │────▶│  RTK hook   │────▶│  Bash   │────▶│   Headroom   │────▶│  Anthropic   │
│          │     │  (rewrite)  │     │ (runs)  │     │   (compress) │     │  API         │
└──────────┘     └─────────────┘     └─────────┘     └──────────────┘     └──────────────┘
Layer:           PreToolUse           Shell            API proxy            Provider
Savings:         60-90%                               16-59%

Headroom membaca jenis konten secara cerdas (content-aware). Array JSON dikompresi sebesar 83-90%, output shell sebesar 85%, dan log build hingga 94%. Menariknya, berkas source code dan hasil pencarian grep sengaja dibiarkan utuh tanpa kompresi lossy agar kemampuan nalar (reasoning) model terhadap kode tidak rusak.

Keunggulan terbesar Headroom terletak pada kestabilan Prefix Cache. Fitur prefix caching dari Anthropic memberikan diskon token input sebesar 90% jika bagian awal prompt cocok dengan permintaan sebelumnya. Headroom mengompresi hasil tool tanpa mengubah system prompt atau riwayat percakapan awal. Hasilnya, prefix tetap stabil dan mencatatkan hit rate cache hingga 96%.


Pendekatan Alternatif: WOZCODE Plugin

Berbeda dengan kombinasi RTK dan Headroom yang bermain di level hook dan proxy jaringan, WOZCODE memilih jalur integrasi langsung sebagai plugin Claude Code. WOZCODE mengganti tool berkas bawaan Claude Code dengan versi yang sudah dioptimasi sejak awal.

WOZCODE menyediakan dua agent utama:

  • woz:code: Agent utama untuk aktivitas koding, pengubahan berkas, pencarian, hingga SQL.
  • woz:explore: Agent pembantu khusus eksplorasi codebase berbasis baca-saja (read-only) yang berjalan di atas model Haiku untuk kecepatan maksimal dan biaya minimal.

Pemasangan WOZCODE dilakukan langsung dari dalam sesi Claude Code:

bash
/plugin marketplace add WithWoz/wozcode-plugin /plugin install woz@wozcode-marketplace

Setelah diinstal dan diautentikasi via /woz-login, WOZCODE bekerja secara otomatis. Plugin ini juga menyediakan pemantauan hemat biaya secara langsung melalui perintah /woz-savings, serta mendukung integrasi dengan environment seperti Conductor.


Perbandingan Arsitektur: RTK + Headroom vs WOZCODE

Untuk menentukan solusi terbaik bagi workflow Anda, mari bedah perbedaan teknis dari kedua pendekatan ini.

ParameterKombinasi RTK + HeadroomWOZCODE Plugin
Tingkat OperasiPreToolUse Hook & Local API Proxy (localhost:8787)Plugin Marketplace & Tool Replacement
Metode KompresiSaringan regex/AST CLI & Kompresi muatan JSON/LogPenggantian alat bawaan & Delegasi Haiku
Optimasi ModelMemaksimalkan Anthropic Prefix Cache (Hit Rate 96%)Menggunakan agent woz:explore berbasis Haiku
PengoperasianTransparan, tanpa perlu login akun pihak ketigaMemerlukan akun Woz dan autentikasi token
Kompatibilitas ToolsMemotong output perintah Bash standar (git, read, dll)Mengoptimalkan eksekusi berkas & pencarian kode
MonitoringTUI Dashboard lokal (tui.py) secara real-timePerintah in-session (/woz-savings)

Ranjau Teknis dan Jebakan Pengkonfigurasian

Mengimplementasikan optimasi token tidak selalu mulus. Banyak developer terkecoh karena sistem tampak berjalan normal, padahal penghematan tokennya 0% akibat kesalahan konfigurasi tersembunyi.

1. PATH Minimal pada Claude Code Hook

Claude Code mengeksekusi hook dengan variabel PATH yang sangat minimal (/usr/bin:/bin:/usr/sbin:/sbin). Jika RTK diinstal melalui Homebrew, panggilan hook akan gagal secara diam-diam (silently exit 0). Pengujian gagal, tidak ada peringatan, dan perintah berjalan tanpa disaring. Solusinya adalah menyuntikkan jalur PATH secara manual di bagian atas script wrapper.

2. Overwrite otomatis oleh rtk init -g

Menjalankan perintah rtk init -g akan menimpa berkas script hook dan menghapus perbaikan PATH yang sudah dibuat. Selain itu, RTK memeriksa integritas berkasnya menggunakan checksum SHA-256 dan menolak berjalan jika berkas tersebut dimodifikasi. Solusi yang tahan lama adalah membuat wrapper script mandiri (misalnya rtk-wrapper.sh) yang tidak dikelola langsung oleh perintah internal RTK.

3. Masalah permissionDecision: "allow"

Secara bawaan, output JSON dari RTK menyertakan properti "permissionDecision": "allow". Jika konfigurasi Claude Code Anda mengaktifkan skipDangerousModePermissionPrompt atau skipAutoPermissionPrompt, Claude Code akan melompati jalur penanganan izin. Implikasinya fatal: sistem mengabaikan perintah hasil kompresi dan malah mengeksekusi perintah asli yang tidak dikompresi. Berkas wrapper wajib membuang kunci permissionDecision menggunakan jq:

bash
# Script wrapper rtk-wrapper.sh untuk menangkap dan membersihkan JSON #!/bin/bash export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH" # Membuang permissionDecision agar kompresi tidak terlewati if .hookSpecificOutput then .hookSpecificOutput |= del(.permissionDecision, .permissionDecisionReason) fi

4. Atribut Extended macOS Sequoia (com.apple.provenance)

Pada macOS Sequoia, sistem operasi menambahkan atribut extended com.apple.provenance yang menyebabkan kemunculan pesan Permission denied saat Claude Code memanggil hook via /bin/sh. Karena exit code dari crash ini bernilai bukan nol dan bukan 2, Claude Code menganggapnya sebagai non-blocking error dan tetap menjalankan perintah awal secara utuh tanpa kompresi.

Untuk mengatasi ini, panggil hook di ~/.claude/settings.json dengan menyertakan kata kunci bash di depannya agar shell membaca berkas sebagai data alih-alih mengeksekusinya secara langsung:

json
{ "hooks": { "PreToolUse": [ { "command": "bash /Users/username/.claude/hooks/rtk-wrapper.sh" } ] } }

Keputusan Pragmatis untuk Workflow Anda

Jika Anda menyukai kendali penuh atas infrastruktur lokal, tidak ingin bergantung pada layanan pihak ketiga tambahan, dan ingin memaksimalkan efisiensi dari perintah shell dasar, kombinasi RTK + Headroom adalah standar emas. Penghematan 1,5 miliar token dalam sebulan pada skala produksi bukti betapa ampuhnya arsitektur dua lapis ini.

Namun, jika Anda menginginkan solusi serba praktis yang langsung bekerja dari dalam Claude Code tanpa perlu mengutak-atik script Bash, proxy port, atau wrapper jq, WOZCODE menawarkan alternatif berbasis plugin yang sangat efisien.

Apapun pilihan Anda, membiarkan CLI noise memenuhi context window agent AI tanpa kompresi adalah pemborosan yang tidak bisa dibenarkan di era koding berbasis AI saat ini.

Referensi


Sedang Ramai Dibaca