20 puntos por GN⁺ 2025-10-06 | Aún no hay comentarios. | Compartir por WhatsApp
  • Los agentes de programación como Claude Code de Anthropic y Codex CLI de OpenAI mejoran de forma fundamental la utilidad de los LLM para generar código funcional, ya que pueden ejecutar código directamente, corregir errores, explorar implementaciones existentes y encontrar soluciones efectivas mediante experimentación
  • La técnica clave para aprovechar al máximo el potencial de estas herramientas es el diseño de bucles de agentes; si se reduce el problema para un agente de programación con un objetivo claro y un conjunto de herramientas, puede entenderse como una herramienta capaz de encontrar soluciones efectivas mediante fuerza bruta
  • La definición de un agente LLM es ejecutar herramientas dentro de un bucle para alcanzar un objetivo, y la habilidad para usarlo bien consiste en diseñar cuidadosamente las herramientas y el bucle que utilizará el agente
  • El modo YOLO (todos los comandos se aprueban por defecto) es riesgoso, pero también es clave para obtener los resultados más productivos mediante fuerza bruta; para ejecutarlo de forma segura se puede elegir entre un sandbox de Docker, otro entorno de cómputo como GitHub Codespaces o simplemente asumir el riesgo
  • Elegir las herramientas correctas (comandos de shell y paquetes), emitir credenciales con alcance estrictamente limitado (entornos de prueba, límites de presupuesto) y aplicarlo a problemas con criterios de éxito claros y que requieren prueba y error (debugging, optimización de rendimiento, actualización de dependencias, optimización de contenedores) son los principios clave del diseño de bucles de agentes

La diversión del modo YOLO

  • Los riesgos de los agentes

    • Los agentes son inherentemente riesgosos
      • Pueden tomar malas decisiones o ser víctimas de ataques de prompt injection maliciosos
      • Las llamadas a herramientas pueden provocar resultados dañinos
    • La herramienta más poderosa de los agentes de programación es “ejecuta este comando en el shell”, por lo que un agente descontrolado puede realizar cualquier acción que el usuario podría hacer ejecutando comandos directamente
    • Cita de Solomon Hykes:

      Los agentes de IA son LLM destruyendo el entorno dentro de un bucle

  • Limitaciones del modo de aprobación por defecto

    • Los agentes de programación como Claude Code responden configurando como valor predeterminado pedir aprobación para casi todos los comandos que ejecutan
    • Esto es algo tedioso, pero más importante aún, reduce drásticamente la eficacia de resolver problemas por fuerza bruta
  • Modo YOLO

    • Cada herramienta ofrece su propia versión del modo YOLO, donde todo se aprueba por defecto
    • Es muy peligroso, pero también es clave para obtener los resultados más productivos
  • Tres riesgos principales del modo YOLO sin supervisión

    • 1. Malos comandos de shell: eliminar o dañar algo importante
    • 2. Ataques de exfiltración: robar archivos o datos que el agente puede ver (código fuente o secretos almacenados en variables de entorno)
    • 3. Ataques por proxy: usar la máquina como proxy para disfrazar el origen de un DDoS u otros ataques de hacking contra otros objetivos

Opciones para ejecutar el modo YOLO

  • Opción 1: sandbox seguro

    • Ejecutar al agente dentro de un sandbox seguro que limite los archivos y secretos a los que puede acceder y las conexiones de red que puede establecer
    • Existe la posibilidad de escape del contenedor, pero usar Docker o las nuevas herramientas de contenedores de Apple representa un riesgo aceptable para la mayoría de las personas
    • Documentación de Safe YOLO mode de Anthropic:
      • usar --dangerously-skip-permissions dentro de un contenedor sin acceso a internet
      • ofrece una implementación de referencia con Docker Dev Containers
      • restringir el acceso a internet a una lista de hosts confiables es una buena forma de evitar el robo de código fuente privado
  • Opción 2: usar la computadora de otra persona (preferido)

    • Incluso si el agente se descontrola, el daño queda limitado
    • Se recomienda usar GitHub Codespaces:
      • ofrece entornos completos en contenedores bajo demanda accesibles mediante el navegador
      • ofrece una capa gratuita generosa
      • si algo sale mal, en algún lugar una máquina de Microsoft Azure consumirá CPU y, en el peor de los casos, el código descargado en ese entorno podría ser exfiltrado por un atacante o podría hacerse push de código malicioso a un repositorio de GitHub conectado
    • Otras herramientas tipo agente que ejecutan código en la computadora de otra persona:
      • el modo Code Interpreter de ChatGPT y Claude
      • Codex Cloud de OpenAI
  • Opción 3: asumir el riesgo

    • Intentar evitar la exposición a posibles fuentes de instrucciones maliciosas y esperar detectar los errores antes de que causen daño
    • La opción que elige la mayoría de la gente

