AIDive

वीडियो पैक

Claude Code में Jev: hint mode, gateway का अपना benchmark और एक request capture

13 मिनट पढ़ें

TL;DR

  • Claude Code के अंदर jev-gateway कभी किसी tool को force नहीं करता। एक ही लाइन, steer: thinking || cached ? "hint" : "tool_choice", जैसे ही request में extended thinking या cached conversation होती है, उसे hint mode में डाल देती है, और असली Claude Code request में पहले ही turn पर दोनों होते हैं।
  • Hint दो वाक्यों का एक <system-reminder> है जो आखिरी user message के अंत में जोड़ा जाता है। मॉडल उसे अनदेखा करने के लिए स्वतंत्र है, और अगर Claude Code ने पहले ही अपना system reminder आखिरी block के रूप में जोड़ दिया है, तो hint जोड़ा ही नहीं जाता।
  • Gateway का अपना benchmark (120 sessions) कहता है कि Claude मॉडलों के लिए routing debugging में फ़ायदा देती है और feature work में नुकसान: feature task पर Opus 5 में input tokens +61%, requests +47% और समय +83%, Sonnet 5 में input +16% और समय +37%।
  • Jev का असली असर Codex पर दिखता है: वहाँ gateway tool को force करता है, Jev ने Codex की 76 से 100% requests को steer किया, जबकि Claude Code की 34 से 51% requests को।
  • हमारी मशीन पर नापा गया: साफ़ Claude Code 2.1.280 request में पहले से 24 tools और 47,411 prefix tokens होते हैं; MCP servers वाले सामान्य setup में 40 tools और 57,277 tokens, और gateway यह पूरा roster हर call पर Jev को दोबारा भेजता है।
  • fast-jev-compaction, सबसे ज़्यादा stars वाला Jev tool, के open issues कहते हैं कि उसके hooks मौजूदा Claude Code builds पर register नहीं होते और पूरे transcripts एक third-party API को चले जाते हैं। अभी नहीं।

माप क्या बताते हैं

Jev एक decision model है, text generator नहीं। इसका vendor input की कीमत $0.042 / MTok रखता है, output मुफ़्त है, end-to-end response time 70ms-500ms बताता है, और अपनी "193.6x faster, 444.6x cheaper" headline के नीचे लिखता है कि ये आँकड़े "are on the higher end of real world gains" s3। उसी post में यह भी माना गया है कि reference answers GPT-6 Astra और Fable 5.1 का औसत हैं, जिससे तुलना OpenAI और Anthropic मॉडलों की ओर झुक जाती है s3।

jev-gateway Claude Code से एक ही environment variable के ज़रिए जुड़ता है: bin/clients.mjs ANTHROPIC_BASE_URL को local gateway पर सेट करता है और Max login को नहीं छेड़ता s1। src/adapters/messages.ts में gateway Jev से पूछता है कि अगले कदम के लिए कौन सा tool ठीक रहेगा, फिर तय करता है कि जवाब आगे कैसे पहुँचाना है। जब request में thinking enabled हो या cache_control blocks हों, तो वह hint देता है। वरना tool_choice सेट करता है s1। Hint का मतलब है: एक tool-routing मॉडल सुझाता है कि नामित tool अगला सबसे relevant कदम है, अगर यह उससे मेल नहीं खाता जो user ने असल में माँगा, तो इसे अनदेखा करें। इसे आखिरी user message में <system-reminder> block के रूप में जोड़ा जाता है s1।

Anthropic API कोई दूसरा रास्ता नहीं छोड़ती। Manual extended thinking चालू होने पर tool_choice: any और tool_choice: tool supported नहीं हैं और error देते हैं, और Claude Opus 5.5, Claude Fable 5.1 और Claude Mythos 5.1 thinking की परवाह किए बिना forced tool use पर 400 लौटाते हैं s4। एक बारीकी जो gateway का अपना comment चूक जाता है: docs कहते हैं कि Claude Opus 5 thinking चालू होने पर भी forced tool choice support करता है s4। Caching में क्रम है tools, फिर system, फिर messages; tool_choice बदलने से सिर्फ़ messages cache invalidate होता है, जबकि किसी tool definition को बदलने से पूरा cache invalidate हो जाता है, इसीलिए gateway tool description को दोबारा लिखने की जगह एक block जोड़ता है s5।

