Un equipo de investigadores de Google Cloud AI Research, la Universidad Washington en San Luis y la Universidad de Carolina del Norte en Chapel Hill liberó EnvHarness, una capa programable que convierte un banco de pruebas estático para agentes en uno que se adapta a la política que se está entrenando sobre él.
El problema que ataca es concreto. Los agentes basados en modelos de lenguaje aprenden cada vez menos de texto curado y cada vez más de entornos interactivos, pero esos entornos están construidos a mano y quedan congelados: se comportan de manera idéntica sin importar qué agente actúe ni cuánto haya mejorado. No pueden apuntar a la debilidad de una política y no les queda nada por enseñar una vez que fueron resueltos.
¿Por qué no basta con generar más entornos?
La respuesta habitual es generar entornos nuevos. El paper de EnvHarness le pone dos costos a esa vía: las cadenas de generación son específicas de cada dominio y no se transfieren, y los verificadores escritos por un modelo de lenguaje hay que sobregenerarlos y filtrarlos con dureza, sin llegar nunca a confiar del todo en ellos.
EnvHarness invierte la jugada. En vez de escribir entornos nuevos, envuelve el que ya existe en componentes enchufables que operan estrictamente a través de la interfaz estándar reset() / step(). Esos componentes cambian dónde empieza un episodio, qué le está permitido hacer al agente y qué alcanza a ver, mientras el simulador, las tareas y el verificador construido por humanos quedan intactos.
Formalmente, un componente es una transformación E' = w(E) que reescribe los términos de estado, acción, observación y transición. El término de recompensa queda deliberadamente fuera. Como ninguna intervención llega al simulador, cada tarea remodelada conserva su verificador original hecho por humanos, y como nada toca código específico del banco de pruebas, una sola implementación cubre todos los dominios.
Los tres componentes que se publican
Vienen tres piezas y se pueden componer libremente entre ellas:
- Stage reproduce una lista fija de acciones después del
reset(), de modo que el episodio arranque en otra parte. Esconder el tazón objetivo dentro de un cajón cerrado obliga a buscar en vez de simplemente estirar el brazo. - Contract instala ganchos por paso sobre los ejes de acción, transición y observación: bloquear una acción, reescribir una respuesta, truncar una observación.
- Chain compone un segundo entorno dentro del mismo episodio bajo un presupuesto de pasos compartido, y el veredicto conjunto es la conjunción de ambos verificadores.
EnvRigger, el diseñador automático
Los componentes son agnósticos a la política, pero elegirlos no lo es. De eso se encarga EnvRigger, que trata a la política como una caja negra y corre cuatro etapas: observa cinco rollouts de base, diagnostica una falla sistemática, escribe los componentes como código Python real y valida sobre cinco rollouts frescos.
Los candidatos irresolubles y los trivialmente resolubles se rechazan por igual, con hasta cinco rondas de revisión por tarea. Los ganchos generados compilan en un subproceso aislado, así una mutación defectuosa termina siendo una traza registrada y no una corrida muerta.
¿Cuánto rinde en los bancos de pruebas?
El equipo evaluó sobre ALFWorld, WebArena, SWE-bench Verified, OfficeQA y SpreadsheetBench. Las habilidades extraídas con inducción al estilo ReasoningBank superan a ambos controles en tareas reservadas que nunca fueron modificadas.
| Métrica | Entorno original | Con EnvHarness |
|---|---|---|
| ALFWorld (promedio) | 62,4 | 68,3 |
| ALFWorld, partición fuera de distribución | base | +9,0 puntos |
| SWE-bench Verified (tasa de resolución) | 49,88 | 52,58 |
| SWE-bench Verified (pasos promedio) | 55,01 | 49,61 |
| Escalamiento a 300 entornos | 52,13 | 54,79 |
Esa caída de pasos, de 55,01 a 49,61, es la que sostiene el 9,8% de eficiencia que reclama el paper. En SpreadsheetBench y WebArena ocurre algo más incómodo para la práctica habitual: las habilidades extraídas de entornos sin modificar quedan por debajo de la línea base sin habilidades. Es decir, remodelar el entorno no es una mejora marginal, es lo que hace que el ejercicio valga la pena. Frente a generadores específicos de dominio, EnvHarness le saca 2,46 puntos a SWE-smith con 5,11 pasos menos.
Bajo GRPO sobre Qwen3-8B-base, el aprendizaje por refuerzo en entornos remodelados le gana al de los originales en tres de cuatro métricas (ALFWorld dentro de distribución sube de 81,4 a 87,9), con una regresión pequeña en la partición fuera de distribución, de 89,6 a 88,8. Al escalar, la versión con EnvHarness llega a 54,79 con 300 entornos, contra 52,13 de los originales y 50,37 de los generados, porque el diseñador coevoluciona cada lote contra la política vigente. Y cuando se le pide dirigir la tasa de éxito por tarea a una banda de entre 0,4 y 0,6, la cobertura dentro de esa banda sube del 6% al 80%.
¿Se puede usar hoy?
Sí, siempre que ya se opere un ciclo de evaluación de agentes. EnvHarness se publica como Python bajo licencia Apache 2.0, con controladores de reproducción para seis entornos. Sumar un banco de pruebas nuevo requiere implementar una sola interfaz (reset / step / observe / evaluate / get_env_state / save_state / from_state) y nada aguas abajo cambia.
El requisito duro es que el entorno sea reiniciable, y ahí está la limitación real: quedan fuera las cuentas de usuario en vivo y los robots físicos. El código está disponible en el repositorio de GitHub y en la página del proyecto, junto al paper completo.




