Los frameworks de agentes para desarrolladores todavía están en una etapa temprana, con propuestas como eve de Vercel y Flue de Fred Schott, ambos lanzados este año, marcando la plantilla inicial.

Schott es el creador del framework web Astro, lo que llevó a que su empresa fuera adquirida por Cloudflare en enero. Acaba de liberar la versión 2 de Flue, su primera versión estable, que tiene como fundamento los Agent Hooks al estilo de React.

Diagrama del framework de agentes Flue 2
Diagrama del framework de agentes Flue 2

¿Qué significa "React para agentes"?

En Flue, un agente se representa mediante una función de JavaScript. Esa función se vuelve a renderizar en cada turno, es decir, antes de cada llamada al modelo.

La incorporación de los hooks llegó después de que Schott se diera cuenta de que la componibilidad de React encajaba muy bien con el desarrollo de agentes.

"Originalmente tuiteé que estábamos construyendo el Astro para agentes o el Next.js para agentes", contó a Latent Space. "Pero después caí en cuenta: quizás nadie ha construido siquiera el React para agentes".

La comparación no es nueva en la industria. En una entrevista anterior, Bret Taylor, CEO de Sierra y presidente del directorio de OpenAI, lo había planteado en términos parecidos: todavía se está tratando de descubrir quiénes son los agentes reactivos, y por ahora la industria está más cerca de la era de jQuery que de la de React.

Los hooks se escriben en TypeScript. Según el anuncio de lanzamiento, permiten construir agentes dinámicos capaces de administrar su propio estado, escuchar eventos del ciclo de vida del agente e incluso adjuntar recursos y capacidades distintas de forma dinámica para mejorarse a sí mismos en tiempo de ejecución.

Flue 2 trae 16 hooks incorporados, entre ellos useSkill(), useTool() y useSubagent(). También se pueden agregar hooks personalizados.

Cómo evolucionó Flue mediante hooks al estilo de React, diagrama de Richard MacManus
Cómo evolucionó Flue mediante hooks al estilo de React, diagrama de Richard MacManus

Lo que abren los hooks para los desarrolladores es que hacen al agente mucho más dinámico, al permitir que su configuración cambie a medida que avanza una conversación o un flujo de trabajo. Schott sostiene que eso es necesario para construir bots de soporte y de triage reales, porque no se pueden configurar por completo de antemano. El agente no puede ser estático, tiene que adaptarse en tiempo real a lo que el usuario quiere o a lo que la situación demanda. Un agente de soporte, por ejemplo, podría incorporar una herramienta de gestión de cuentas recién después de verificar la identidad del usuario.

La magia basada en archivos es un antipatrón

El pensamiento de Schott sobre cómo construir un framework de agentes evolucionó rápido desde que lanzó públicamente Flue 1, a comienzos de mayo. Al principio quería tomar conceptos existentes de los frameworks web y aplicarlos al nuevo framework. Usa el enrutamiento basado en archivos como ejemplo.

"Lo portamos de manera bastante ingenua a Flue, pensando: genial, pongo tus cinco agentes en estos cinco archivos y esas serán las cinco rutas que exponen. Pero para mucha gente que construye con Flue, sobre todo los clientes más grandes, toda su empresa es un agente. No les importa el enrutamiento. Hay un solo agente".

Después de que los primeros usuarios mostraran esos patrones, la componibilidad pasó a ser la preocupación central, y eso lo devolvió a React.

"Como se puede ver en la API de Flue 2, lo estamos tomando más de React que de Astro o Next.js, donde se trata menos de enrutamiento y de conceptos de sitios web, y más de cómo componer un agente a partir de muchas cosas distintas", explicó.

Sin harness no hay agente

Un concepto clave en Flue es que un agente debe tener un harness, entendido como un entorno donde tiene acceso al contexto y a las capacidades necesarias para cumplir distintas tareas.

"En lugar de que tú y tu código manejen al modelo y le digan qué hacer con scripts, pones al agente dentro de este harness y es capaz de manejarse solo y trabajar los problemas", explicó Schott.

Flue está construido sobre Pi, un harness minimalista de código abierto. En esencia, Flue es una versión opinada de Pi, que agrega funcionalidades que Schott considera útiles para quienes construyen agentes. Los agentes alojados en Flue 2, por ejemplo, ahora se construyen con Vite.

Schott compara el rol de Pi con el papel fundacional que hoy cumple Vite por debajo de Astro. "Creo que Pi puede cumplir ese rol, donde es la abstracción correcta: no hace demasiado, pero entrega las APIs adecuadas para que después nosotros podamos decir, bueno, tengamos una versión opinada de esto que haga más".

Arquitectura de Flue sobre el harness Pi
Arquitectura de Flue sobre el harness Pi

Construir sobre Pi implicó comprometerse a tener un harness incorporado. "Nuestra apuesta temprana fue que el harness en realidad no es una funcionalidad, sino algo fundamental para lo que uno cree que es un agente", dijo Schott. "No hay agente sin harness".