जिस benchmark का हवाला लगभग कोई नहीं देता, वह gateway के लेखक का अपना है। छह मॉडल, दो tasks, हर mode के लिए पाँच runs, 2026-09-18 और 19 के बीच 120 agent sessions, GPT मॉडल Codex 0.154 में, Claude मॉडल Claude Code 2.1 में, हर agent साफ़, बिना MCP servers, plugins या skills के s2। chess-bugfix पर हर मॉडल ने routing के साथ कम tokens इस्तेमाल किए और कुछ भी कम सही नहीं हुआ। chess-san, यानी feature task, पर routing ने Opus 5 और Sonnet 5 को साफ़ तौर पर बदतर बना दिया, और लेखक कारण भी बताते हैं: gateway सिर्फ़ Claude मॉडलों के साथ hint देता है, इसलिए जो hint फ़िट नहीं बैठता वह मुफ़्त में अनदेखा होने की जगह एक चक्कर का खर्च बन जाता है s2। Routing ने एक बार correctness भी घटाई: GPT-5.6 Luna ने chess-san अकेले पाँच में से पाँच बार हल किया और routing के साथ पाँच में से तीन बार s2। लेखक जोड़ते हैं कि input tokens ज़्यादातर cached होते हैं (80 से 96%), इसलिए input की बचत output tokens की उतनी ही बचत से कम पैसे की होती है, और Jev का अपना खर्च पाँच runs के लिए आधे सेंट से दस सेंट के बीच रहा s2। 120 में से एक run, Luna series का chess-bugfix.on.3, contaminated चिह्नित है क्योंकि agent को /tmp में किसी दूसरे run की test script मिल गई थी s2।

README की जिस footnote ने हमारे अपने test को प्रेरित किया: --user-tools के साथ एक setup हर Claude Code request के साथ 285 tools और करीब 200,000 tokens भेज रहा था, जबकि साफ़ setup में 6 tools और 7,000 tokens थे s2। हमने उसी जगह पर नापा। साफ़ Claude Code 2.1.280 request में 24 tools, tool definitions के 87,547 characters और 47,411 billed prefix tokens हैं (16,221 written, 31,190 read); पूरे setup में 40 tools, definitions के 93,179 characters और 57,277 prefix tokens हैं, सब written। दोनों में thinking: {type: "adaptive"} और 3 cache_control blocks हैं, tool_choice नहीं है, और यही वह शर्त है जो messages.ts में hint mode को पक्का कर देती है s1। एक अकेले "ok" जवाब की कीमत साफ़ Sonnet 5 run पर $0.07 API-equivalent और पूरे Fable 5.1 run पर $1.15 है, जो Claude Code के अपने total_cost_usd और usage fields से पढ़ी गई, उसी जगह से जहाँ gateway का launcher बैठता है s1।

fast-jev-compaction पर, यानी "instant compaction" thread के पीछे के plugin पर (score 495, 117 comments) s9, stars की गिनती से ज़्यादा open issues मायने रखते हैं: #21 बताता है कि install पर Hooks (0) दिखता है क्योंकि Claude Code 2.1.272 पर session.compact और turn.complete पहचाने गए hook events नहीं हैं, #88 कहता है कि hooks compaction की जगह नहीं ले सकते और पूरे transcripts एक third-party API को भेजे जाते हैं, #65 एक compaction के बाद लगातार 9 गढ़ी हुई "work done" रिपोर्टें दर्ज करता है, #89 कहता है कि --resume पर compaction पलट जाती है s7। Thread की सबसे बड़ी शिकायत, 84 points के साथ, vendor की ToS और data controls को लेकर है s9। Skill-suggestion cookbook वह इकलौती नापी हुई जीत है जो vendor agent roster के लिए छापता है: गलत skill लोड होने की दर 16.8% से 7.3% पर आती है, और जब कुछ भी फ़िट न हो तब skill लोड होने की दर 9.8% से 4.0% पर s13।

माप

Gateway का benchmark, प्रतिशत उसी मॉडल के routing बंद वाले नतीजे के मुकाबले s2।

chess-bugfix: पाँच डाले गए bugs खोजकर ठीक करना

मॉडल हल हुआ, on / off Output tokens Input tokens LLM requests सेकंड Jev ने steer किया
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: चल रहे engine में algebraic notation जोड़ना

मॉडल हल हुआ, on / off Output tokens Input tokens LLM requests सेकंड Jev ने steer किया
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%

