Intro: hint, bukan penghematan
Jev tidak akan membuat Claude Code lebih murah, dan benchmark milik gateway itu sendiri yang mengatakannya. Artikel ini membaca kode jev-gateway dan repositori benchmarknya, lalu memasang logging proxy di depan sesi Claude Code yang nyata untuk melihat apa yang akan diterima router.
Jev adalah model keputusan TypeSafe: sebuah probabilitas yang dikembalikan dalam milidetik, dipasang ke Claude Code oleh enam video dalam satu minggu. Klaimnya adalah "loop coding agentic termurah". Angka milik gateway itu sendiri menunjukkan Opus 5 membuat 47% lebih banyak request dan menghabiskan 83% lebih banyak waktu pada tugas fitur dengan routing aktif.
Bagaimana router yang menjawab dalam milidetik bisa membuat Claude Code lebih lambat? Semuanya bermuara pada satu baris kode. Di dalam Claude Code, Jev hanya mendapat dua kalimat, dan sesi normal menyerahkan 40 tool ke Jev pada setiap panggilan.
Apa itu Jev, dan apa yang dijual gelombang ini
Jev adalah model keputusan dari TypeSafe. Ia tidak menghasilkan teks: Anda mengajukan pertanyaan bertipe dan ia menjawab dengan sebuah pilihan, skor, atau probabilitas ya/tidak. Angka-angka dari vendor:
| Angka | Nilai |
|---|---|
| Harga input | $0.04 per juta token |
| Harga output | gratis ("terlalu murah untuk diukur") |
| Latensi | 70 hingga 500 ms |
| Headline halaman utama | 194× lebih cepat, 445× lebih murah |
Postingan blog di bawah headline itu mengatakan kedua pengali tersebut adalah ujung atas dari gain dunia nyata, diukur terhadap rata-rata dua model frontier, sebuah perbandingan yang menurut penulisnya sendiri bias ke arah kedua model itu.
Enam video dalam lima hari memasang Jev ke Claude Code. Video terbesar berada di 139.000 tayangan dan menyebutnya sebagai loop coding agentic termurah sejauh ini. Dua repositori membawa gelombang ini: jev-gateway, sebuah proxy lokal untuk Claude Code dan Codex yang dibuat lima hari sebelumnya dengan 181 star, dan fast-jev-compaction, sebuah plugin compaction yang dibuat sehari sebelum itu, dengan 6.400 star. Gateway adalah tempat Claude Code terhubung, jadi di situlah pembacaan ini dimulai.
Satu env var, satu baris: mode hint
jev-gateway duduk di antara Claude Code dan Anthropic API. Ia menjalankan Claude Code dengan satu environment variable, ANTHROPIC_BASE_URL, yang diarahkan ke port lokal. Tidak ada yang lain berubah; sebuah komentar dalam source code mengatakan tidak ada kredensial gateway, jadi login Pro atau Max tetap berfungsi apa adanya.
Di dalam adapter (src/adapters/messages.ts, baris 99), satu baris menentukan apa yang boleh dilakukan Jev:
steer: thinking || cached ? "hint" : "tool_choice"
Dengan extended thinking aktif, atau percakapan yang di-cache, gateway hanya bisa memberi hint. Selain itu ia memaksa tool. Komentar di atas baris itu menjelaskan alasannya: API menolak tool yang dipaksa selagi extended thinking aktif, dan mengubah tool_choice membatalkan percakapan cache yang dibaca ulang Claude Code pada setiap giliran.
Untuk memeriksa seperti apa request nyata itu, sebuah logging proxy sepanjang 60 baris mengambil alih posisi gateway pada jenis port yang sama, dengan Claude Code dijalankan melaluinya dan satu request dikirim pada repositori nyata. Request itu membawa thinking: adaptive dan tiga cache marker; tool_choice tidak ada; 24 tool ikut serta pada instalasi bersih. Jalankan baris milik gateway terhadap request itu dan jalur paksa tidak pernah aktif. Setiap panggilan Claude Code jatuh ke mode hint. README mengatakan hal yang sama: harapkan pilihan tool yang lebih baik pada daftar tool yang besar, bukan biaya atau latensi yang lebih rendah.
Hint-nya: dua kalimat, dan di mana ia tak bisa mendarat
Yang boleh dilakukan Jev di dalam Claude Code adalah dua kalimat yang ditambahkan ke pesan terakhir: sebuah pesan yang mengatakan "sebuah routing model menyarankan tool ini adalah langkah paling relevan sekarang. Abaikan ini jika tidak sesuai." Itulah seluruh intervensinya. Model bebas mengabaikannya, dan tool_choice tetap pada auto.
Memaksa tool bukan pilihan, menurut dokumentasi Anthropic: tool yang dipaksa mengembalikan error 400 pada Opus 5.5 dan Fable 5.1, dan error dengan manual thinking pada model lainnya. Mengubah tool_choice juga tidak bisa: dokumentasi prompt caching mengatakan itu membatalkan messages cache, bagian terbesar dari sesi yang panjang. Mengedit deskripsi tool membatalkan seluruh cache: tools, system, dan messages.
| Perubahan pada request | Efek pada prompt cache |
|---|---|
| Menambahkan hint ke pesan user terakhir | cached prefix tidak berubah |
Mengubah tool_choice |
messages cache dibatalkan |
| Mengedit definisi tool | tools, system, dan messages dibatalkan |
Komentar gateway menjelaskan mengapa hint diletakkan di akhir: cached prefix tetap identik byte demi byte dengan apa yang dikirim ulang Claude Code pada giliran berikutnya. Ada guard di depannya: ketika pesan terakhir bukan milik user, request lewat tanpa diubah. Kedua request yang ditangkap berakhir pada blok system yang ditambahkan Claude Code sendiri, sebuah environment reminder pada satu dan output hook pada yang lain. Pada bentuk seperti itu, hint tidak punya tempat untuk mendarat. Ia memang mendarat pada giliran lain, karena hasil tool kembali sebagai pesan user, dan benchmark mencatat Jev mengarahkan sepertiga hingga setengah dari request Claude Code.
Benchmark yang tak pernah dikutip
Benchmark milik gateway sendiri, jev-gateway-bench, menjawab pertanyaan pembuka ini. Ia menjalankan 120 sesi, lima run per cell, pada Claude Code dan subscription yang sama dengan yang dipakai semua orang, tanpa MCP server, plugin, atau skill. Dua tugas pada chess engine kecil: bug hunt dengan lima bug yang disisipkan, dan sebuah fitur, menambahkan notasi aljabar.
| Model, tugas | Routing on vs off |
|---|---|
| Opus 5, feature | +61% input token, +47% request, +83% waktu (tetap menyelesaikan 5/5) |
| Sonnet 5, feature | +16% input token, +37% waktu |
| Sonnet 5, bug hunt | −48% input token, −25% waktu |
Debugging adalah tempat routing membayar, menurut kata-kata penulisnya sendiri. Penjelasan mereka adalah jawaban atas pertanyaan ini: gateway hanya memberi hint dengan model Claude, jadi hint yang tidak sesuai berbiaya detour, bukannya diabaikan secara gratis.
Codex mendapat versi yang dipaksa. Jev memutuskan 76 hingga 100% dari request Codex, dibandingkan sepertiga hingga setengah pada Claude Code. Satu model pada harness lain menjadi lebih murah dan salah, tiga solve dari lima alih-alih lima. Lebih murah dan salah bukanlah penghematan.
Batasannya nyata: lima run per cell adalah sampel kecil, ini satu toy engine, dan belum ada yang menjalankan ulang. Input juga sebagian besar sudah di-cache, jadi penghematan input bernilai lebih rendah daripada penghematan output.
Yang diberikan sesi saya: 24 tool bersih, 40 penuh
Apa yang diserahkan sesi Claude Code normal ke router pada setiap panggilan? Log proxy menjawab: 40 tool. Repositori yang sama, prompt satu kata yang sama, dua setup: instalasi bersih dengan config kosong dan tanpa MCP server, dan setup normal dengan server dan plugin-nya.
| Instalasi bersih | Setup normal | |
|---|---|---|
| Tool dalam request | 24 | 40 (16 dari MCP server dan plugin) |
| Prefix token yang ditagih | 47,411 | 57,277 |
| Output token | 4 | 4 |
| Biaya setara API untuk satu "ok" | $0.07 | $1.15 |
Roster itu adalah tagihannya. Definisi yang paling berat sudah tertanam: tool shell saja 12,000 karakter, tool agent hampir 9,000.
Catatan kaki pada benchmark mencatat enam tool dan 7,000 token pada instalasi bersih, dan 285 tool pada satu setup yang penuh muatan. Claude Code bersih hari ini mengirim jauh lebih banyak tool bawaan, dan kasus yang penuh muatan lebih jarang: sebagian besar tool MCP berada di balik search tool, deferred, sehingga roster yang dilihat router tetap kecil. Berapa pun ukurannya, gateway mengirim roster itu ke Jev pada setiap request; sebuah issue terbuka pada repositori mengatakan biaya penuh dibayar sebelum sebagian besar jawaban dibuang. Tidak ada satupun dari itu yang menjadi kesalahan Jev, dan tidak ada satupun yang menjadi tanggung jawab Jev untuk diperbaiki.
Vonis per penggunaan
Routing di dalam Claude Code: tidak. Ini adalah hint yang boleh diabaikan model, ia membuat pekerjaan fitur lebih lambat pada kedua model Claude, dan satu-satunya kemenangan ada pada debugging. Pengecualiannya adalah hari yang dipenuhi bug hunt pada roster tool yang sangat besar, yang disebutkan sendiri oleh README sebagai kasusnya.
Plugin compaction, fast-jev-compaction: belum. Ia membutuhkan flag hook early-access, isu terbukanya mengatakan hook tidak teregistrasi pada beberapa build, dan setelah satu compaction model menulis sembilan laporan yang mengatakan pekerjaan sudah selesai, semuanya fabrikasi. Praktisi lebih dulu sampai di sana: thread teratas pada plugin ini memiliki 491 poin, dan keberatan utamanya bukan kecepatan, melainkan terms of service soal mengirim transcript ke pihak ketiga.
Codex: itulah target sebenarnya. Di sana gateway memaksa tool, Jev mengarahkan hingga setiap request, dan bug hunt berjalan dengan 57% lebih sedikit output token.
| Penggunaan | Vonis |
|---|---|
| Routing di Claude Code | Tidak, kecuali bug hunt pada roster tool yang sangat besar |
| fast-jev-compaction | Belum |
| Codex | Ya |
Satu hal yang benar dari gelombang ini: login subscription tidak pernah berubah, gateway hanya mengubah sebuah URL. Batasan dari pembacaan ini: lima run per cell, satu chess engine, sebuah repositori benchmark yang tidak pernah dijalankan ulang oleh siapa pun, dan tidak ada sesi routing milik saya sendiri. Saya mengukur roster dan request, bukan Jev. Jev sendiri murah. Detour-nya yang tidak.
AIDive