Agentes que se construyen con agentes

El proyecto Flue empezó a comienzos de este año dentro del repositorio de Astro, como un sistema de clasificación de issues. Al principio era un script o flujo de trabajo guiado por un modelo que revisaba issues, pero después ganó la capacidad de tomar acciones dentro del repositorio.

"Empezó a pasar de ser sólo automatización en un repositorio a querer tomar la experiencia de Claude Code, hacerla headless, hacerla alojable y correrla en la nube", relató Schott. De ahí surgió la idea del harness como ancla. En su publicación de lanzamiento de la v1, a comienzos de mayo, describió a Flue como "algo así como Claude Code, pero 100% headless y programable".

El propio autor de la entrevista probó Flue usando Claude Code, que lo guió en la configuración de su primer agente, y Schott confirmó que así lo usan muchos desarrolladores. "Estamos construyendo muy en serio para ellos", dijo respecto de los agentes de programación. "Todo nuestro flujo de incorporación es ese: pasale este prompt a tu agente, te va a guiar. Toda nuestra documentación tiene soporte para markdown".

¿Dónde queda Flue frente a la competencia?

FrameworkHarnessPortabilidad
Flue 2Incorporado desde el diseño, sobre PiCódigo abierto para cualquier host
eve (Vercel)Incorporado desde el diseñoAutoalojable, optimizado para Vercel
AI SDK, Agents SDK, MastraAgregado después como funcionalidadVariable según proveedor

La comparación más cercana a Flue es eve, de Vercel, que también trata al harness como algo fundacional. Vercel y Cloudflare se han enfrentado en público más de una vez, pero Schott es generoso en su opinión sobre eve. "Eve, creo, es el más directamente competitivo. Apareció al mismo tiempo, así que tuvo esa misma postura de que el harness viene incorporado".

Schott también hizo referencia a los que llamó los frameworks de agentes originales, anteriores a Flue y creados sin el harness como concepto central: el AI SDK de Vercel, el Agents SDK de Cloudflare y Mastra, desarrollado por el mismo equipo que construyó Gatsby. Todos están sumando harnesses ahora, pero Schott considera que en esos casos es una funcionalidad agregada.

Consultado sobre dónde queda Flue frente a los meta-harnesses emergentes, como Omnigent de Databricks o el harness Exo, Schott señaló que todavía hay confusión sobre qué significa el término en esta etapa temprana. De todos modos, piensa que tener una sola API para trabajar con todos los harnesses enredaría el relato de Flue. Su framework define de manera específica cómo funcionan las skills, cómo funcionan los subagentes y así sucesivamente. "El framework y el harness están muy entrelazados", resumió. Encuentra fascinante la discusión sobre meta-harnesses y ha experimentado con Exo, pero dice que es "un escenario de interés distinto, que no está realmente relacionado con los agentes alojados".

La conexión con Cloudflare

A lo largo de la entrevista, Schott hizo referencia a poder aprovechar las herramientas e infraestructura de Cloudflare, su empleador. Pero también fue muy claro en que Flue es un "framework de código abierto para cualquier host", y quiere que siga siendo así.

"Las mejores herramientas son las que flotan por encima del host", afirmó. "Eso abre la puerta a la mayor adopción por parte de desarrolladores y a la mayor innovación".

La portabilidad entre hosts es uno de los principios definitorios de Flue, y quizás ahí esté la diferencia de fondo con eve de Vercel. Si bien eve también se puede autoalojar, está optimizado para aprovechar las múltiples funcionalidades de Vercel. Es el manual conocido de Vercel, que hace lo mismo con Next.js. Dicho eso, la propia Vercel mostró que un agente Flue se puede desplegar en Vercel, así que las dos empresas pueden convivir.

Comparación entre plataformas de agentes alojados
Comparación entre plataformas de agentes alojados

Ante la mención de la nueva oferta de Managed Deep Agents de LangChain como ejemplo de plataformas de agentes alojados que están llegando al mercado, Schott respondió que un producto de agentes gestionados no está hoy en la hoja de ruta de Flue. "Es tan temprano para nosotros que estamos enfocados sólo en construir el mejor harness", dijo.

¿Por qué importa la portabilidad en LatAm?

El calendario da una pista de la velocidad del rubro: Astro fue adquirida por Cloudflare en enero, Flue 1 se lanzó a comienzos de mayo y la primera versión estable llegó en agosto. Son alrededor de tres meses entre el lanzamiento público y la estabilización, un ritmo que obliga a elegir framework sabiendo que la API va a moverse.

Para equipos regionales, el punto de la portabilidad entre hosts es menos filosófico que en el hemisferio norte. Un bot de soporte o de triage atado a una plataforma gestionada se factura en dólares y con un tipo de cambio que no controla nadie del equipo. Que el framework corra igual sobre infraestructura propia, sobre un proveedor local o sobre una nube grande deja abierta una salida que, en la práctica, define si el proyecto es sostenible a dos años.