Elegir las herramientas adecuadas para el bucle

  • Después de asegurar un modo YOLO seguro

    • El siguiente paso es decidir qué herramientas deben estar disponibles para el agente de programación
  • Priorizar comandos de shell

    • En este punto se podría combinar con MCP (Model Context Protocol), pero en general es más productivo pensar en términos de comandos de shell
    • Los agentes de programación son realmente buenos ejecutando comandos de shell
    • Si el entorno permite el acceso de red necesario, también pueden traer paquetes adicionales desde NPM, PyPI, etc.
    • También es una consideración importante hacer que el agente se ejecute en un entorno donde instalar paquetes aleatorios no arruine las cosas en tu máquina principal
  • Aprovechar el archivo AGENTS.md

    • En lugar de depender de MCP, se prefiere crear un archivo AGENTS.md (o equivalente) con detalles sobre los paquetes que se cree que deberían usarse
    • Ejemplo: en un proyecto para tomar capturas de pantalla de varios sitios web, instalar su propia herramienta CLI shot-scraper y agregar lo siguiente a AGENTS.md:
      Para tomar una captura de pantalla, ejecuta lo siguiente:  
      
      shot-scraper http://www.example.com/ -w 800 -o example.jpg  
      
    • Ese solo ejemplo es suficiente para que el agente infiera cómo cambiar la URL y el nombre del archivo para otras capturas
  • Aprovechar herramientas existentes

    • Los buenos LLM ya saben usar una cantidad desconcertantemente grande de herramientas existentes
    • Si dices “usa playwright python” o “usa ffmpeg”, la mayoría de los modelos lo usarán de forma efectiva
    • Como se ejecutan dentro de un bucle, por lo general pueden recuperarse de errores iniciales y descubrir el orden correcto sin instrucciones adicionales

Emitir credenciales con alcance estrictamente limitado

  • La necesidad de credenciales

    • Además de exponer los comandos correctos, hay que considerar qué credenciales deben exponerse a esos comandos
    • Idealmente no se necesitarían credenciales en absoluto (muchas tareas pueden realizarse sin iniciar sesión ni proporcionar claves API), pero ciertos problemas sí requieren acceso autenticado
  • Dos recomendaciones clave

    • 1. Proporcionar credenciales para un entorno de prueba o staging
      • un entorno donde el daño pueda quedar bien limitado
    • 2. Establecer límites de presupuesto
      • si las credenciales pueden gastar dinero, fijar límites estrictos de presupuesto
  • Caso real: investigación en Fly.io

    • Investigar tiempos lentos de cold start en una aplicación con scale-to-zero que corre en Fly.io
    • Permitir que Claude Code edite directamente el Dockerfile, despliegue en la cuenta de Fly y mida cuánto tarda en arrancar
    • Configuración segura

      • En Fly se puede crear una organización, fijar un límite de presupuesto para esa organización y emitir una clave API de Fly que solo permita crear o modificar apps dentro de esa organización
      • Crear una organización dedicada solo para esta investigación
      • Establecer un presupuesto de $5
      • Emitir la clave API y soltar a Claude Code
    • En este caso particular, el resultado no fue lo bastante útil, pero fue el proyecto que le hizo darse cuenta por primera vez de que el “diseño de bucles de agentes” es una habilidad importante que desarrollar

Cuándo diseñar un bucle de agentes

  • Patrones de problemas adecuados

    • No todos los problemas responden bien a este patrón de trabajo
    • Lo que hay que buscar son problemas con criterios de éxito claros y donde encontrar una buena solución probablemente requiera prueba y error (potencialmente algo tedioso)
    • Cada vez que pienses “ugh, aquí voy a tener que probar muchas variantes”, es una señal fuerte de que vale la pena intentar un bucle de agentes
  • Ejemplos concretos

    • Debugging

      • Una prueba falla y hay que investigar la causa raíz
      • Un agente de programación que ya puede ejecutar pruebas puede hacer esto sin configuración adicional
    • Optimización de rendimiento

      • Una consulta SQL es demasiado lenta, ¿ayudaría agregar un índice?
      • El agente puede hacer benchmark de la consulta y (¡en un entorno de desarrollo aislado!) agregar y quitar índices para medir el impacto
    • Actualización de dependencias

      • Hay retraso con varias actualizaciones de dependencias
      • Si la suite de pruebas es sólida, un bucle de agentes puede actualizarlas todas y hacer las pequeñas actualizaciones necesarias para reflejar cambios importantes
      • Asegurarse de proporcionar una copia de las notas de lanzamiento relevantes o de que el agente sepa dónde encontrarlas por su cuenta
    • Optimización del tamaño de contenedores

      • Un contenedor Docker es incómodamente grande
      • El agente puede probar distintas imágenes base e iterar sobre el Dockerfile intentando reducirlo mientras mantiene las pruebas pasando
  • Tema común: pruebas automatizadas

    • El tema común en todo esto son las pruebas automatizadas
    • El valor que se puede obtener de los agentes de programación y otras herramientas de código con LLM se amplifica enormemente con una buena suite de pruebas que pase de forma limpia
    • Por suerte, los LLM también sobresalen en acelerar el proceso de configurar eso si todavía no existe

Un área todavía muy nueva

  • El diseño de bucles de agentes es una habilidad muy nueva
    • Claude Code se lanzó por primera vez en febrero de 2025
  • Se espera que ponerle un nombre claro ayude a tener conversaciones productivas al respecto
  • Todavía queda muchísimo más por descubrir sobre cómo usar estas herramientas de la forma más efectiva posible

Aún no hay comentarios.

Aún no hay comentarios.