GitHub no fue creado para agentes de IA (así que Cloudflare construyó el suyo)

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

Transcript

00:00:00Cloudflow está trabajando en algo llamado Artifacts, un sistema de archivos distribuido que es
00:00:05compatible con Git y está diseñado principalmente para agentes, permitiéndote crear, bifurcar
00:00:10o eliminar miles de repositorios de forma programática, sin importar su tamaño, para tareas como
00:00:15revisiones de PR en paralelo, refactorización automatizada de grandes bases de código y espacios de trabajo por sesión.
00:00:20Pero, al estar construido sobre objetos duraderos (durable objects), ¿significa esto que tienes que usar JavaScript
00:00:25y no puedes acceder a un comando de shell para ejecutar Git?
00:00:28¡Dale a suscribir y averigüémoslo!
00:00:33GitHub fue creado para humanos, no para agentes, lo que significa que no necesitan ninguna de las funciones
00:00:37sociales como seguidores o discusiones, pero los agentes son muy buenos con Git, está en sus
00:00:42datos de entrenamiento.
00:00:43Así que Cloudflare ha construido una implementación básica de Git en Zig, la compiló a Wasm y la puso en un
00:00:49objeto duradero para que actúe como servidor Git.
00:00:52Mientras tanto, el cliente en sí puede ser lo que quieras, como un worker usando isomorphic Git
00:00:57dentro de un worker o usando el protocolo Git e incluso el cliente HTTP para que puedas conectarte
00:01:03a él para cosas que no usan JavaScript.
00:01:05Ahora, lamentablemente, al momento de grabar esto, no tengo acceso a Artifacts porque está
00:01:10en beta privada, pero hay mucha documentación al respecto, lo que significa que puedo crear una demo con
00:01:15código de esa documentación y tal vez, cuando se lance la versión beta pública, puedas comprobar
00:01:19si mi código realmente funciona.
00:01:20Así que lo que vamos a hacer es construir una herramienta que tome una lista de tareas para un repositorio específico
00:01:24y ejecute todas esas tareas en paralelo bifurcando el repositorio varias veces y ejecutando
00:01:29cada tarea en su propio artefacto dentro de un repositorio en la nube, en un objeto duradero.
00:01:34Veamos cómo funciona.
00:01:35He comenzado siguiendo la documentación de Artifacts en la guía de inicio para workers,
00:01:39así que usé este comando y este texto después del comando es solo el nombre del proyecto
00:01:44y puede ser cualquiera.
00:01:45Así que seguí todos estos pasos, lo que me dio este código de worker básico.
00:01:49Y los workers para Artifacts son un poco más eficientes que usar la API REST, ya que
00:01:53hacen menos viajes de ida y vuelta.
00:01:55Después de eso, necesitarás agregar los enlaces (bindings) de Artifacts a tu archivo wrangle.jsonc o toml,
00:02:00y luego volver a ejecutar los tipos.
00:02:02Ahora, la documentación aquí se centra en crear un repositorio nuevo, por lo que utiliza el enlace de Artifacts
00:02:07con el método create y un nombre de repositorio.
00:02:09Crea el nombre, lo que le da el token y el remoto.
00:02:13Así que el remoto es la ubicación del artefacto y el token o token de autenticación también es necesario
00:02:17para darte acceso a él.
00:02:18Y, por supuesto, puedes usar el protocolo git usando el remoto y el token para interactuar
00:02:22con tu artefacto.
00:02:23Pero vamos a hacer algo diferente.
00:02:25En lugar de crear un repositorio nuevo en un objeto duradero de Artifacts, primero vamos
00:02:29a verificar si existe uno llamado baseline.
00:02:31Luego, si no existe, lo que haremos es importar un repositorio git y luego le he
00:02:35dado el nombre de baseline y devuelto ese valor aquí.
00:02:39Y, por supuesto, si revisas la documentación de la API para el enlace de workers, verás más
00:02:43parámetros que se pueden añadir al método import.
00:02:45Pero después de haber devuelto el repositorio existente, podemos hacer cosas muy geniales
00:02:49con él.
00:02:50Aquí están las tareas que me gustaría realizar en el repositorio y, por supuesto, las he codificado
00:02:53de forma fija, pero estas podrían añadirse en una entrada o algún tipo de interfaz de usuario.
00:02:56Y aquí, dentro de la exportación predeterminada del worker, tengo el SDK de Anthropic, así como mi
00:03:00repositorio baseline.
00:03:02Y voy a recorrer todas las tareas y, aquí, estoy bifurcando el repositorio con
00:03:06este nombre.
00:03:07Luego tenemos esta función, que explicaré más adelante, pero esto ejecuta la tarea dentro
00:03:10del repositorio bifurcado y hace que el agente realice el cambio mientras devuelve el resumen del agente.
00:03:15Así que lo último que dijo el agente, y después de cada bucle for, devuelvo esta
00:03:19información.
00:03:20Voy a incluir el nombre de la tarea, el nombre de la bifurcación, el remoto y el token
00:03:23para que podamos acceder a ellos cuando queramos ver si el cambio es bueno y el resumen
00:03:27de lo que se hizo.
00:03:28Así que ahora mismo, los enlaces de los workers no te dan la capacidad de hacer pull, commit y push.
00:03:33Así que en mi código, he tenido que hacer eso con isomorphic-git y luego usar un sistema de almacenamiento
00:03:38en memoria para guardar los cambios temporalmente.
00:03:39Así que, volviendo al código del agente, estamos creando nuestro sistema de archivos en memoria, y luego tenemos
00:03:43un mensaje del sistema que le dice al agente que haga los cambios relevantes y luego confirme (commit) su
00:03:47código.
00:03:48Así que vamos a clonar el repositorio bifurcado usando el remoto que se ha proporcionado, así como
00:03:51el token.
00:03:52Y luego definimos algunas herramientas, como leer, escribir y confirmar (commit).
00:03:55Aquí seleccionamos el modelo y le damos un mensaje del sistema, y luego pasamos la tarea
00:03:59como mensaje de usuario.
00:04:00Y el resto del código es tu bucle agéntico estándar.
00:04:02Entonces, si hay una llamada a una herramienta, deja de razonar y ejecuta la llamada a la herramienta, en nuestro caso, leer, escribir
00:04:07o confirmar, que también hace push del código después de confirmar.
00:04:10Y la ventaja de tener un artefacto es que todo este código existirá en el objeto duradero,
00:04:14almacenado en la base de datos SQLite del objeto, y si el objeto duradero se cae, la información
00:04:20puede recuperarse de la base de datos SQLite en cualquier momento si vuelve a estar disponible.
00:04:23Y luego, aquí abajo, continuamos con el razonamiento del modelo después de la llamada a la herramienta antes de devolver
00:04:27el último mensaje del modelo.
00:04:29Ahora sé que es muy difícil visualizar todo esto sin que yo pueda
00:04:32ejecutar el código, pero espero que puedas ver lo que se puede hacer con los artefactos y
00:04:37su máximo potencial.
00:04:38Imagina si pudieras tener una interfaz de usuario para ver todos los cambios que están ocurriendo en estos artefactos
00:04:42y pudieras comunicarte con agentes individuales o con un agente orquestador único para realizar cambios
00:04:46en los diferentes repositorios.
00:04:48Hablando de un agente orquestador, podríamos tener un solo worker que pudiera orquestar
00:04:52todos estos cambios y fusionarlos en el repositorio principal después de que un agente revisor haya
00:04:56revisado el código.
00:04:57Incluso podemos combinar artefactos con workers dinámicos para que los agentes puedan ejecutar el código que han
00:05:02cambiado para ver si funciona.
00:05:03Y si no es código JavaScript, podemos usar entornos sandbox de Cloudflare para ejecutar cualquier lenguaje
00:05:07que queramos e incluso ejecutar comandos de shell.
00:05:09Sin mencionar que existe la opción de navegador de Cloudflare que ejecuta un navegador Puppeteer para que el
00:05:13modelo pueda mirar y ver si el código que implementó es correcto si es un cambio de front-end.
00:05:18Honestamente, me he divertido mucho pensando en las posibilidades de los artefactos, aunque
00:05:21todavía no pueda ejecutarlos.
00:05:22Pero una cosa que he notado es que no existe un comando git diff.
00:05:25No está expuesto en la API de enlaces de worker ni en isomorphic git.
00:05:30Así que tal vez la única forma de hacer un git diff es a través del protocolo git, o podrían añadirlo en el
00:05:35futuro.
00:05:36De todos modos, en este momento, si quieres hacerlo sin usar el protocolo git, supongo que podrías usar
00:05:40isomorphic git usando git log para encontrar el árbol git, recorrerlo y caminar por él para
00:05:45comparar las diferencias.
00:05:46De todos modos, creo que este es un lanzamiento muy genial de Cloudflare.
00:05:50Y aunque ya existen otras herramientas de sistemas de archivos como S3 files, ZeroFS y JuiceFS que
00:05:55ya existen, no creo que estas opciones sean compatibles con git, lo cual es una característica muy genial
00:05:59y más amigable para los agentes.
00:06:01Hablando de S3, si alguna vez has querido ejecutarlo localmente en tu máquina, entonces echa
00:06:05un vistazo a este video de Josh que te explica exactamente cómo hacerlo.

