Jev Ultrafast: el agente de navegador que dejó de escribir texto
Publicado el 22 de septiembre de 2026
Un agente de navegador sin generación de texto
La mayoría de los agentes de navegador funcionan pidiéndole a un modelo de lenguaje, en prosa, qué hacer a continuación, y luego traducen esa prosa de vuelta a un clic. browser-use/jev-ultrafast no. En cada observación construye una tabla indexada de los elementos accesibles de la página, y luego le hace al modelo Jev de TypeSafe dos preguntas tipadas a la vez: qué operación y qué elemento para cada operación disponible.
One request per decision cycle. Operation and target heads share the same observed state.
— browser-use/jev-ultrafast README
El vocabulario de operaciones tiene ocho elementos: CLICK, TYPE_TEXT, SELECT, SCROLL_UP, SCROLL_DOWN, WAIT, DONE, BLOCKED. Solo se ofrecen las operaciones que admite el estado de página en cuestión. Nada de lo que devuelve el modelo se convierte jamás en un selector, una coordenada o JavaScript ejecutable: devuelve un índice en una tabla que construyó el arnés.
La generación de lenguaje sobrevive en exactamente un lugar:
A small LLM writes text only when the operation is TYPE_TEXT.
— browser-use/jev-ultrafast README
Ese es todo el diseño. Un clasificador rápido decide, un modelo pequeño escribe, y un ejecutor determinista valida el objetivo (frescura del documento, geometría, oclusión del clic) antes de tocar nada.

Por qué apareció esta semana
TypeSafe abrió Jev al público el 20 de septiembre, cinco días después de anunciarlo. jev-ultrafast fue lo más visible que se había construido con él: unas 17.000 estrellas en una semana, y el término jev apareciendo en 74 nombres de elementos distintos en ese mismo feed de siete días. Esto no es un proyecto aislado en tendencia. Es un ecosistema formándose alrededor de un modelo que se lanzó con una propuesta poco habitual:
Think of Jev as a frontier-intelligence function call: unstructured state in, typed probabilistic decisions out.
El agente es la demostración de que la propuesta sobrevive al contacto con algo desordenado. Su propio archivo de mediciones informa que una búsqueda de Zúrich a Londres en Google Flights terminó en 7,1 segundos de principio a fin, incluyendo las cargas de página y el texto que el modelo escribió en los campos. Frente a la arquitectura anterior del proyecto:
Median task time went from 9.450 s → 7.092 s, a 25% reduction; median browser protocol calls went from 1,092 → 101.
— browser-use/jev-ultrafast README
El 25% es el titular. La caída de diez veces en las llamadas al protocolo del navegador es el número interesante, porque esa es la parte que escala: menos idas y vueltas por decisión significa que el coste de ejecutar cien sesiones en paralelo cae con ella.

Sobre qué está discutiendo realmente la gente
Nadie ha publicado una crítica de este agente. Entró en el feed de esta semana el 16 de septiembre, tiene un solo colaborador, ningún release publicado y commits de cinco días de antigüedad, y las únicas mediciones públicas sobre él son las suyas propias. Lo honesto es informar que el desacuerdo está un nivel más abajo, sobre el modelo en el que se basa el agente, y que la mayor parte se transfiere.
El proyecto es inusualmente franco sobre los límites de sus propias cifras:
This is three repeats of one task on one browser profile, not a general reliability benchmark.
— browser-use/jev-ultrafast README
El anuncio de TypeSafe hace una afirmación contundente sobre la arquitectura: como Jev renuncia por completo a generar cadenas de texto y devuelve un valor de un esquema, no puede alucinar. Los propios gráficos del proveedor sitúan eso en cero en ambas medidas de error:

