OpenAI ha lanzado Symphony, un marco de código abierto diseñado para gestionar agentes de codificación de IA autónomos a través de “ejecuciones de implementación” estructuradas. El proyecto proporciona un sistema para automatizar las tareas de desarrollo de software conectando rastreadores de problemas a agentes basados en LLM.
Arquitectura del sistema: Elixir y BEAM
Symphony se construye utilizando Elixir y el tiempo de ejecución Erlang/BEAM. La elección de la pila se centra en la tolerancia a fallos y la concurrencia. Dado que los agentes autónomos a menudo realizan tareas de larga duración que pueden fallar o requerir reintentos, los árboles de supervisión de BEAM permiten a Symphony gestionar cientos de ejecuciones de implementación aisladas simultáneamente.
El sistema utiliza PostgreSQL (a través de Ecto) para la persistencia del estado y está diseñado para ejecutarse como un demonio persistente. Funciona sondeando un rastreador de problemas (que actualmente es Linear de forma predeterminada) para identificar tareas que están listas para que las aborde un agente.
El ciclo de vida de ejecución de implementación
La unidad principal de trabajo en Symphony es la ejecución de implementación. El ciclo de vida de una ejecución sigue una secuencia específica:
Sondeo y activación: Symphony monitorea un estado específico en el rastreador de problemas (por ejemplo, “Listo para el agente”). Aislamiento de Sandbox: para cada problema, el marco crea un espacio de trabajo determinista por problema. Esto garantiza que las acciones del agente se limiten a un directorio específico y no interfieran con otras ejecuciones simultáneas. Ejecución del agente: un agente (que normalmente utiliza los modelos de OpenAI) se inicializa para realizar la tarea descrita en el problema. Prueba de trabajo: antes de que una tarea se considere completa, el agente debe proporcionar una “prueba de trabajo”. Esto incluye generar informes de estado de CI, aprobar pruebas unitarias, proporcionar comentarios sobre la revisión de relaciones públicas y crear un recorrido por los cambios. Aterrizaje: si se verifica la prueba de trabajo, el agente “aterriza” el código enviando o fusionando una solicitud de extracción (PR) en el repositorio.
Configuración a través de WORKFLOW.md
Symphony utiliza un archivo de configuración en el repositorio llamado WORKFLOW.md. Este archivo sirve como contrato técnico entre el equipo de desarrolladores y el agente. Contiene:
Las instrucciones y avisos principales del sistema del agente. Configuración de tiempo de ejecución para el entorno de implementación. Reglas específicas sobre cómo el agente debe interactuar con el código base.
Al mantener estas instrucciones en el repositorio, los equipos pueden controlar las versiones de sus políticas de agente junto con su código fuente, asegurando que el comportamiento del agente siga siendo consistente con la versión específica del código base que está modificando.
Requisitos de ingeniería del arnés
La documentación especifica que Symphony es más eficaz en entornos que practican la ingeniería de arneses. Esto se refiere a una estructura de repositorio optimizada para la interacción con la máquina. Los requisitos clave incluyen:
Pruebas herméticas: pruebas que pueden ejecutarse localmente y de manera confiable sin dependencias externas. Documentos legibles por máquina: documentación y scripts que permiten a un agente descubrir cómo construir, probar e implementar el proyecto de forma autónoma. Arquitectura modular: bases de código donde se minimizan los efectos secundarios, lo que permite a los agentes realizar cambios con gran confianza.
Conclusiones clave
Orquestación tolerante a fallos a través de Elixir: Symphony utiliza Elixir y el tiempo de ejecución de Erlang/BEAM para gestionar los ciclos de vida de los agentes. Esta elección de arquitectura proporciona la alta concurrencia y tolerancia a fallas necesarias para supervisar “ejecuciones de implementación” independientes y de larga duración sin fallas en todo el sistema. Ejecuciones de implementación administradas por el estado: el marco hace la transición de la codificación de IA de indicaciones manuales a un bucle automatizado: sondea los rastreadores de problemas (como Linear), crea espacios de trabajo aislados en el espacio aislado, ejecuta el agente y requiere una “prueba de trabajo” (pasos de CI y recorridos) antes de fusionar el código. Contratos de agente controlados por versión: a través de la especificación WORKFLOW.md, las indicaciones del agente y las configuraciones de tiempo de ejecución se almacenan directamente en el repositorio. Esto trata las instrucciones operativas de la IA como código, lo que garantiza que el comportamiento del agente esté versionado y sincronizado con la rama específica que está modificando. Dependencia de la ingeniería de arnés: para que el sistema sea eficaz, los repositorios deben adoptar la ingeniería de arnés. Esto implica estructurar bases de código para la legibilidad de la máquina, incluidos conjuntos de pruebas herméticos (autónomos) y arquitecturas modulares que permiten a los agentes verificar su propio trabajo de forma autónoma. Alcance del programador enfocado: Symphony se define estrictamente como un programador, corredor y lector de seguimiento. Está diseñado específicamente para cerrar la brecha entre las herramientas de gestión de proyectos y la ejecución de código, en lugar de servir como una plataforma multiinquilino de propósito general o un motor de flujo de trabajo amplio.
Consulte el repositorio aquí. Además, no dude en seguirnos en Twitter y no olvide unirse a nuestro SubReddit de más de 120.000 ML y suscribirse a nuestro boletín. ¡Esperar! estas en telegrama? Ahora también puedes unirte a nosotros en Telegram.