El equipo Astro construyó secretamente el mejor framework de agentes de IA

BBetter Stack
컴퓨터/소프트웨어창업/스타트업AI/미래기술

Transcript

00:00:00Este es Flu, un framework de código abierto para crear agentes de IA hecho por el equipo detrás de Astro,
00:00:04que básicamente toma lo que hace Cloud Code como entorno y lo hace 100% programable.
00:00:09Así que funciones como habilidades, herramientas y sandboxes están soportadas desde el primer momento,
00:00:13para que puedas crear un entorno de agente completo y desplegarlo en cualquier lugar con solo unas líneas de TypeScript.
00:00:19Pero, ¿por qué el equipo de Astro decidiría construir un framework para entornos de agentes en primer lugar?
00:00:23¿Y cuál es ese truco genial que puedes hacer con los sandboxes que permite ejecutar agentes mucho más barato?
00:00:28Suscríbete y averigüémoslo.
00:00:33Flu fue construido por el cofundador de Astro, y curiosamente,
00:00:36ellos no se propusieron construir un framework para entornos de agentes.
00:00:39Fred y el equipo crearon Flu para ejecutar flujos de trabajo de IA dentro del propio repositorio de GitHub de Astro.
00:00:44Pero cuando otro ingeniero de Amplitude lo tuvo en sus manos,
00:00:47el equipo se dio cuenta de que esta es una herramienta a la que cualquier agente podría tener acceso,
00:00:51lo cual en realidad tiene sentido si lo piensas.
00:00:53Quiero decir, echemos un vistazo a Cloud Code, por ejemplo.
00:00:55Debajo de la terminal o de la interfaz de chat de usuario hay un entorno,
00:00:58así que soporta herramientas personalizadas de servidores MCP, lee archivos Cloud MD,
00:01:02tiene soporte para sandboxes y soporte para habilidades reutilizables.
00:01:05Esto y mucho, mucho más permite que el modelo haga un trabajo real,
00:01:08lo cual Flu te puede dar en solo unas pocas líneas de código.
00:01:11Hace esto al estar construido sobre Pi, que es un entorno de agente minimalista en sí mismo,
00:01:16lo mismo sobre lo que está construido OpenClaw,
00:01:18y envuelve un framework real alrededor del núcleo de agente de Pi.
00:01:21Flu en realidad hace algo inteligente con los sandboxes para ayudarte a ejecutarlos mucho más barato,
00:01:25de lo cual hablaré un poco más tarde.
00:01:26Pero si volvemos al ejemplo de Cloud Code,
00:01:28se asume que hay un humano detrás del volante dirigiendo al agente,
00:01:31lo cual suele ser el caso.
00:01:33Pero Flu no tiene esa misma limitación.
00:01:35Con Flu, puedes construir agentes como Cloud Code que requieren intervención humana,
00:01:38pero también puedes construir flujos de trabajo que no requieren un humano en absoluto,
00:01:42lo cual es útil para procesos agenticos que son muy específicos
00:01:44y no necesitan cambiar tanto.
00:01:46Ahora, podrías estar pensando,
00:01:47esto suena muy similar a algo como Mastra o el SDK de IA de Vercel,
00:01:52y hablaré de las diferencias un poco más adelante.
00:01:54De hecho, las diferencias serán mucho más claras si hacemos una demostración sencilla.
00:01:57Así que sigamos adelante y hagamos eso.
00:01:58Para empezar, tendrás que instalar el runtime de Flu,
00:02:01que es sobre lo que tu agente se importa y se ejecuta,
00:02:04y luego tendrás que instalar la CLI de Flu,
00:02:06que compila y sirve a tu agente.
00:02:08También tendrás que configurar una clave de API de uno de los muchos proveedores que soporta Pi.
00:02:13Para esta demo, sin embargo, voy a usar Anthropic,
00:02:15y luego tendrás que ejecutar flu init con los objetivos,
00:02:18lo que crea un archivo de configuración de flu para que la CLI sepa cómo empaquetar tu proyecto.
00:02:22Puedes elegir entre Node o Cloudflare,
00:02:24y hablaré de las diferencias en solo un segundo.
00:02:26Pero ya he hecho estos pasos,
00:02:27así que echemos un vistazo a cómo se ven estos archivos.
00:02:30Aquí están los archivos típicos que obtienes de un proyecto vacío de bun,
00:02:33y algunos de estos archivos ni siquiera se usan.
00:02:35Si echamos un vistazo a index.ts, esto no se va a usar para nada.
00:02:38Tampoco el archivo readme,
00:02:39pero lo que realmente se va a usar es este archivo flu config.ts,
00:02:42que usa V detrás de escena,
00:02:45la CI para usar Node en lugar de Cloudflare.
00:02:47Y la diferencia es que Node usa un servidor HTTP sobre HONO,
00:02:51y Cloudflare desplegará tu proyecto en un worker
00:02:53con un objeto duradero para persistencia.
00:02:55Ahora, después de haber hecho esos pasos,
00:02:56tendrás que crear un nuevo directorio,
00:02:57ya sea uno de agentes o uno de flujos de trabajo.
00:03:00Revisaremos los flujos de trabajo un poco más tarde,
00:03:01pero por ahora, comencé con un agente simple,
00:03:03que contiene el código de la documentación.
00:03:05Y esto básicamente establece un modelo
00:03:06y añade algunas instrucciones,
00:03:08que se añaden al prompt del sistema.
00:03:09Y eso es todo.
00:03:10Eso es todo lo que necesitas para crear un agente flu básico.
00:03:13Veámoslo en acción.
00:03:14Para ejecutarlo, podemos usar flu connect,
00:03:15que construye y ejecuta el agente.
00:03:17Y estamos haciendo coincidir el nombre de nuestro archivo TS,
00:03:20que es hello world,
00:03:21antes de darle una ID de instancia,
00:03:22que podría ser cualquiera.
00:03:24Así que incluso podría ser un local uno, dos, tres.
00:03:25Pero esto es útil si tienes muchos agentes ejecutándose
00:03:27y cada agente puede tener su propia ID única.
00:03:29Esto también es útil para desplegar en Cloudflare
00:03:31porque esta ID se asigna a su propia instancia de objeto duradero.
00:03:35Así que ahora si pulsamos enter,
00:03:36podemos ver que carga la configuración,
00:03:38lee el objetivo y ejecuta el agente que ha encontrado.
00:03:40Ahora no tenemos un archivo MD del agente,
00:03:42pero si lo tuviéramos, usaría eso.
00:03:43Y ahora ha construido los agentes en este archivo server.mjs
00:03:46y nos ha dado la capacidad de introducir un prompt.
00:03:48Así que puedo decir algo como, dame una broma al azar.
00:03:50Y aquí podemos ver que el agente empieza a pensar,
00:03:52responde, así que transmite su ciclo de vida.
00:03:54Luego me da una broma, me pide otra.
00:03:57Pero luego aquí abajo, imprime el JSON final,
00:03:59que comprende el texto,
00:04:00así como algunos tokens de entrada y salida,
00:04:02el costo de todo el prompt
00:04:03y el modelo que se utilizó.
00:04:05Por supuesto, podríamos seguir hablando con este agente,
00:04:06pero por ahora, voy a cerrarlo.
00:04:08Y ese es un ejemplo de cómo construir un agente básico con Flu.
00:04:11Hagamos algo un poco más complicado.
00:04:13Construyamos un flujo de trabajo para ayudar a generar algunos títulos
00:04:15para este video de YouTube.
00:04:16Y para hacer eso, de nuevo, estamos creando un agente
00:04:18con algunas instrucciones más complejas.
00:04:20Y esta vez sí que tenemos una habilidad.
00:04:23Así que la habilidad se importa aquí con un atributo de importación de habilidad.
00:04:26Y aquí, fíjate que ya no estamos exportando el agente en sí,
00:04:29sino que esta vez estamos exportando una función llamada run.
00:04:31Y lo que esto hace es inicializar el agente
00:04:34para el flujo de trabajo y luego abre una sesión en el entorno.
00:04:36Ahora, lo que sucede después es bastante interesante.
00:04:38Así que aquí, lo que está pasando es que estamos obteniendo la ruta
00:04:41del payload, que se estableció aquí
00:04:43en este tipo de contexto de flujo.
00:04:44Así que si cambiamos el nombre aquí a archivo,
00:04:46obtendríamos un error de tipo.
00:04:47Y aquí está obteniendo el archivo,
00:04:49al que he llamado script,
00:04:50y pasándolo como un prompt.
00:04:52Así que todo esto tendrá sentido
00:04:53si echamos un vistazo a las instrucciones de aquí,
00:04:55que le estamos diciendo que estudie el script
00:04:57y me dé 10 títulos de YouTube clickbait
00:04:59usando la habilidad de puntuación de título para clasificarlos.
00:05:01Así que veamos si esto funciona.
00:05:02Pero antes de hacerlo,
00:05:03quiero que sea obvio que los flujos de trabajo
00:05:04están en el directorio de flujo de trabajo
00:05:06y las habilidades están en el directorio de habilidades
00:05:08desde la raíz del proyecto.
00:05:09Y para ejecutar este flujo de trabajo,
00:05:10necesitamos ejecutar flu run con el nombre de nuestro flujo de trabajo.
00:05:13En mi caso, es YT titles,
00:05:14seguido del objetivo y el payload JSON,
00:05:16que es la ruta para este script.
00:05:18Así que si pulsamos enter,
00:05:19veremos que obtenemos una ID de flujo de trabajo.
00:05:21Y aquí está haciendo algo un poco extraño.
00:05:23De hecho, está buscando la habilidad,
00:05:25a pesar de que la he especificado antes.
00:05:27Y ahora en este razonamiento,
00:05:27me está diciendo que no hay archivos en el sistema de archivos.
00:05:30¿Por qué hace eso?
00:05:31Así que por defecto,
00:05:32flu ejecuta agentes en un sandbox usando solo bash.
00:05:35Todo a lo que tiene acceso es a la descripción de la habilidad,
00:05:37que ha sido registrada por aquí,
00:05:39pero no tiene acceso a ninguno de estos archivos
00:05:42relacionados con la habilidad.
00:05:43Y la habilidad en sí, si echamos un vistazo,
00:05:44ejecuta un script de Python usando bash
00:05:47para encontrar una puntuación precisa al estilo vidIQ
00:05:50para un título de YouTube.
00:05:51Así que para arreglar eso,
00:05:52voy a importar local desde flu runtime node,
00:05:54que le dice a flu que ejecute el agente en mi sistema local
00:05:57para que tenga acceso a todos mis archivos
00:05:59y pueda ejecutar scripts de Python.
00:06:01Si te preocupa la seguridad,
00:06:02explicaré cómo puedes evitar esto
00:06:03más adelante en el video.
00:06:04Pero también vamos a cambiar
00:06:05el directorio de trabajo actual a la habilidad
00:06:07dentro del directorio de habilidades de este proyecto.
00:06:10Para que flu no tenga que buscar
00:06:11para encontrar los archivos exactos que necesita.
00:06:13Y ahora cuando ejecuto este flujo de trabajo,
00:06:15podemos ver que flu lee inmediatamente el archivo MD de habilidad
00:06:17y es capaz de generar los 10 títulos clickbait
00:06:20con una puntuación para cada uno de ellos.
00:06:21Ahora, si no quieres darle a tu agente
00:06:22acceso de flujo de trabajo a tu sistema local,
00:06:25lo que podrías hacer en su lugar
00:06:26es crear una herramienta personalizada desde el archivo de Python.
00:06:28Así que aquí estoy cargando el archivo de Python en la habilidad
00:06:30y creando una herramienta llamada score title,
00:06:33que usa value bots para verificar los parámetros
00:06:35y luego ejecuta el script de Python.
00:06:37Luego podemos registrar esta herramienta dentro de nuestro agente
00:06:40y todo debería funcionar como se espera.
00:06:42Pero ahora volvamos al proyecto anterior
00:06:44y digamos que queremos activarlo basado en una llamada post HTTP.
00:06:47Bueno, solo hay una cosa que tenemos que hacer para habilitar eso.
00:06:50Y eso es simplemente añadir el middleware de ruta.
00:06:52Ahora, todo lo que tenemos que hacer es construir el proyecto flu,
00:06:54especificar nuestro objetivo, un puerto opcional,
00:06:56y luego ejecutar nuestro archivo de servidor.
00:06:58Y ahora está escuchando en el puerto que especificamos.
00:07:00Ten en cuenta que el archivo server.js
00:07:01incorpora cualquier agente o flujo de trabajo que tengamos.
00:07:03Así que solo necesitamos este archivo
00:07:05si quisiéramos desplegarlo en cualquier lugar que soporte Node.js.
00:07:07Ahora puedo ejecutar curl con el método post
00:07:09al puerto que se especificó,
00:07:11seleccionar un flujo de trabajo y darle algunos datos,
00:07:13lo que nos da una ID de flujo de trabajo.
00:07:14Y luego si hacemos curl para flujos de trabajo,
00:07:16especificando nuestra ID de flujo de trabajo específica
00:07:18y enviando a JQ solo para hacerlo más fácil de leer,
00:07:21podemos ver información sobre nuestro flujo de trabajo
00:07:23y un resumen de los resultados.
00:07:25Por supuesto, Flu soporta WebSockets en lugar de HTTP
00:07:27si quisieras transmitir la información del flujo de trabajo.
00:07:29Ahora, como de costumbre, hay tantas características que tiene Flu
00:07:31que no tuve tiempo de revisar,
00:07:33como perfiles de agente para agentes reutilizables,
00:07:35soporte para Daytona, sandboxes de Cloudflare,
00:07:37o cualquier otro sandbox simplemente usando una URL,
00:07:40añadiendo rutas personalizadas para autenticación o comprobaciones de salud,
00:07:42e incluso soporte para sub-agentes.
00:07:44Pero, ¿cómo se compara esto
00:07:45con otro framework de agente de IA de código abierto como Mastra?
00:07:48Bueno, la última vez que usé Mastra
00:07:49fue cuando hice este video,
00:07:50que puedes pausar este video e ir a verlo
00:07:52si quieres un repaso de lo que es.
00:07:54Pero cuando lo usé,
00:07:55todavía tenías que configurar manualmente las sesiones,
00:07:58la memoria, el sandbox y la carga de herramientas por ti mismo.
00:08:01Era mucho más un proceso granular paso a paso,
00:08:03y no estoy seguro de si eso ha cambiado
00:08:05para volverse más simple,
00:08:06pero creo que el enfoque que Flu está tomando
00:08:08es completamente diferente.
00:08:10Es más un enfoque primero en el entorno
00:08:11y asume que vas a estar usando
00:08:13estas características desde el principio.
00:08:14Hablando de sandboxes,
00:08:16Flu en realidad hace algo realmente inteligente con ellos.
00:08:18Así que cada agente obtiene su propio sandbox por defecto,
00:08:21lo cual expliqué antes en la demo,
00:08:22pero este sandbox está impulsado por el just Bash de Vercel,
00:08:25que re-implementa Bash en TypeScript.
00:08:27Así que ejecuta este sandbox en memoria
00:08:29en lugar de un contenedor real,
00:08:31lo que significa que obtienes acceso a las herramientas grep, glob y read
00:08:34sin pagar por un contenedor cada vez,
00:08:35que tiene que arrancar toda una máquina Linux
00:08:38antes de que puedas hacer algo.
00:08:40Lo que significa que Flu ejecuta miles de agentes
00:08:41por casi nada,
00:08:43y puedes optar por un contenedor real
00:08:44solo cuando necesites uno.

