AIDive

Paket video

Jev di Claude Code: mode hint, benchmark milik gateway sendiri, dan tangkapan request

13 menit baca

TL;DR

  • Di dalam Claude Code, jev-gateway tidak pernah memaksa sebuah tool. Satu baris, steer: thinking || cached ? "hint" : "tool_choice", mengalihkannya ke mode hint begitu request membawa extended thinking atau percakapan yang di-cache, dan request Claude Code yang asli membawa keduanya sejak turn pertama.
  • Hint-nya berupa <system-reminder> dua kalimat yang ditambahkan ke pesan user terakhir. Model bebas mengabaikannya, dan kalau Claude Code sudah menambahkan system reminder sendiri sebagai blok terakhir, hint tidak dipasang sama sekali.
  • Benchmark milik gateway sendiri (120 sesi) menunjukkan routing berguna untuk debugging dan merugikan untuk pekerjaan fitur pada model Claude: Opus 5 dengan +61% token input, +47% request dan +83% waktu pada tugas fitur, Sonnet 5 dengan +16% input dan +37% waktu.
  • Di Codex, Jev benar-benar terasa: gateway memaksa tool di sana, Jev mengarahkan 76 sampai 100% request Codex, dibanding 34 sampai 51% request Claude Code.
  • Diukur di mesin kami: request Claude Code 2.1.280 yang bersih sudah membawa 24 tool dan 47,411 token prefix; setup normal dengan server MCP membawa 40 tool dan 57,277 token, dan gateway mengirim ulang roster itu ke Jev di setiap panggilan.
  • fast-jev-compaction, tool Jev dengan bintang terbanyak, punya issue terbuka yang menyebut hook-nya tidak terdaftar di build Claude Code terbaru dan transkrip lengkap dikirim ke API pihak ketiga. Belum.

Apa kata pengukuran

Jev adalah model pengambil keputusan, bukan generator teks. Vendornya menetapkan harga input $0.042 / MTok dengan output gratis, mengklaim waktu respons end-to-end 70ms-500ms, dan di bawah judul "193.6x faster, 444.6x cheaper" menulis bahwa angka itu "are on the higher end of real world gains" s3. Postingan yang sama mengakui bahwa jawaban referensinya adalah rata-rata GPT-6 Astra dan Fable 5.1, sehingga perbandingannya condong menguntungkan model OpenAI dan Anthropic s3.

jev-gateway terhubung ke Claude Code lewat satu variabel environment: bin/clients.mjs mengatur ANTHROPIC_BASE_URL ke gateway lokal dan membiarkan login Max apa adanya s1. Di src/adapters/messages.ts, gateway bertanya ke Jev tool mana yang cocok untuk langkah berikutnya, lalu memutuskan cara meneruskan jawabannya. Kalau request mengaktifkan thinking atau berisi blok cache_control, ia memberi hint. Kalau tidak, ia mengatur tool_choice s1. Bunyi hint-nya kira-kira: model tool-routing menyarankan tool yang disebut sebagai langkah berikutnya yang paling relevan, abaikan jika tidak sesuai dengan yang sebenarnya diminta user. Hint ditambahkan ke pesan user terakhir sebagai blok <system-reminder> s1.

API Anthropic tidak memberi pilihan lain. Dengan extended thinking manual aktif, tool_choice: any dan tool_choice: tool tidak didukung dan mengembalikan error, dan Claude Opus 5.5, Claude Fable 5.1 serta Claude Mythos 5.1 mengembalikan 400 untuk forced tool use terlepas dari thinking s4. Satu nuansa yang terlewat di komentar gateway: dokumentasi menyebut Claude Opus 5 mendukung forced tool choice dengan thinking aktif s4. Soal caching, hierarkinya tools, lalu system, lalu messages; perubahan pada tool_choice hanya membatalkan cache messages, sedangkan mengedit definisi tool membatalkan seluruh cache, itulah sebabnya gateway menambahkan blok alih-alih menulis ulang deskripsi tool s5.

Benchmark yang hampir tidak pernah dikutip adalah milik penulis gateway sendiri. Enam model, dua tugas, lima run per mode, 120 sesi agent pada 2026-09-18 dan 19, model GPT di Codex 0.154, model Claude di Claude Code 2.1, setiap agent bersih tanpa server MCP, plugin, atau skill s2. Pada chess-bugfix, setiap model memakai lebih sedikit token dengan routing dan tidak ada yang jadi kurang benar. Pada chess-san, tugas fitur, routing membuat Opus 5 dan Sonnet 5 jelas lebih buruk, dan para penulis menyebut penyebabnya: gateway hanya memberi hint pada model Claude, sehingga hint yang tidak cocok menyebabkan jalan memutar alih-alih diabaikan gratis s2. Routing juga pernah merusak ketepatan: GPT-5.6 Luna menyelesaikan chess-san lima dari lima kali tanpa routing dan tiga dari lima dengan routing s2. Para penulis menambahkan bahwa token input sebagian besar di-cache (80 sampai 96%), sehingga penghematan input bernilai lebih kecil daripada penghematan yang sama pada token output, dan bahwa Jev sendiri menelan biaya antara setengah sen dan sepuluh sen per lima run s2. Satu dari 120 run, chess-bugfix.on.3 pada seri Luna, ditandai contaminated setelah agent menemukan skrip tes run lain di /tmp s2.