Key Takeaway

Cloudflare Artifacts permite a los agentes de IA gestionar repositorios Git programáticamente a gran escala mediante objetos duraderos y almacenamiento SQLite, optimizando tareas como refactorizaciones paralelas y revisiones automatizadas.

Highlights

Cloudflare Artifacts es un sistema de archivos distribuido compatible con Git, diseñado específicamente para la automatización de agentes de IA.

La implementación básica de Git en Cloudflare utiliza Zig compilado a Wasm dentro de objetos duraderos (durable objects).

Los workers de Artifacts reducen la latencia de las operaciones al disminuir el número de viajes de ida y vuelta necesarios en comparación con la API REST estándar.

El almacenamiento en objetos duraderos utiliza bases de datos SQLite integradas, permitiendo la recuperación de datos ante fallos del sistema.

La combinación de Artifacts con workers dinámicos y navegadores Puppeteer permite que los agentes realicen cambios en el código, ejecuten pruebas y verifiquen el resultado visual del front-end.

Timeline

Arquitectura y propósito de Artifacts

  • GitHub fue diseñado originalmente para humanos y no ofrece las funciones necesarias para agentes de IA.
  • Cloudflare implementó una versión de Git en Zig compilada a Wasm, alojada en objetos duraderos para funcionar como servidor Git.
  • Los clientes pueden interactuar con el sistema mediante protocolos Git estándar, isomorphic-git en workers o peticiones HTTP.