Key Takeaway

Flu permite desarrollar y desplegar agentes de IA programables con acceso nativo a herramientas y sandboxes eficientes, utilizando un runtime basado en TypeScript que optimiza los costos operativos al ejecutar entornos en memoria.

Highlights

  • Flu es un framework de código abierto basado en TypeScript para crear agentes de IA, construido sobre el entorno minimalista Pi.

  • El framework permite ejecutar agentes de forma económica al utilizar un sandbox basado en TypeScript que emula Bash en memoria, evitando el costo de iniciar contenedores Linux completos.

  • Flu soporta nativamente herramientas personalizadas, servidores MCP, sandboxes y habilidades reutilizables desde el primer momento.

  • Los agentes pueden ejecutarse tanto en entornos Node.js como en Cloudflare Workers con persistencia mediante objetos duraderos.

  • La configuración inicial requiere `flu init` para empaquetar el proyecto y la CLI de Flu para compilar y servir el agente.

Timeline

Introducción a Flu

  • Flu convierte entornos tipo Cloud Code en sistemas 100% programables mediante TypeScript.
  • El framework utiliza el núcleo de agente minimalista Pi para gestionar habilidades y herramientas.
  • Los flujos de trabajo pueden diseñarse para operar con o sin intervención humana.

Flu proporciona capacidades como soporte para servidores MCP, lectura de archivos y sandboxes sin necesidad de configurar cada componente manualmente. Su arquitectura permite tanto interacciones dirigidas por humanos como procesos agenticos autónomos.