Catatan kaki README yang mendorong tes kami sendiri: dengan --user-tools, satu setup mengirim 285 tool dan sekitar 200,000 token di setiap request Claude Code, dibanding 6 tool dan 7,000 token pada kondisi bersih s2. Kami mengukur posisi yang sama. Request Claude Code 2.1.280 yang bersih membawa 24 tool, 87,547 karakter definisi tool, dan 47,411 token prefix yang ditagih (16,221 ditulis, 31,190 dibaca); setup penuh membawa 40 tool, 93,179 karakter definisi, dan 57,277 token prefix, semuanya ditulis. Keduanya membawa thinking: {type: "adaptive"} dan 3 blok cache_control, tanpa tool_choice, persis kondisi yang mengunci mode hint di messages.ts s1. Satu balasan "ok" berharga $0.07 setara API pada run Sonnet 5 yang bersih dan $1.15 pada run Fable 5.1 penuh, dibaca dari field total_cost_usd dan usage milik Claude Code sendiri, di posisi yang sama dengan launcher gateway s1.

Soal fast-jev-compaction, plugin di balik thread "instant compaction" (skor 495, 117 komentar) s9, issue yang terbuka lebih penting daripada jumlah bintang: #21 melaporkan Hooks (0) setelah instalasi karena session.compact dan turn.complete bukan event hook yang dikenali di Claude Code 2.1.272, #88 menyebut hook tidak bisa menggantikan compaction dan transkrip lengkap dikirim ke API pihak ketiga, #65 mendokumentasikan 9 laporan "work done" palsu berturut-turut setelah satu compaction, #89 menyebut compaction dibatalkan saat --resume s7. Keluhan teratas di thread, dengan 84 poin, adalah soal ToS dan kontrol data vendor s9. Cookbook skill-suggestion adalah satu-satunya keuntungan terukur yang dipublikasikan vendor untuk roster agent: skill yang salah dimuat turun dari 16.8% ke 7.3%, dan skill yang dimuat padahal tidak ada yang cocok turun dari 9.8% ke 4.0% s13.

Pengukuran

Benchmark gateway, persentase dibanding model yang sama dengan routing mati s2.

chess-bugfix: temukan dan perbaiki lima bug yang disisipkan

Model Selesai, on / off Token output Token input Request LLM Detik Diarahkan Jev
GPT-6 Astra 5/5 · 5/5 1,226 (-57%) 96k (-7%) 5 (0%) 41 (-39%) 100%
GPT-5.6 Sol 5/5 · 5/5 3,211 (-57%) 202k (-40%) 9 (-36%) 78 (-36%) 93%
GPT-5.6 Luna 1/4 · 0/5 10,519 (-12%) 506k (-10%) 19.5 (-15%) 200 (+10%) 86%
Fable 5.1 5/5 · 5/5 8,675 (-13%) 276k (-19%) 14 (-22%) 148 (+6%) 45%
Opus 5 5/5 · 5/5 16,693 (-7%) 406k (-22%) 18 (-14%) 218 (+2%) 38%
Sonnet 5 5/5 · 5/5 16,623 (-41%) 616k (-48%) 26 (-26%) 243 (-25%) 34%

chess-san: tambahkan notasi aljabar ke engine yang sudah berjalan

Model Selesai, on / off Token output Token input Request LLM Detik Diarahkan Jev
GPT-6 Astra 5/5 · 5/5 3,663 (0%) 143k (+2%) 7 (0%) 88 (+8%) 95%
GPT-5.6 Sol 5/5 · 5/5 5,096 (-9%) 147k (-39%) 7 (-36%) 78 (-16%) 86%
GPT-5.6 Luna 3/5 · 5/5 6,809 (-14%) 315k (-51%) 14 (-42%) 121 (-14%) 76%
Fable 5.1 5/5 · 5/5 13,497 (-24%) 331k (-27%) 13 (-19%) 167 (-26%) 51%
Opus 5 5/5 · 5/5 20,152 (+22%) 676k (+61%) 25 (+47%) 390 (+83%) 44%
Sonnet 5 5/5 · 5/5 23,487 (+9%) 991k (+16%) 32 (+3%) 327 (+37%) 42%

Tangkapan request kami sendiri, di posisi yang ditempati jev-gateway s1.

Bersih Penuh
Model yang dipilih Claude Code claude-sonnet-5 claude-fable-5-1 (setelan user, 1M)
thinking di request {type: "adaptive"} {type: "adaptive"}
Blok cache_control 3 3
tool_choice tidak ada (auto) tidak ada (auto)
Tool di request 24 40 (28 built-in + 12 MCP)
Definisi tool, karakter 87,547 93,179
System prompt, karakter 27,754 12,436
Seluruh request, karakter 134,882 155,718
Token prefix yang ditagih (cache write + read) 47,411 (16,221 ditulis, 31,190 dibaca) 57,277 (semua ditulis)
Token output 4 4
Biaya setara API untuk satu "ok" $0.07 $1.15