हमारा अपना request capture, उसी जगह से जहाँ jev-gateway बैठता है s1।

साफ़ पूरा
Claude Code ने चुना मॉडल claude-sonnet-5 claude-fable-5-1 (user setting, 1M)
Request में thinking {type: "adaptive"} {type: "adaptive"}
cache_control blocks 3 3
tool_choice नहीं है (auto) नहीं है (auto)
Request में tools 24 40 (28 built-in + 12 MCP)
Tool definitions, characters 87,547 93,179
System prompt, characters 27,754 12,436
पूरी request, characters 134,882 155,718
Billed prefix tokens (cache write + read) 47,411 (16,221 written, 31,190 read) 57,277 (सब written)
Output tokens 4 4
एक "ok" की API-equivalent कीमत $0.07 $1.15

Protocol: 127.0.0.1:8790 पर 60 लाइन का एक logging proxy हर request को byte-for-byte https://api.anthropic.com पर forward करता है और जो कुछ वह ले जाती है उसे log करता है, ठीक वही जगह जो bin/clients.mjs jev-gateway को देता है। Claude Code 2.1.280 headless चला, claude -p "Reply with the single word ok. Do not use any tool." --output-format json --max-turns 1, 1,021 tracked files वाले एक private Expo repo से, claude.ai subscription पर। साफ़: खाली directory पर CLAUDE_CONFIG_DIR, --strict-mcp-config, --setting-sources project। पूरा: मशीन की सामान्य user settings, project की .mcp.json, user MCP servers और installed plugins। हर configuration की एक request, सिर्फ़ पहला turn; कोई Jev key नहीं थी, इसलिए regression के आँकड़े gateway के bench को दोहराकर लिए गए हैं, दोबारा पैदा नहीं किए गए।

सोमवार को यह करें

  • कोई router जोड़ने से पहले अपनी जगह नापें: एक logging proxy शुरू करें, ANTHROPIC_BASE_URL को उस पर इंगित करें, claude -p "Reply with the single word ok." --output-format json --max-turns 1 चलाएँ, और output में cache_creation_input_tokens तथा cache_read_input_tokens पढ़ें।
  • उस request में tools गिनें। अगर कम इस्तेमाल होने वाले MCP servers roster को बढ़ा रहे हैं, तो उन्हें .mcp.json से हटाएँ या project के हिसाब से सीमित करें; यह कटौती हर request पर लगती है, router हो या न हो।
  • अगर फिर भी आप Claude Code में Jev चाहते हैं, तो अपने jev-gateway clone में src/adapters/messages.ts खोलें और steer लाइन की पुष्टि करें: thinking या caching चालू होने पर आप hint खरीद रहे हैं, route नहीं।
  • Chess tables पर भरोसा करने की जगह gateway का bench अपने repo पर --user-tools के साथ चलाएँ; routing तभी रखें जब bug-hunt task में solved/unsolved बदले बिना कम requests दिखें।
  • Issues #21, #88 और #89 बंद होने तक fast-jev-compaction install न करें; install के बाद जाँचें कि /hooks शून्य से ज़्यादा hooks दिखाता है।
  • Key paste करने से पहले vendor की ToS पढ़ें: हर routed request आपका tool roster और आखिरी message भेजती है, और compaction plugin पूरे transcripts भेजता है।
  • अगर आप Codex भी चलाते हैं, तो Jev को पहले वहाँ आज़माएँ: bench दिखाता है कि forced tool_choice वहीं फ़ायदा देता है।

आगे पढ़ें

  • हर मॉडल के लिए forced tool use की table, जिसमें यह भी है कि कौन से मॉडल 400 लौटाते हैं और कौन से thinking modes any और tool को रोकते हैं s4।
  • Cache invalidation की table: tools, फिर system, फिर messages, और tool_choice की वह row जो gateway के design को समझाती है s5।
  • jev-gateway पर issue #24: session में न बदलने वाला tool roster हर request पर Jev को दोबारा भेजा जाता है, यानी वह cost center जिसे dashboard छिपा लेता है s14।
  • Bench README का data-integrity section: 120 में से 119 runs अपने आप में सीमित रहे, एक run runs.jsonl में contaminated चिह्नित है s2।
  • Coding-agent के दायरे से बाहर, public और private data पर Jev को classifier या filter की तरह परखने वाली एक स्वतंत्र समीक्षा s12।
  • Vendor के evals ground truth की जगह दो मॉडलों के मुकाबले क्यों नापते हैं, और इससे headline के multipliers पर क्या असर पड़ता है s11।
  • jev-gateway की एक third-party समीक्षा जो "Jev picks, the LLM writes" बँटवारे और उसके localhost exposure को परखती है, जो उसी दिन ठीक हो गया s8।
  • HN का launch thread, जहाँ pricing और subsidy का सवाल खुलकर बहस में है s10।

