El problema fundamental que Nova resuelve es la ineficiencia y la repetitividad inherente a muchas tareas del ciclo de vida del desarrollo de software, incluso aquellas que requieren juicio de ingeniería. En entornos de escala hyperscaler, estas tareas se magnifican por la complejidad de monorepos, sistemas de construcción distribuidos y la necesidad de validación rigurosa. La tesis central es que los agentes de IA pueden automatizar y acelerar estas tareas repetitivas, liberando a los ingenieros para trabajo de mayor valor, pero solo si están profundamente integrados en la infraestructura y los flujos de trabajo existentes de la organización.

La relevancia de este problema es creciente con la madurez de los modelos de lenguaje grandes (LLMs) y su capacidad para generar y razonar sobre código. Sin embargo, la simple generación de código no es suficiente; los agentes necesitan operar en un contexto real, interactuar con sistemas de construcción, pruebas y observabilidad, y ser capaces de iterar sobre fallos. Nova aborda esto proporcionando un entorno de ejecución aislado y contextualizado que permite a los agentes participar en el ciclo de 'proponer, validar, corregir'.

Arquitectura del Sistema

Nova es una plataforma de servicio que orquesta la ejecución de agentes de codificación de IA. Cada sesión de Nova se ejecuta en un entorno aislado que contiene una instantánea del monorepo de Dropbox en un commit específico. El sistema permite a los llamadores especificar una tarea y, opcionalmente, comandos de validación que se ejecutan después de que el agente propone un cambio. Si la validación falla (ej. una prueba no pasa o una construcción se rompe), Nova retroalimenta los resultados al agente, permitiéndole iterar y corregir el fallo. Este bucle de 'fix-and-validate' es central para la fiabilidad del sistema.

La plataforma se integra con herramientas existentes como Bazel para la construcción y prueba, utilizando sus capacidades de selectividad para validar cambios eficientemente. También se integra con sistemas de observabilidad y herramientas internas (como Athena para detección de tests flaky) a través de 'skills', 'plugins' e integraciones MCP. La publicación de código se mantiene fuera del control directo del agente, limitando cada sesión a una única rama para mantener la predictibilidad y simplificar la automatización de tareas como la ejecución de pruebas o el rebase. Nova expone interfaces web, de línea de comandos y API para soportar tanto sesiones interactivas como flujos de trabajo asíncronos y automatizados.

Flujo de Corrección de Fallos con Agente Nova

  1. 1 Detección de Fallo CI/Athena detecta un fallo (ej. test flaky, build roto).
  2. 2 Creación de Sesión Nova Se inicia una sesión Nova con snapshot del código y contexto del fallo.
  3. 3 Agente Propone Cambio Agente de IA analiza el contexto y propone un parche de código.
  4. 4 Validación de Cambio Nova ejecuta comandos de validación (ej. `bazel test`) en el entorno aislado.
  5. 5 Evaluación de Validación Si la validación falla, se retroalimenta al agente con logs y resultados.
  6. 6 Iteración del Agente Agente ajusta el parche y propone una nueva versión (bucle).
  7. 7 Validación Exitosa Si la validación pasa, el cambio se considera listo.
  8. 8 Publicación de Rama Nova publica el cambio en una rama para revisión humana.
CapaTecnologíaJustificación
orchestration Nova (plataforma interna) Orquestación de sesiones de agentes de IA, gestión de entornos aislados, bucles de validación y retroalimentación.
compute Entornos aislados Proporcionar un sandbox seguro y reproducible para la ejecución de agentes y la validación de código.
data-processing Bazel Sistema de construcción y prueba para el monorepo, utilizado para la validación de cambios propuestos por los agentes. Uso de selectividad para validar solo los targets relevantes.
observability Sistemas de observabilidad internos Proporcionar contexto a los agentes (logs, métricas) y permitir la evaluación del rendimiento de los agentes. Integración vía 'skills', 'plugins' y MCP.
messaging Slack Integración para iniciar sesiones Nova con contexto de hilos de discusión.
{
"repo_commit": "<commit-sha>",
"task": "Investigate this CI failure and propose a fix",
"validation_commands": [
"bazel test //path/to:test_target",
"bazel test //path/to/related:all"
],
"continue_on_validation_failure": true,
"max_iterations": 5,
"push_branch": "ai/nova/ci-fix"
}
Ejemplo de una solicitud JSON para una sesión Nova, especificando la tarea, comandos de validación, iteraciones máximas y la rama de publicación.

Fundamentos Teóricos

El concepto de agentes que operan en un bucle de 'percepción-acción-recompensa' tiene raíces profundas en la inteligencia artificial y la robótica, donde los agentes interactúan con un entorno, toman decisiones y ajustan su comportamiento en función de la retroalimentación. En el contexto de la ingeniería de software, esto se alinea con los principios de los sistemas de control adaptativos y los bucles de retroalimentación (feedback loops) que son fundamentales en la ingeniería de sistemas distribuidos.

Aunque no se cita un paper específico, la idea de un sistema que itera sobre fallos y aprende de ellos se relaciona con trabajos en 'program synthesis' y 'automated debugging', donde los sistemas intentan generar o reparar código basándose en especificaciones o resultados de pruebas. La integración de la validación hermética y los entornos aislados refleja principios de 'reproducible builds' y 'hermetic execution' popularizados por sistemas como Bazel, que buscan garantizar que las salidas de un proceso sean determinísticas y no dependan de factores externos no declarados. Esto es crucial para la fiabilidad de los agentes que operan en un bucle de corrección.