Configuración y ejecución de agentes

  • La instalación requiere el runtime de Flu y la CLI para compilar el proyecto.
  • El archivo `flu-config.ts` define el despliegue, permitiendo elegir entre Node (servidor HTTP con Hono) o Cloudflare.
  • El comando `flu connect` permite ejecutar el agente y asignarle una ID de instancia única para persistencia.

El proceso de creación comienza con la inicialización del proyecto y la definición de instrucciones en el prompt del sistema. Al ejecutar el agente, Flu maneja el ciclo de vida, transmite las respuestas y genera un reporte JSON con el costo del prompt y el uso de tokens.

Flujos de trabajo y habilidades

  • Los flujos de trabajo se organizan en directorios específicos de agentes y habilidades.
  • Por defecto, el acceso al sistema de archivos está restringido por el sandbox.
  • La importación de módulos del runtime permite ajustar los permisos del agente para ejecutar scripts locales, como los de Python.

Para tareas complejas, se pueden integrar habilidades que ejecutan scripts externos. Si se requiere acceso a archivos del sistema local, se configura el runtime para evitar la ejecución aislada, aunque también es posible encapsular scripts en herramientas personalizadas por motivos de seguridad.

Despliegue y optimización

  • El middleware de ruta habilita la activación de agentes mediante peticiones POST HTTP.
  • Los sandboxes de Flu utilizan una implementación de Bash en TypeScript, eliminando la sobrecarga de contenedores.
  • Flu se distingue de otros frameworks como Mastra por su enfoque orientado al entorno desde el inicio.

El uso de una implementación de Bash en memoria permite que Flu gestione miles de agentes de forma económica al evitar el arranque de máquinas Linux completas. El despliegue es flexible, permitiendo integrar agentes en cualquier infraestructura compatible con Node.js o mediante WebSockets para streaming.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video