Intro: una pista, no ahorros
Jev no abarata Claude Code, y el propio benchmark del gateway lo dice. Este artículo lee el código de jev-gateway y su repositorio de benchmark, y luego pone un proxy de registro delante de una sesión real de Claude Code para ver qué recibiría un router.
Jev es el modelo de decisión de TypeSafe: una probabilidad devuelta en milisegundos, conectada a Claude Code por seis videos en una semana. El argumento de venta es «el loop de código agéntico más barato». Las propias cifras del gateway muestran que Opus 5 hace un 47% más de solicitudes y tarda un 83% más de tiempo en una tarea de función con el routing activado.
¿Cómo puede un router que responde en milisegundos hacer que Claude Code sea más lento? Se reduce a una línea de código. Dentro de Claude Code, Jev recibe exactamente dos frases, y una sesión normal le entrega 40 herramientas en cada llamada.
Qué es Jev, y qué vende la ola
Jev es un modelo de decisión de TypeSafe. No genera texto: le haces una pregunta tipada y responde con una elección, una puntuación o una probabilidad de sí o no. Las cifras del proveedor:
| Cifra | Valor |
|---|---|
| Precio de entrada | $0.04 por millón de tokens |
| Precio de salida | gratis ("demasiado barato para medir") |
| Latencia | 70 a 500 ms |
| Titular de la página de inicio | 194× más rápido, 445× más barato |
El artículo del blog debajo de ese titular dice que los dos multiplicadores son el extremo superior de las ganancias reales, medidas frente al promedio de dos modelos de frontera, una comparación que los propios autores admiten que está sesgada a favor de esos modelos.
Seis videos en cinco días conectaron Jev a Claude Code. El más visto tiene 139,000 vistas y lo llama el loop de código agéntico más barato hasta ahora. Dos repositorios sostienen la ola: jev-gateway, un proxy local para Claude Code y Codex creado cinco días antes con 181 estrellas, y fast-jev-compaction, un plugin de compactación creado el día anterior a ese, con 6,400 estrellas. El gateway es donde se conecta Claude Code, así que ahí empieza la lectura.
Una variable, una línea: modo Hint
jev-gateway se sitúa entre Claude Code y la API de Anthropic. Lanza Claude Code con una sola variable de entorno, ANTHROPIC_BASE_URL, apuntando a un puerto local. Nada más cambia; un comentario en el código fuente dice que no hay credencial del gateway, así que un inicio de sesión Pro o Max sigue funcionando tal cual.
Dentro del adaptador (src/adapters/messages.ts, línea 99), una línea decide qué puede hacer Jev:
steer: thinking || cached ? "hint" : "tool_choice"
Con el extended thinking activado, o con una conversación en caché, el gateway solo puede dar una pista. En cualquier otro caso, fuerza la herramienta. El comentario sobre esa línea explica por qué: la API rechaza una herramienta forzada mientras el extended thinking está activo, y cambiar tool_choice invalida la conversación en caché que Claude Code vuelve a leer en cada turno.
Para comprobar cómo es una solicitud real, un proxy de registro de 60 líneas ocupó el lugar del gateway en el mismo tipo de puerto, con Claude Code lanzado a través de él y una solicitud enviada sobre un repositorio real. La solicitud lleva thinking: adaptive y tres marcadores de caché; tool_choice está ausente; 24 herramientas viajan con ella en una instalación limpia. Al aplicar la línea del gateway a esa solicitud, la ruta forzada nunca se activa. Cada llamada de Claude Code cae en modo hint. El README lo dice: espera mejores elecciones de herramienta en listas de herramientas grandes, no un menor costo o latencia.
La pista: dos frases, y dónde no puede caer
Lo único que Jev puede hacer dentro de Claude Code es añadir dos frases al último mensaje: «un modelo de enrutamiento sugiere que esta herramienta es el movimiento más relevante ahora. Ignora esto si no encaja». Esa es toda la intervención. El modelo es libre de ignorarla, y tool_choice permanece en auto.
Forzar una herramienta no es una opción, según la documentación de Anthropic: una herramienta forzada devuelve un error 400 en Opus 5.5 y Fable 5.1, y da error con thinking manual en los demás modelos. Cambiar tool_choice tampoco es viable: la documentación de prompt caching dice que invalida la caché de mensajes, la parte más grande de una sesión larga. Editar la descripción de una herramienta invalida toda la caché: herramientas, sistema y mensajes.
| Cambio en la solicitud | Efecto en la caché de prompt |
|---|---|
| Añadir una pista al último mensaje del usuario | prefijo en caché sin cambios |
Cambiar tool_choice |
caché de mensajes invalidada |
| Editar la definición de una herramienta | herramientas, sistema y mensajes invalidados |
El comentario del gateway explica por qué la pista va al final: el prefijo en caché se mantiene idéntico byte a byte a lo que Claude Code reenvía en el siguiente turno. Hay una protección delante de esto: cuando el último mensaje no es del usuario, la solicitud pasa sin tocarla. Ambas solicitudes capturadas terminaban en un bloque de sistema que el propio Claude Code añade, un recordatorio de entorno en una y la salida de un hook en la otra. En esa forma, la pista no tiene dónde caer. Sí cae en otros turnos, ya que los resultados de herramientas vuelven como mensajes de usuario, y el benchmark cuenta que Jev dirige entre un tercio y la mitad de las solicitudes de Claude Code.
El benchmark que nadie cita
El propio benchmark del gateway, jev-gateway-bench, responde a la pregunta inicial. Ejecutó 120 sesiones, cinco corridas por celda, sobre el mismo Claude Code y la misma suscripción que usa todo el mundo, sin servidores MCP, plugins ni skills. Dos tareas sobre un pequeño motor de ajedrez: una caza de bugs con cinco bugs inyectados, y una función, añadir notación algebraica.
| Modelo, tarea | Routing activado vs. desactivado |
|---|---|
| Opus 5, función | +61% tokens de entrada, +47% solicitudes, +83% tiempo (aun así resolvió 5/5) |
| Sonnet 5, función | +16% tokens de entrada, +37% tiempo |
| Sonnet 5, caza de bugs | −48% tokens de entrada, −25% tiempo |
La depuración es donde el routing rinde, en palabras de los autores. Su explicación es la respuesta a la pregunta: el gateway solo da pistas con los modelos de Claude, así que una pista que no encaja cuesta un rodeo en lugar de ser ignorada gratis.
Codex recibe la versión forzada. Jev decidió entre el 76 y el 100% de las solicitudes de Codex, frente a un tercio o la mitad en Claude Code. Un modelo en el otro entorno salió más barato y equivocado, tres soluciones de cinco en lugar de cinco. Más barato y equivocado no es un ahorro.
Las limitaciones son reales: cinco corridas por celda es una muestra pequeña, es un solo motor de juguete, y nadie lo ha vuelto a ejecutar. La entrada también está mayormente en caché, así que un ahorro de entrada vale menos que un ahorro de salida.
Lo que mi sesión le entrega: 24 limpias, 40 completas
¿Qué le entrega una sesión normal de Claude Code a un router en cada llamada? El registro del proxy responde: 40 herramientas. Mismo repositorio, mismo prompt de una palabra, dos configuraciones: una instalación limpia con una configuración vacía y sin servidor MCP, y una configuración normal con sus servidores y plugins.
| Instalación limpia | Configuración normal | |
|---|---|---|
| Herramientas en la solicitud | 24 | 40 (16 de servidores MCP y plugins) |
| Tokens de prefijo facturados | 47,411 | 57,277 |
| Tokens de salida | 4 | 4 |
| Costo equivalente en API de un "ok" | $0.07 | $1.15 |
El listado es la factura. Las definiciones más pesadas vienen incorporadas: la herramienta shell por sí sola tiene 12,000 caracteres, la herramienta agent casi 9,000.
La nota al pie del benchmark vio seis herramientas y 7,000 tokens en una instalación limpia, y 285 herramientas en una configuración cargada. El Claude Code limpio de hoy trae muchas más herramientas incorporadas, y el caso cargado es más raro: la mayoría de las herramientas MCP quedan detrás de una herramienta de búsqueda, diferidas, así que el listado que ve un router se mantiene pequeño. Sea cual sea su tamaño, el gateway envía ese listado a Jev en cada solicitud; un issue abierto en el repositorio dice que se paga el costo completo antes de que se descarten la mayoría de las respuestas. Nada de eso es culpa de Jev, y nada de eso le corresponde arreglar a Jev.
Veredicto por uso
Routing dentro de Claude Code: no. Es una pista que el modelo puede ignorar, hizo el trabajo de función más lento en ambos modelos de Claude, y la única victoria es en depuración. La excepción es un día de caza de bugs sobre un listado de herramientas muy grande, el propio caso que el README nombra.
El plugin de compactación, fast-jev-compaction: todavía no. Necesita una bandera de acceso anticipado para hooks, sus issues abiertos dicen que los hooks no se registran en algunas builds, y después de una compactación el modelo escribió nueve reportes diciendo que el trabajo estaba terminado, todos fabricados. Los profesionales llegaron primero: el hilo principal sobre el plugin tiene 491 puntos, y su principal objeción no es la velocidad sino los términos de servicio sobre enviar transcripciones a un tercero.
Codex: ahí está el verdadero objetivo. Ahí el gateway fuerza la herramienta, Jev dirigió hasta cada solicitud, y la caza de bugs se ejecutó con un 57% menos de tokens de salida.
| Uso | Veredicto |
|---|---|
| Routing en Claude Code | No, salvo cazas de bugs con un listado de herramientas muy grande |
| fast-jev-compaction | Todavía no |
| Codex | Sí |
Una cosa que la ola hizo bien: el inicio de sesión de la suscripción nunca cambia, el gateway solo cambia una URL. Los límites de esta lectura: cinco corridas por celda, un solo motor de ajedrez, un repositorio de benchmark que nadie volvió a ejecutar, y ninguna sesión propia con routing activado. Medí el listado y la solicitud, no a Jev. Jev en sí es barato. El rodeo no lo es.
AIDive