La tesis central de Nova es que la automatización asistida por IA en el desarrollo de software no se limita a la generación de código, sino que debe integrarse profundamente en el ciclo de vida de ingeniería existente, especialmente en entornos de gran escala con monorepos y sistemas de construcción complejos. El problema fundamental que resuelve es la ineficiencia y la distracción causadas por tareas repetitivas pero críticas, como la depuración de fallos de CI, la actualización de dependencias y la remediación de pruebas inestables. Al proporcionar una plataforma unificada para agentes de codificación, Dropbox busca estandarizar la ejecución, validación y manejo de contexto, permitiendo que los ingenieros se centren en problemas de mayor valor.
Históricamente, la automatización en el desarrollo de software ha evolucionado desde scripts simples hasta sistemas de CI/CD sofisticados. Sin embargo, la 'última milla' de la resolución de problemas y la adaptación a cambios en el código base a menudo ha requerido intervención humana. Con el auge de los modelos de lenguaje grandes (LLMs), la oportunidad de automatizar estas tareas cognitivamente intensivas se ha vuelto viable, pero requiere una infraestructura que pueda 'aterrizar' las sugerencias de la IA en el entorno de ingeniería real y validarlas rigurosamente.
Arquitectura del Sistema
Nova es una plataforma de servicios que orquesta la ejecución de agentes de codificación en entornos aislados. Cada sesión de Nova opera en un entorno efímero que contiene una instantánea del monorepo de Dropbox en un commit específico. La interacción con el agente se realiza a través de una API, CLI o interfaz web, donde el llamador especifica una tarea y, opcionalmente, comandos de validación (ej. bazel test).
Un componente clave es el bucle de validación: si los comandos de validación fallan (ej. una prueba no pasa o la compilación falla), Nova retroalimenta los resultados al agente, permitiéndole iterar y corregir el fallo. Este ciclo de 'proponer un cambio, validarlo, y continuar solo si los resultados se mantienen' es fundamental para la fiabilidad. La plataforma integra 'skills' y 'plugins' que otorgan a los agentes acceso a sistemas internos de Dropbox, como sistemas de observabilidad (logs, métricas) y herramientas de gestión de código (MCP), permitiéndoles ir más allá de la edición de archivos y realizar tareas como la recopilación de evidencia o la inspección de fallos.
La publicación de código se mantiene fuera del control directo del agente; cada sesión de Nova se limita a una única rama, simplificando la gestión y el seguimiento de los cambios. La integración con Bazel es crítica, utilizando sus herramientas de selectividad para validar cambios solo contra los objetivos de compilación y prueba relevantes, optimizando el rendimiento en un monorepo masivo. La plataforma también incluye herramientas para la evaluación de prompts, observabilidad y recolección de feedback para monitorear el rendimiento de los agentes.
Flujo de Remediación de Fallos de CI con Nova
- 1 Athena Detecta un fallo de prueba inestable (flaky test)
- 2 Deflaker Inicia un workflow, recopila logs de fallos y éxitos
- 3 Deflaker Envía logs y contexto a Nova con una tarea de 'identificar causa y proponer a...
- 4 Nova Session Agente genera un cambio de código propuesto
- 5 Nova Validation Ejecuta el test 100+ veces en CI para validar el arreglo
- 6 Nova Session Si falla, retroalimenta nuevos logs al agente para otra iteración
- 7 Deflaker Bucle de 'fix-and-validate' hasta 5 intentos o arreglo exitoso
- 8 Deflaker Publica el arreglo validado o notifica el fallo
| Capa | Tecnología | Justificación |
|---|---|---|
| orchestration | Nova (Internal Platform) | Orquestación de sesiones de agentes de codificación, gestión de entornos aislados y bucles de validación. vs Herramientas de agentes de codificación de terceros (no aptas para monorepo/infraestructura de Dropbox) |
| data-processing | Bazel | Sistema de construcción y prueba, utilizado para la validación de cambios de código y la gestión de dependencias en el monorepo. Uso de herramientas de selectividad para validar solo los objetivos de compilación y prueba relevantes. |
| observability | Sistemas de Observabilidad Internos (ej. Dash, MCP) | Proporcionar a los agentes acceso a logs, métricas y otros datos de diagnóstico para la investigación de fallos y la contextualización de tareas. |
| orchestration | Deflaker (Internal Tool) | Workflow duradero para la remediación automatizada de pruebas inestables, integrado con Nova y Athena. |
| data-processing | Athena (Internal Tool) | Sistema de detección de pruebas inestables (flaky tests). |
| orchestration | RenovateBot | Integración para que los agentes de Nova puedan abordar las roturas introducidas por las actualizaciones de dependencias. |
Trade-offs
Ganancias
- ▲ Eficiencia en tareas repetitivas
- ▲ Consistencia en la ejecución y validación de agentes
- ▲ Integración profunda con la infraestructura existente
- ▲ Reducción del 'toil' de ingeniería
Costes
- △ Complejidad de la plataforma interna
- △ Mantenimiento de la infraestructura de agentes
{
"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"
}Fundamentos Teóricos
El concepto de agentes autónomos que operan en un bucle de percepción-acción-validación tiene raíces en la inteligencia artificial clásica y la robótica, donde los agentes interactúan con un entorno, toman decisiones y ajustan su comportamiento basándose en la retroalimentación. En el contexto del desarrollo de software, esto se alinea con los principios de la ingeniería de software empírica y la depuración automatizada. La idea de 'grounding' o 'aterrizar' un sistema de IA en el mundo real, validando sus salidas contra un entorno ejecutable, es un principio fundamental para la fiabilidad de los sistemas autónomos.
Aunque no se cita un paper específico, el enfoque de Nova resuena con la investigación en 'program synthesis' y 'automated program repair', donde los sistemas intentan generar o modificar código para satisfacer ciertas propiedades o corregir errores. Trabajos como los de Ko et al. sobre depuración interactiva o el uso de técnicas de 'fuzzing' para encontrar errores y luego repararlos, proporcionan un telón de fondo académico para el bucle de validación de Nova. La gestión de un monorepo a escala, con sus desafíos de construcción y prueba, también se conecta con la investigación en sistemas de construcción distribuida y la optimización de CI/CD, donde la eficiencia y la fiabilidad son primordiales.