Artifacts permite la creación, bifurcación y eliminación masiva de repositorios de forma programática. Esta capacidad habilita flujos de trabajo como revisiones de PR en paralelo y refactorizaciones de bases de código extensas. La estructura evita dependencias de funciones sociales y se enfoca en la eficiencia operativa necesaria para entornos agénticos.

Configuración y flujo de trabajo del agente

  • La configuración requiere añadir enlaces (bindings) de Artifacts al archivo wrangle.jsonc o toml.
  • El flujo de trabajo utiliza un repositorio base que se bifurca dinámicamente para ejecutar tareas específicas.
  • La persistencia de los cambios se asegura mediante el almacenamiento en la base de datos SQLite interna del objeto duradero.

El proceso utiliza el SDK de Anthropic para gestionar las tareas del agente sobre el repositorio. Como la API de los workers no expone operaciones directas de pull, commit y push, el sistema utiliza isomorphic-git en memoria para manejar estas acciones. El agente recibe un mensaje del sistema que guía el ciclo estándar de razonamiento y ejecución de herramientas hasta completar la tarea.

Potencial futuro y limitaciones técnicas

  • La API actual carece de una función nativa de git diff, lo que obliga a recorrer el árbol git para comparar cambios.
  • El sistema admite la integración de entornos sandbox de Cloudflare para ejecutar código fuera de JavaScript.
  • Cloudflare permite el uso de navegadores Puppeteer para que los modelos verifiquen cambios en interfaces front-end.

El ecosistema permite orquestar múltiples agentes y fusionar cambios automáticamente tras una revisión. A pesar de las limitaciones actuales en comandos específicos como diff, la compatibilidad con Git hace que Artifacts sea más útil para agentes que sistemas como S3 o JuiceFS. La posibilidad de realizar pruebas de ejecución y renderizado visual amplía drásticamente el alcance de la automatización.

Community Posts

View all posts