Wstęp: hint, nie oszczędności
Jev nie sprawi, że Claude Code stanie się tańszy, i mówi to własny benchmark gatewaya. Ten artykuł czyta kod jev-gateway i jego repozytorium benchmarkowe, a potem stawia loggujące proxy przed prawdziwą sesją Claude Code, żeby zobaczyć, co dostałby router.
Jev to model decyzyjny TypeSafe: prawdopodobieństwo zwracane w milisekundach, wpięte w Claude Code przez sześć filmów w jednym tygodniu. Hasło brzmi „najtańsza agentowa pętla kodowania". Własne liczby gatewaya pokazują, że Opus 5 wykonuje 47% więcej zapytań i zużywa 83% więcej czasu na zadaniu typu feature przy włączonym routingu.
Jak router, który odpowiada w milisekundach, może spowolnić Claude Code? Sprowadza się to do jednej linii kodu. Wewnątrz Claude Code Jev dostaje dokładnie dwa zdania, a normalna sesja podaje mu 40 narzędzi przy każdym wywołaniu.
Czym jest Jev i co sprzedaje ta fala
Jev to model decyzyjny od TypeSafe. Nie generuje tekstu: zadajesz typowane pytanie, a on odpowiada wyborem, wynikiem albo prawdopodobieństwem tak/nie. Liczby podane przez producenta:
| Wskaźnik | Wartość |
|---|---|
| Cena wejścia | 0,04 USD za milion tokenów |
| Cena wyjścia | za darmo („zbyt tanie, żeby mierzyć") |
| Opóźnienie | 70 do 500 ms |
| Nagłówek na stronie głównej | 194× szybciej, 445× taniej |
Wpis na blogu pod tym nagłówkiem mówi, że te dwa mnożniki to górna granica realnych zysków, mierzona względem średniej dwóch modeli czołowych — porównanie, które autorzy sami przyznają jest przechylone na korzyść tych modeli.
Sześć filmów w pięć dni wpięło Jev w Claude Code. Największy ma 139 000 wyświetleń i nazywa to najtańszą agentową pętlą kodowania. Dwa repozytoria niosą tę falę: jev-gateway, lokalne proxy dla Claude Code i Codex stworzone pięć dni wcześniej, z 181 gwiazdkami, oraz fast-jev-compaction, plugin do kompakcji stworzony dzień wcześniej, z 6400 gwiazdkami. Gateway to miejsce, w którym podłącza się Claude Code, więc od niego zaczyna się czytanie.
Jedna zmienna, jedna linia: tryb hint
jev-gateway siedzi między Claude Code a API Anthropic. Uruchamia Claude Code z jedną zmienną środowiskową, ANTHROPIC_BASE_URL, wskazującą na lokalny port. Nic więcej się nie zmienia; komentarz w kodzie źródłowym mówi, że nie ma żadnych danych uwierzytelniających gatewaya, więc logowanie Pro albo Max działa jak wcześniej.
Wewnątrz adaptera (src/adapters/messages.ts, linia 99), jedna linia decyduje, co wolno Jevowi:
steer: thinking || cached ? "hint" : "tool_choice"
Przy włączonym extended thinking albo przy konwersacji w cache, gateway może tylko podpowiadać. W przeciwnym razie wymusza narzędzie. Komentarz nad tą linią wyjaśnia dlaczego: API odrzuca wymuszone narzędzie przy włączonym extended thinking, a zmiana tool_choice unieważnia konwersację w cache, którą Claude Code odczytuje ponownie przy każdej turze.
Żeby sprawdzić, jak wygląda prawdziwe zapytanie, 60-liniowe loggujące proxy zajęło miejsce gatewaya na tego samego typu porcie, z Claude Code uruchomionym przez nie i jednym zapytaniem wysłanym na prawdziwym repozytorium. Zapytanie niesie thinking: adaptive i trzy znaczniki cache; tool_choice jest nieobecne; 24 narzędzia jadą razem przy czystej instalacji. Uruchom linię gatewaya na tym zapytaniu, a ścieżka wymuszenia nigdy się nie odpali. Każde wywołanie Claude Code ląduje w trybie hint. README mówi to wprost: spodziewaj się lepszego doboru narzędzi na długich listach narzędzi, nie niższego kosztu ani opóźnienia.
Hint: dwa zdania i gdzie nie może wylądować
Co Jev może zrobić wewnątrz Claude Code, to dwa zdania dopisane do ostatniej wiadomości: „a routing model suggests this tool is the most relevant move now. Ignore this if it doesn't fit" — model routingu sugeruje, że to narzędzie jest teraz najbardziej trafnym ruchem, zignoruj to, jeśli nie pasuje. To cała interwencja. Model może to zignorować, a tool_choice zostaje na auto.
Wymuszenie narzędzia nie wchodzi w grę, według dokumentacji Anthropic: wymuszone narzędzie zwraca błąd 400 na Opus 5.5 i Fable 5.1, i błędy przy ręcznym thinking na pozostałych modelach. Zmiana tool_choice też odpada: dokumentacja prompt caching mówi, że unieważnia to cache wiadomości, największą część długiej sesji. Edycja opisu narzędzia unieważnia cały cache: narzędzia, system i wiadomości.
| Zmiana w zapytaniu | Efekt na cache promptu |
|---|---|
| Dopisanie hinta do ostatniej wiadomości użytkownika | cached prefix bez zmian |
Zmiana tool_choice |
cache wiadomości unieważniony |
| Edycja definicji narzędzia | narzędzia, system i wiadomości unieważnione |
Komentarz gatewaya mówi, dlaczego hint idzie na koniec: cached prefix zostaje identyczny co do bajtu z tym, co Claude Code wysyła ponownie w następnej turze. Przed tym stoi zabezpieczenie: gdy ostatnia wiadomość nie jest wiadomością użytkownika, zapytanie przechodzi bez zmian. Oba przechwycone zapytania kończyły się blokiem systemowym, który Claude Code dokleja sam: environment reminder w jednym, wynik hooka w drugim. Na takim kształcie hint nie ma gdzie wylądować. Ląduje za to na innych turach, bo wyniki narzędzi wracają jako wiadomości użytkownika, a benchmark liczy, że Jev steruje od jednej trzeciej do połowy zapytań Claude Code.
Benchmark, którego nikt nie cytuje
Własny benchmark gatewaya, jev-gateway-bench, odpowiada na pytanie z początku. Uruchomił 120 sesji, pięć przebiegów na komórkę, na tym samym Claude Code i tej samej subskrypcji, której używa każdy, bez serwerów MCP, pluginów ani skilli. Dwa zadania na małym silniku szachowym: polowanie na bugi z pięcioma wstrzykniętymi błędami i feature — dodanie notacji algebraicznej.
| Model, zadanie | Routing włączony vs wyłączony |
|---|---|
| Opus 5, feature | +61% tokenów wejściowych, +47% zapytań, +83% czasu (nadal rozwiązał 5/5) |
| Sonnet 5, feature | +16% tokenów wejściowych, +37% czasu |
| Sonnet 5, polowanie na bugi | −48% tokenów wejściowych, −25% czasu |
Debugowanie to miejsce, gdzie routing się opłaca, słowami autorów. Ich wyjaśnienie jest odpowiedzią na to pytanie: gateway tylko podpowiada modelom Claude, więc niepasujący hint kosztuje objazd zamiast być zignorowanym za darmo.
Codex dostaje wymuszoną wersję. Jev decydował o 76 do 100% zapytań Codex, wobec jednej trzeciej do połowy w przypadku Claude Code. Jeden model w drugim harnessie stał się tańszy i błędny — trzy rozwiązania na pięć zamiast pięciu. Tańsze i błędne to nie jest oszczędność.
Ograniczenia są realne: pięć przebiegów na komórkę to mała próba, to jeden zabawkowy silnik, i nikt tego nie powtórzył. Wejście jest w większości cachowane, więc oszczędność na wejściu jest warta mniej niż oszczędność na wyjściu.
Co moja sesja mu podaje: 24 czysto, 40 pełno
Co normalna sesja Claude Code podaje routerowi przy każdym wywołaniu? Log proxy odpowiada: 40 narzędzi. To samo repozytorium, ten sam jednosłowny prompt, dwa ustawienia: czysta instalacja z pustym configiem i bez serwera MCP, oraz normalny setup z jego serwerami i pluginami.
| Czysta instalacja | Normalny setup | |
|---|---|---|
| Narzędzia w zapytaniu | 24 | 40 (16 z serwerów MCP i pluginów) |
| Rozliczone tokeny prefiksu | 47 411 | 57 277 |
| Tokeny wyjściowe | 4 | 4 |
| Koszt jednego „ok" w ekwiwalencie API | 0,07 USD | 1,15 USD |
Lista narzędzi to rachunek. Najcięższe definicje są wbudowane: sam shell tool to 12 000 znaków, agent tool prawie 9000.
Przypis w benchmarku widział sześć narzędzi i 7000 tokenów na czystej instalacji, i 285 narzędzi na jednym załadowanym setupie. Dzisiejszy czysty Claude Code wysyła dużo więcej wbudowanych narzędzi, a przypadek załadowany jest rzadszy: większość narzędzi MCP siedzi za narzędziem wyszukiwania, deferred, więc lista, którą widzi router, zostaje mała. Niezależnie od rozmiaru, gateway wysyła tę listę do Jev przy każdym zapytaniu; otwarty issue w repozytorium mówi, że pełny koszt jest płacony, zanim większość odpowiedzi zostaje odrzucona. Nic w tym nie jest winą Jev, i nic w tym nie jest do naprawienia przez Jev.
Werdykt per zastosowanie
Routing wewnątrz Claude Code: nie. To hint, który model może zignorować, spowolnił pracę nad feature na obu modelach Claude, a jedyna wygrana jest na debugowaniu. Wyjątkiem jest dzień polowania na bugi na bardzo dużej liście narzędzi, co samo README nazywa jako ten przypadek.
Plugin do kompakcji, fast-jev-compaction: jeszcze nie. Wymaga flagi early-access na hooki, jego otwarte issue mówią, że hooki nie rejestrują się na niektórych buildach, a po jednej kompakcji model napisał dziewięć raportów mówiących, że praca jest skończona — wszystkie zmyślone. Praktycy dotarli tam pierwsi: najwyżej oceniany wątek o pluginie ma 491 punktów, a jego główny zarzut to nie prędkość, tylko warunki korzystania z usługi przy wysyłaniu transkryptów do trzeciej strony.
Codex: to jest prawdziwy cel. Tam gateway wymusza narzędzie, Jev sterował aż każdym zapytaniem, a polowanie na bugi przebiegło na 57% mniejszej liczbie tokenów wyjściowych.
| Zastosowanie | Werdykt |
|---|---|
| Routing w Claude Code | Nie, poza polowaniem na bugi na bardzo dużej liście narzędzi |
| fast-jev-compaction | Jeszcze nie |
| Codex | Tak |
Jedna rzecz, którą ta fala trafiła: logowanie do subskrypcji nigdy się nie rusza, gateway zmienia tylko URL. Ograniczenia tego czytania: pięć przebiegów na komórkę, jeden silnik szachowy, repozytorium benchmarkowe, którego nikt nie powtórzył, i żadna moja własna sesja z routingiem. Zmierzyłem listę narzędzi i zapytanie, nie Jev. Sam Jev jest tani. Objazd nie jest.
AIDive