Por qué OpenAI creó Symphony y lo lanzó de forma gratuita
BBetter Stack
Computing/SoftwareManagementInternet Technology
Transcript
00:00:00Este es Symphony de OpenAI, una herramienta de código abierto para orquestar agentes de larga duración usando un
00:00:05rastreador de problemas existente como Linear para ayudar a tu agente a completar tareas de forma autónoma sin ninguna
00:00:10supervisión humana. Pero, ¿por qué un agente no tiene que construirlo desde cero antes de que puedas usarlo?
00:00:14¿Solo es compatible con Codex CLI? ¿Y es este el comienzo de más
00:00:18herramientas de código abierto de OpenAI? Suscríbete y vamos a averiguarlo.
00:00:25Symphony solo existe porque OpenAI se topó con un cuello de botella de atención humana, lo que significa que los ingenieros
00:00:30solo podían supervisar de 3 a 5 sesiones de Codex simultáneamente antes de que el cambio de contexto comenzara
00:00:35a afectar negativamente a la productividad. Esto, por supuesto, no iba a escalar. Así que, ¿adivinen cómo OpenAI solucionó
00:00:41el problema de agentes rápidos y gestores humanos lentos? Se deshicieron de los gestores humanos. Más o menos.
00:00:47Porque con Symphony, los humanos ponen tareas en un tablero, se crea un nuevo agente para completar esa tarea,
00:00:52y el agente solo involucrará al humano si hay algo que revisar.
00:00:55Pero, ¿cómo se compara Symphony con herramientas similares como Multica y Conductor? Bueno,
00:00:58mira la demostración y eso quedará muy claro. Antes de empezar, sin embargo, solo quiero decir
00:01:03que Symphony tiene el proceso de instalación más extraño que he visto en mi vida. O podría ser la
00:01:07forma más ingeniosa de instalar algo. Llegaremos a eso más tarde.
00:01:10Primero, hagamos un ejemplo básico. Tengo a Symphony funcionando,
00:01:14buscando tareas en Linear para trabajar. Y en Linear, voy a crear un nuevo problema,
00:01:18que consistirá en construir una aplicación Hello World usando TypeScript y BUN.
00:01:22Ahora mismo, Symphony no está configurado para trabajar en tareas pendientes. Así que cambiaré el estado a To-Do
00:01:27y pulsaré en Crear Problema. Recuerda el ID de la tarea, que es SYN7.
00:01:31Después de un rato, Symphony detecta el ID de esa tarea. Y unos segundos después,
00:01:36tenemos un error de validación de GraphQL, que no es gran cosa y es muy fácil de corregir para Codex.
00:01:41Pero tras eso, vemos que Codex ha completado el trabajo, ha cambiado el problema
00:01:45de To-Do a Done, y ha dejado un comentario aquí desde Symphony. Lo que significa que si vamos a
00:01:49nuestro directorio de espacios de trabajo de Symphony, hablaremos de eso más tarde, podemos ver que tenemos un nuevo
00:01:53espacio de trabajo con el mismo ID que nuestro problema. Y si entramos en ese espacio de trabajo, tenemos la lista
00:01:58de archivos creados para la aplicación Hello World en TypeScript y BUN. Y si vamos al directorio source,
00:02:04podemos ver que el código de la aplicación está por aquí. Y eso es básicamente Symphony en pocas palabras.
00:02:08Ahora veamos cómo configurarlo. Hay dos formas de instalar Symphony
00:02:12según este repositorio. La opción dos, que es a la que estamos acostumbrados, configuramos Elixir,
00:02:16clonamos el repositorio, luego compilamos el código y lo ejecutamos usando el archivo de flujo de trabajo existente.
00:02:20La opción uno, sin embargo, es posiblemente la forma más extraña o vanguardista de instalar algo.
00:02:25Básicamente le das a tu agente de programación este prompt, y leerá el archivo de especificaciones,
00:02:30que tiene más de 2000 líneas. Pero básicamente le da a tu agente instrucciones
00:02:34detalladas sobre cómo construir Symphony, lo cual es increíble porque si todos siguieran este camino,
00:02:39no habría dos versiones de Symphony iguales. Algunas personas tendrían diferentes funciones en
00:02:43diferentes lenguajes, lo que sería un caos para OpenAI a la hora de mantener y dar soporte.
00:02:47Pero también es un poco genial porque si construyeras tu propia versión de Symphony,
00:02:51te sentirías responsable de ella. Corregirías los errores, añadirías las funciones,
00:02:55y básicamente la mantendrías. Y si no quisieras que Symphony usara Linear o
00:02:59Codex, eso dependería de ti. Alguien construyó una versión en Go de Symphony que se ejecuta en Charm CLI,
00:03:04y otra persona construyó una impulsada por el SDK de Claude. Yo no fui tan creativo,
00:03:09así que puse el prompt predeterminado en Codex usando GPT 5.5 Low Effort, y me dio una versión en Python
00:03:15de Symphony, lo cual tiene sentido porque los LLM son muy buenos en Python. Una vez hecho esto,
00:03:19necesitarás una clave API personal de Linear, que puedes obtener en seguridad y acceso,
00:03:23y puedes crear una haciendo clic aquí. Luego tendrás que añadir esa clave a tu perfil de trabajo,
00:03:28que es un archivo que le dice a Symphony cómo hacer su trabajo, que contiene algo de front matter en YAML,
00:03:32que por supuesto tiene la clave API, estados activos para que el agente sepa cuándo puede trabajar en una tarea,
00:03:37así como la raíz del espacio de trabajo y el comando de Codex, que es el comando de shell que Symphony
00:03:42usa para lanzar un agente de programación. Y debajo de eso está el prompt en markdown enviado al agente
00:03:46para cada problema. Puedes acceder al archivo workflow.md de OpenAI desde su repositorio si te interesa.
00:03:51Pero a día de hoy, este flujo de trabajo no es apto para un proyecto real. Digamos que quisiera hacer cambios en
00:03:56mi aplicación de emulación de película en la que he estado trabajando. Tendría que añadir un gancho create-after, que se ejecuta
00:04:01después de que Symphony crea un espacio de trabajo para un problema, y este gancho primero clonará el repositorio en el
00:04:06directorio del espacio de trabajo, y luego creará una nueva rama en ese repositorio. También he añadido un gancho run-after,
00:04:10que se ejecuta después de que Codex termine de trabajar en el problema. Así que este prepara los archivos, luego
00:04:15crea un nuevo commit antes de subir la rama y crear una nueva pull request con estos valores.
00:04:20Así que ahora si ejecuto Symphony usando UV, que también fue adquirido por OpenAI, pero ese es tema para otro
00:04:25vídeo, está buscando nuevos problemas. Así que ahora si creo un nuevo problema para actualizar el readme, solo en
00:04:30la sección que muestra el procesamiento por lotes, para usar un comodín en lugar de mostrar varios archivos, de nuevo,
00:04:35lo cambiaré de pendiente a to-do, y luego pulsaré en crear problema. Ahora Symphony ha detectado ese
00:04:40problema. Y si miro el directorio de espacios de trabajo de Symphony, vemos que hay una nueva carpeta que coincide
00:04:45con el ID de nuestro problema, que contiene el proyecto clonado. Y ahora que Symphony ha terminado de trabajar en el
00:04:49problema, ha cambiado el estado a hecho y ha creado una nueva PR con un enlace al ticket de Linear
00:04:54y el cambio exacto que solicité. Ahora, por supuesto, podría cambiar mi código de Symphony para añadir una
00:04:59mejor descripción de la PR y poner un enlace a la PR en los comentarios, pero estoy seguro de que eso es muy fácil de
00:05:04hacer para Codex. Así que esa es una visión rápida de Symphony. Si ya te sientes cómodo con Linear o trabajas en una
00:05:08empresa que lo usa, te sentirás como en casa con la interfaz. Y si eres usuario de Codex,
00:05:13puedes usar tus habilidades, herramientas MCP y plugins que ya tengas instalados. Yo personalmente no
00:05:18uso Codex, pero puedo ver claramente la visión que OpenAI buscaba con Symphony. Imagina
00:05:22que tuvieras un equipo de desarrolladores trabajando en el mismo proyecto con IA. En lugar de que cada uno tuviera su
00:05:28propio arnés personal con su propio flujo de trabajo, podría haber un agente central con habilidades centrales,
00:05:33herramientas centrales, flujos de trabajo centrales y plugins. Y cada desarrollador puede comunicarse con eso
00:05:37dándole una tarea y pueden ver en qué están trabajando otros desarrolladores, qué prompts han usado y pueden
00:05:41ver de un vistazo qué otras funciones podrían afectar a la función en la que están trabajando. Aunque
00:05:46es muy difícil idear una función que no toque otra parte del código en la que alguien
00:05:49más esté trabajando. Pero por muy genial que sea Symphony, en mi opinión, Multica hace un mejor trabajo porque es
00:05:54más fácil de configurar, crear y añadir diferentes agentes, e incluso puedes programar tareas. No obstante,
00:05:59veo perfectamente un lugar para Symphony. Es como la versión básica de Multica donde
00:06:04puedes añadir las funciones exactas que quieras en lugar de tener un producto ya construido para ti. Así que piensa
00:06:08en Symphony como el arnés Pi y en otras herramientas como Multica o Conductor como Claude Code. Y si
00:06:13no sabes nada sobre Multica, echa un vistazo a este vídeo, que repasa todo lo que
00:06:18necesitas saber al respecto.