Protokol: proxy logging 60 baris di 127.0.0.1:8790 meneruskan setiap request ke https://api.anthropic.com byte demi byte dan mencatat isinya, persis posisi yang diberikan bin/clients.mjs kepada jev-gateway. Claude Code 2.1.280 dijalankan headless, claude -p "Reply with the single word ok. Do not use any tool." --output-format json --max-turns 1, dari repo Expo privat berisi 1,021 file yang dilacak, pada langganan claude.ai. Bersih: CLAUDE_CONFIG_DIR di direktori kosong, --strict-mcp-config, --setting-sources project. Penuh: setelan user normal mesin ini, .mcp.json proyek, server MCP user, dan plugin terpasang. Satu request per konfigurasi, hanya turn pertama; tanpa key Jev, angka regresi adalah bench gateway yang diputar ulang, bukan direproduksi.

Lakukan ini hari Senin

  • Sebelum menambahkan router apa pun, ukur posisimu sendiri: jalankan proxy logging, arahkan ANTHROPIC_BASE_URL ke sana, jalankan claude -p "Reply with the single word ok." --output-format json --max-turns 1, lalu baca cache_creation_input_tokens ditambah cache_read_input_tokens di output.
  • Hitung tool di request itu. Kalau server MCP yang jarang kamu pakai menaikkan roster, hapus dari .mcp.json atau batasi per proyek; pemangkasan itu berlaku di setiap request, dengan router atau tanpa.
  • Kalau kamu tetap mau Jev di Claude Code, buka src/adapters/messages.ts di clone jev-gateway milikmu dan pastikan baris steer: dengan thinking atau caching aktif, kamu membeli hint, bukan rute.
  • Jalankan bench gateway di repo milikmu sendiri dengan --user-tools alih-alih memercayai tabel catur; pertahankan routing hanya jika tugas berburu bug menunjukkan request lebih sedikit tanpa perubahan selesai/tidak selesai.
  • Jangan pasang fast-jev-compaction sampai issue #21, #88 dan #89 ditutup; pastikan /hooks menampilkan lebih dari nol hook setelah instalasi.
  • Baca ToS vendor sebelum menempelkan key: setiap request yang di-route mengirim roster tool dan pesan terakhirmu, dan plugin compaction mengirim transkrip lengkap.
  • Kalau kamu juga memakai Codex, uji Jev di sana dulu: tool_choice yang dipaksa adalah hal yang terbukti berhasil di bench.

Bacaan lanjutan

  • Tabel forced tool use per model, termasuk model mana yang mengembalikan 400 dan mode thinking mana yang memblokir any dan tool s4.
  • Tabel pembatalan cache: tools, lalu system, lalu messages, dan baris tool_choice yang menjelaskan desain gateway s5.
  • Issue #24 di jev-gateway: roster tool yang tetap sepanjang sesi dikirim ulang ke Jev di setiap request, pusat biaya yang disembunyikan dashboard s14.
  • Bagian integritas data di README bench: 119 dari 120 run berdiri sendiri, satu run ditandai contaminated di runs.jsonl s2.
  • Pembacaan independen atas Jev sebagai classifier atau filter pada data publik dan privat, di luar bingkai coding agent s12.
  • Mengapa eval vendor mengukur terhadap dua model, bukan ground truth, dan apa dampaknya pada pengali di judul s11.
  • Ulasan pihak ketiga atas jev-gateway yang menelusuri pembagian "Jev picks, the LLM writes" dan eksposur localhost-nya, diperbaiki di hari yang sama s8.
  • Thread peluncuran HN, tempat pertanyaan soal harga dan subsidi diperdebatkan terbuka s10.

Sumber

FAQ

Apakah jev-gateway pernah memaksa tool di dalam Claude Code?

Hanya ketika request tidak punya extended thinking maupun blok cache_control. Request turn pertama yang kami tangkap punya keduanya, baik di setup bersih maupun penuh, jadi dalam praktiknya gateway memberi hint.

Mengapa gateway tidak menulis ulang deskripsi tool saja agar arahannya lebih kuat?

Mengubah definisi tool membatalkan seluruh prompt cache, tools, system, dan messages. Menambahkan blok ke pesan user terakhir hanya menyentuh level messages, tempat termurah untuk menaruh hint.

Jadi Jev tidak berguna untuk coding?

Tidak. Bench menunjukkan Jev berguna di Codex, tempat tool dipaksa dan 76 sampai 100% request diarahkan, dan pada tugas debugging untuk setiap model. Yang tidak didukung angka gateway sendiri adalah bingkai "Claude Code termurah".

Perlukah saya mencoba fast-jev-compaction?

Tunggu sampai issue pendaftaran hook (#21, #88) dan issue --resume (#89) ditutup, dan putuskan apakah transkrip lengkap yang keluar ke API pihak ketiga dapat diterima di repo-mu.