La objeción más afilada a Jev tiene que ver con lo que esa garantía realmente vale:
"Zero hallucination" = schema guarantee, not correctness guarantee — understand this distinction before building.
Eso golpea de lleno al agente. Su operación DONE es una decisión tipada como cualquier otra, y el README admite que una elección DONE sigue necesitando una verificación independiente del resultado. Un DONE bien formado que está equivocado se ve exactamente igual que un DONE bien formado que es correcto.
La evaluación independiente de Jev acaba de empezar. El proyecto jev-capability-atlas ejecutó Jev y la familia Laya con las mismas entradas por primera vez, y encontró que el compromiso es real en ambas direcciones:
Laya's fine-tuned specialist does beat Jev by 3 points on its own training distribution
— Zaious, jev-capability-atlas
—con cinco veces el error de calibración, y por debajo de una base blind-input en cuanto se sale de su propia distribución, donde los mismos evaluadores encontraron a Laya muy por detrás en chino. Jev tiene su propio problema de idioma: TypeSafe declara que Jev es menos preciso en CJK, y el atlas se propuso medirlo en lugar de darlo por sentado. En corrección de textos en chino, detectó el 67% de los caracteres incorrectos con un umbral de confianza de 0,5, con una tasa de falsas alarmas del 12% en el conjunto SIGHAN. Subir el umbral a 0,7 redujo las falsas alarmas al 5% y la tasa de detección al 38%. Y hay una salvedad comercial ligada al argumento de coste del que depende la economía del agente:
vendor says it can't prove the price isn't subsidized — treat it as today's price.
Hay una objeción más, que viene de un proyecto hermano y no de este: un evaluador de jaredpalmer/kev encontró un modelo de decisión tipada que manejaba correctamente la comparación de umbrales y el mapeo ordinal, pero no podía restar dos fechas, y lo solucionó metiendo el número de días en el estado en lugar de pedírselo. Modelo distinto, misma lección. Las decisiones tipadas solo son tan buenas como lo que se les entrega.
Dónde encaja esto en un pipeline
El patrón que vale la pena copiar no es el modelo. Es la división: hacer el trabajo determinista de forma determinista, y gastar una llamada al modelo solo en el único paso que de verdad necesita juicio. Por eso el número de llamadas al protocolo cayó en un orden de magnitud: la mayor parte de lo que hace un bucle de agente nunca fue un problema de razonamiento.
Esa forma se puede construir hoy en Latenode sin ninguna de las piezas anteriores. El navegador headless en la nube te da Puppeteer completo, así que la navegación, las esperas, el relleno de formularios y la extracción son código que hace lo mismo en cada ejecución, sobre navegadores que no tienes que instalar, parchear ni mantener vivos. Cuántas de esas ejecuciones corren a la vez es un techo para el que dimensionas, no una variable libre: la cantidad se llama max execution workers, el número de ejecuciones de workflow que un workspace puede procesar simultáneamente. Un plan de pago incluye cinco, y más allá de eso la concurrencia es un complemento de workers reservados a 10 $ por worker al mes. Si procesas mil páginas en lote, se ponen en cola detrás de ese número. Alrededor de eso, un nodo de JavaScript con el registro de NPM se encarga del estado y la validación, y solo llamas a un modelo —del catálogo en /ai-models— en la rama donde la página es genuinamente ambigua. El modelo de facturación premia la misma división. Latenode mide los segundos de CPU que una ejecución consume realmente, sin mínimo por ejecución, así que una tarea que termina en 7,1 segundos en lugar de 9,5 sí cuesta menos: de forma proporcional, y la diferencia se acumula a lo largo de un lote. Vale la pena enunciar el mecanismo con precisión, porque es fácil entenderlo al revés: el medidor cobra por tiempo de ejecución, no por llamadas. Mil idas y vueltas del navegador cuestan mil operaciones facturables en una plataforma por operación; aquí cuestan el tiempo que tarden, así que un bucle de agente hablador solo es caro en la medida en que es lento. No hay integración de Jev en Latenode, y este artículo no afirma que la haya; lo útil que se puede importar es la arquitectura.
Quién debería dedicarle tiempo a esto
Lee el documento de diseño si construyes automatización de navegador. La idea de que el espacio de acciones debería ser enumerado por el arnés y simplemente indexado por el modelo vale una hora, llames o no alguna vez a TypeSafe.
No lo pongas en producción este trimestre. Su lista de elementos no soportados descalifica la mayoría de los sitios reales:
Shadow roots, frames, canvas, uploads, pop-up tabs, nested scrolling, and arbitrary keyboard widgets remain outside this MVP.
— browser-use/jev-ultrafast README
Todo lo que esté detrás de un iframe (formularios de pago, selectores incrustados, la mayoría de los flujos de consentimiento) queda fuera. También cualquier subida de archivos. Añade una dependencia de un solo proveedor sobre una API de acceso anticipado cuyo propio proveedor no llama definitivo a su precio, sin releases etiquetados, y un historial de éxito de tres tareas, y el riesgo es evidente.
Quienes deberían ejecutarlo ahora son quienes puedan medirlo: un conjunto de tareas propio, sobre sus propias páginas, publicado. Eso es lo que le falta al ecosistema, y es barato de producir.
Así estaban las cosas el 22 de septiembre de 2026. Los proyectos avanzan rápido: comprueba la fuente antes de confiar en esto.
Preguntas frecuentes
- ¿Necesito una cuenta de TypeSafe para ejecutar jev-ultrafast?
Sí. El agente necesita TYPESAFE_API_KEY para el modelo de decisión y una TEXT_MODEL_API_KEY independiente para el modelo pequeño que escribe el texto. La configuración de ejemplo apunta esa segunda clave a OpenRouter y al modelo inception/mercury-2.5, con el razonamiento desactivado, pero Gemini, GLM o DeepSeek funcionan a través del mismo asistente compatible con OpenAI.
- ¿El agente mira capturas de pantalla de la página?
No en el bucle predeterminado. Lee el estado estructurado (HTML y roles ARIA, nombres, valores y texto visible) y construye una tabla indexada de elementos candidatos. Las capturas de pantalla aparecen en el inspector local para los humanos, no en la ruta de decisión.
- ¿Cuánto puede durar una sola ejecución?
Sesenta acciones del navegador y 120 solicitudes de decisión, lo que ocurra primero. Se conservan hasta 250 candidatos de acción por observación, y todo lo que quede truncado más allá de eso no puede seleccionarse en absoluto, lo cual es un modo de fallo real en páginas muy largas.
- ¿Cómo fijo una versión de algo que no tiene releases?
Fijas un hash de commit, lo que significa que la decisión de actualizar es enteramente tuya. No hay notas de la versión que leer, ninguna señal de versionado semántico que indique un cambio incompatible, ni una etiqueta a la que volver, así que reserva tiempo para leer el diff tú mismo cada vez que avances, y vendoriza la dependencia si un cambio silencioso en el origen pudiera hacer daño.
- ¿Cuánto cuesta una decisión?
TypeSafe cotiza la entrada a 0,042 $ por millón de tokens, con la salida gratuita. La ejecución medida en Google Flights también gastó unos 0,00006 $ en dos llamadas al modelo de texto pequeño, así que a esta escala el tiempo de navegador cuesta más que la inferencia.