स्रोत

  • jev-gateway, GitHub, vinilana. क्यों पढ़ें: src/adapters/messages.ts में वह एक लाइन है जो hint और forced tool के बीच फ़ैसला करती है, और bin/clients.mjs दिखाता है कि launcher सिर्फ़ ANTHROPIC_BASE_URL सेट करता है।
  • jev-gateway-bench, GitHub, vinilana. क्यों पढ़ें: पूरी 120-session table और लेखकों की अपनी व्याख्या, जिसमें वह एक contaminated run भी शामिल है।
  • Introducing System One Models & Jev, TypeSafe AI. क्यों पढ़ें: vendor की ओर से pricing, latency और वह footnote जो 444.6x के दावे को सीमित करती है।
  • Forcing tool use, Anthropic docs. क्यों पढ़ें: हर मॉडल के लिए वह table कि tool_choice के कौन से मान error देते हैं।
  • Prompt caching, Anthropic docs. क्यों पढ़ें: invalidation का वह क्रम जो hint वाले design को मजबूर करता है।
  • fast-jev-compaction, GitHub, tamaratran. क्यों पढ़ें: README से पहले issues tab खोलें।
  • jev-gateway Review: Jev Picks, the LLM Writes, mrjev.com. क्यों पढ़ें: gateway की architecture का बाहरी walkthrough।
  • Instant Claude Code compaction is my favorite use of Jev so far, r/ClaudeCode. क्यों पढ़ें: practitioners का thread, जिसमें सबसे ऊपर ToS पर आपत्ति है।
  • HN: Introducing System One Models and Jev, Hacker News. क्यों पढ़ें: pricing और टिकाऊपन पर launch की बहस।
  • The Evals: Measured Against Two Models, Not Against Truth, novcog. क्यों पढ़ें: vendor के multipliers के पीछे की evaluation method की आलोचना।
  • Testing Jev on public and private data: classifier or filter, Aman Kumar. क्यों पढ़ें: coding agents से बाहर एक स्वतंत्र माप।
  • Skill suggestion cookbook, TypeSafe docs. क्यों पढ़ें: roster selection के इकलौते प्रकाशित आँकड़े, 16.8% से 7.3%।
  • jev-gateway issue #24, GitHub. क्यों पढ़ें: roster दोबारा भेजने की वह लागत जिसे कोई नहीं गिनता।
  • Jev + Claude Code: compaction and a Sonnet 5 source check, jevmodel.ai. क्यों पढ़ें: compaction के दावे पर Sonnet 5 की जाँच के साथ दूसरी नज़र।

FAQ

क्या jev-gateway Claude Code के अंदर कभी किसी tool को force करता है?

सिर्फ़ तब जब request में न extended thinking हो और न cache_control blocks। हमारी पकड़ी गई पहले turn की requests में दोनों थे, साफ़ और पूरे setup दोनों पर, इसलिए व्यवहार में gateway hint देता है।

Gateway ज़्यादा ज़ोर से steer करने के लिए tool descriptions को सीधे क्यों नहीं बदल देता?

Tool definitions बदलने से पूरा prompt cache invalidate हो जाता है, यानी tools, system और messages। आखिरी user message में एक block जोड़ना सिर्फ़ messages स्तर को छूता है, जो hint रखने की सबसे सस्ती जगह है।

तो क्या Jev coding के लिए बेकार है?

नहीं। Bench दिखाता है कि यह Codex पर फ़ायदा देता है, जहाँ tool forced है और 76 से 100% requests steer होती हैं, और हर मॉडल के debugging tasks पर भी। जो बात gateway के अपने आँकड़े सपोर्ट नहीं करते वह "सबसे सस्ता Claude Code" वाली framing है।

क्या मुझे fast-jev-compaction आज़माना चाहिए?

Hook registration वाले issues (#21, #88) और --resume वाला issue (#89) बंद होने तक रुकें, और तय करें कि पूरे transcripts का किसी third-party API पर जाना आपके repos में स्वीकार्य है या नहीं।