← volver Desarrollo Ágil: Dejando que Claude Maneje Todo el Ciclo -- ilustración de arte lineal

Desarrollo Agentico: Dejar que Claude Maneje el Ciclo Completo

Software a medida y arquitectura

El octubre pasado le di a Claude una tarea bastante aburrida: "Crea el andamio de un envoltorio de API REST de WordPress en PHP, escribe pruebas PHPUnit para él, ejecútalas, arregla lo que falle." Le di acceso a mi terminal a través de una configuración local de herramientas de Claude y me fui a hacer té. Volví doce minutos después. Las pruebas estaban en verde. Tenía un envoltorio funcional con cobertura del 94% y un pequeño comentario en línea donde Claude había detectado un caso límite que no había mencionado en la especificación. Estuve ahí parado en mi cocina en Bermondsey genuinamente desconcertado.

Eso es desarrollo agéntico. No autocompletado, no un Stack Overflow más inteligente. Un modelo que razona sobre un objetivo, elige la siguiente acción, la ejecuta, observa el resultado y repite hasta terminar. Y cambió cómo ejecuté proyectos en Seahawk Media más rápido que casi cualquier cosa en mis nueve años allí.

Qué Significa Realmente "Agentico" (Y Qué No)

Seamos precisos, porque esta palabra se usa libremente. Un bucle agentico de IA tiene tres cosas: un objetivo, un conjunto de herramientas y la capacidad de decidir qué hacer después basándose en lo que acaba de suceder. El modelo no solo está generando texto. Está actuando, observando y replanificando.

Lo que no es es magia. El modelo aún puede alucinar una firma de función. Puede meterse en un callejón sin salida haciendo el mismo arreglo incorrecto siete veces. Puede malinterpretar tu objetivo en el paso uno y construir con confianza en la dirección equivocada durante diez pasos. He visto todo esto. Una vez, en un proyecto de panel de React, Claude pasó unos veinte minutos agregando verificaciones de nulidad cada vez más rebuscadas para resolver un problema que era en realidad un await faltante. Ese fue mi culpa, le di una especificación inicial vaga.

La distinción que importa para quienes lo practican: las tareas agénticas estrechas superan a las abiertas. "Escribir y probar una función de sanitización de slugs que maneje árabe, japonés y emoji" es una excelente tarea agéntica. "Construyeme un SaaS" no lo es. Acota el alcance, o pasarás más tiempo revisando giros equivocados que el que habrías invertido en escribir el código directamente.

El Stack Real que Estoy Usando

Las herramientas importan enormemente aquí. Sin el andamiaje correcto, "Claude agéntico" es solo una ventana de chat.

Mi configuración en Seahawk:

  • [Claude API](https://www.anthropic.com/api) con tool-use, específicamente el beta de computer_use y herramientas personalizadas de bash y sistema de archivos
  • Cursor como la capa IDE, con Claude 3.5 Sonnet configurado como modelo backend
  • pytest / PHPUnit / Jest dependiendo del proyecto, porque Claude necesita una señal determinística en la que iterar. Sin salida de pruebas, vuela a ciegas.
  • Un prompt de sistema breve que le dice a Claude cuál es la estructura del proyecto, cuáles son los estándares de codificación y, esto es importante, que se detenga y pregunte si está a punto de crear un nuevo archivo fuera del directorio especificado.

Esa última restricción parece menor. No lo es. Los modelos agénticos crearán alegremente módulos completamente nuevos si piensan que sirve al objetivo. Las barreras protectoras en el sistema de archivos me han salvado de varios momentos de "¿de dónde salió esto?".

Una cosa que no uso: frameworks de orquestación multiagente para la mayoría del trabajo. LangChain, AutoGen, CrewAI, son genuinamente interesantes, pero para uso de desarrollador solo o agencia pequeña, la sobrecarga de configurar agentes-hablando-con-agentes generalmente no vale la pena. Un Claude loop bien acotado supera a tres agentes mal acotados gritándose entre sí.

Cómo Estructuro una Tarea Digna de un Bucle

Esto es a lo que llegué después de probablemente más de 200 sesiones agenticas este año. Dale al modelo un resumen de tarea que contenga cuatro cosas:

  1. El objetivo, específico, comprobable, lo suficientemente pequeño para terminar en menos de 30 pasos
  2. El estado inicial, qué archivos existen, qué pruebas ya pasan
  3. La condición de éxito, generalmente "todas las pruebas en verde" o una firma de función específica que debe producir
  4. La condición de parada, "si has intentado el mismo arreglo más de tres veces, detente y explica por qué estás atrapado"

Ese cuarto es subestimado. Sin él, Claude a veces entra en bucle infinito. No infinito-infinito, pero he visto cómo hace 18 intentos en un problema de expresión regular complejo, cada uno ligeramente diferente, ninguno correcto, nunca deteniéndose para decir "No estoy seguro." Decirle explícitamente que exponga la confusión es algo que la especificación del modelo de Anthropic analiza en términos del enfoque del modelo hacia la incertidumbre, pero en la práctica, aún necesitas pedirlo en tu prompt.

Allá por 2022 un cliente nos dio un trabajo migrando 14,000 listados de productos de una instalación legacy de Magento a WooCommerce. En ese momento Claude no estaba haciendo bucles agenticos, así que escribimos los scripts de migración a mano durante dos semanas. ¿El mismo trabajo hoy? Escribiría una especificación ajustada, se la pasaría a Claude con acceso de lectura al esquema de la BD de Magento y acceso de escritura a una instancia de WooCommerce en staging, y lo dejaría ejecutarse. Genuinamente creo que estaríamos listos en dos días. Esa es la diferencia.

Dónde Claude Es Sorprendentemente Bueno

Refactorizando Código Existente

Aquí es donde más me ha impresionado. Dale una clase desordenada de 400 líneas, pídele que refactorice hacia responsabilidad única, y déjala ejecutar sus propias pruebas unitarias como puntos de control. Mantiene el contexto en todo el archivo mejor de lo que esperaba y es genuinamente cuidadosa de no romper las pruebas que pasan. El resultado no siempre es la arquitectura que yo elegiría, pero normalmente es defendible.

Escribir Pruebas para Código que No Escribiste

Seahawk realizaba muchas auditorías y rescates de sitios. Heredamos bases de código todo el tiempo, a menudo sin pruebas y sin el desarrollador original a la vista. Comencé a usar Claude agéntico específicamente para escribir una suite de pruebas para código heredado antes de tocar nada. Lee el código fuente, infiere la intención de los nombres de funciones y comentarios, escribe pruebas, las ejecuta y se ajusta cuando algo falla inesperadamente. Una vez detectó un error de corrupción de datos silenciosa en un controlador de pedidos WooCommerce personalizado que probablemente había estado allí durante dos años. Nadie lo sabía.

Molienda a Través de Código Repetitivo

Andamios de endpoints REST, migraciones CRUD, formularios de paneles de administración. Las cosas aburridas que le toman una tarde a un desarrollador competente y a nadie le gustan. Claude es rápido y consistente aquí, y la consistencia es en realidad lo que quieres en código repetitivo, no se vuelve creativo, no se cansa, simplemente reconoce patrones en tu código existente y lo extiende.

Dónde Se Equivoca

Honestamente, los fracasos son instructivos. Estos son los que encuentro con más frecuencia:

  • Desbordamiento de ventana de contexto en bases de código grandes. Claude 3.5 Sonnet tiene una ventana de contexto de 200k tokens, que suena enorme hasta que le alimentas un plugin de WordPress completo con 40 archivos. Empieza a olvidar cosas que vio al principio de la sesión. Solución: divide el trabajo en bucles más pequeños con puntos de control explícitos.
  • Confianza en cosas en las que no debería estar confiado. Claude arreglará una consulta de base de datos, ejecutará la prueba, pasará, e informará éxito, pero la consulta ahora es sutilmente menos eficiente porque cambió una cláusula WHERE amigable con índices por una subconsulta. Resolvió el problema declarado y creó uno no declarado. La revisión de código sigue siendo importante.
  • Expansión de permisos de herramientas. Si le das acceso a bash y no lo restringes, ejecutará npm install para paquetes que no pediste, o peor, hará una solicitud de red que no autorizaste. Esto no es malicioso, es el modelo haciendo lo que parece útil. Establece los permisos de tus herramientas antes de empezar, no después de que algo raro suceda.

Una nota sobre seguridad: si estás ejecutando bucles agenticos contra cualquier cosa conectada a datos de producción, por favor lee la guía de Anthropic sobre seguridad en el uso de herramientas. No es larga, y te ahorará un mal día.

Indicaciones para Comportamiento de Agente vs. Comportamiento de Chat

El modelo de indicaciones es diferente y esto confunde a la gente. En un contexto de chat eres conversacional, iterativo, de ida y vuelta. En un contexto de agente, la indicación inicial es un documento de especificación. No estarás ahí para aclarar en mitad de la tarea.

Cosas que hacen funcionar las indicaciones de agente:

  1. Declara las restricciones primero, no al final. La mayoría de la gente las entierra.
  2. Dile qué no debe hacer. "No modificar ningún archivo fuera de /src/utils" es más útil que diez líneas de instrucciones positivas.
  3. Dale una salida de emergencia. "Si llegas a un punto de decisión donde proceder requeriría cambiar el esquema de la base de datos, detente y escribe un resumen de por qué."
  4. Referencia el comando del ejecutor de pruebas explícitamente. "Ejecuta ./vendor/bin/phpunit tests/ después de cada cambio y usa la salida para guiar tu siguiente paso."

El cambio de enfoque es: estás escribiendo un resumen para un contratista que es muy capaz pero no puede hacer preguntas. Así que escribe como uno.

El Dial de Autonomía: Cuánto Dejar Que Funcione

Esta es la pregunta que más recibo de otros dueños de agencias. ¿Lo cuidas paso a paso o lo dejas ir?

Mi respuesta después de un año: depende completamente de si las acciones son reversibles. Investigación de solo lectura, escritura de pruebas, andamiaje en un nuevo directorio, déjalo correr. Cualquier cosa que toque una base de datos en vivo, modifique manifiestos de paquetes o interactúe con APIs externas, revisa cada pocos pasos, o al menos lee el plan antes de que se ejecute.

El patrón de prompting ReAct (Reason + Act, del artículo de Yao et al. de 2022) vale la pena entender aquí. Es esencialmente lo que Claude hace internamente cuando le das herramientas: piensa en voz alta sobre qué hacer, lo hace, lee el resultado, piensa de nuevo. Hacer ese razonamiento visible, pedirle a Claude que imprima su plan antes de cada acción, te da un punto de revisión natural sin romper el bucle.

Comencé a tratar el output de razonamiento paso a paso de Claude de la misma forma que trato un PR de un desarrollador junior. Le doy una ojeada. Si algo se ve mal, intervengo. Si se ve razonable, dejo que proceda. Ese modelo mental me ha servido bien.

FAQ

¿Claude agéntico realmente está listo para producción en trabajo con clientes?

Para tareas específicas y acotadas en entornos que no sean producción: sí, absolutamente. Lo uso regularmente en las fases de andamiaje, refactorización y escritura de pruebas de proyectos. Para cualquier cosa que toque una base de datos de cliente en vivo o una API de pago externa, mantengo a un humano en el ciclo en cada paso de ejecución. El modelo es capaz; el riesgo está en el radio de explosión de un error, no en el modelo en sí.

¿Cuál es la diferencia entre Claude agéntico y simplemente usar Cursor o GitHub Copilot?

Cursor y Copilot son sugerencias de código en línea e interfaces de chat. Reaccionan a lo que escribes. Claude agéntico toma un objetivo y ejecuta un plan multietapa por su cuenta, usando herramientas como una terminal, sistema de archivos o navegador web. Es la diferencia entre un motor de autocompletado y un proceso que puede funcionar sin supervisión durante diez minutos y volver con una tarea completada.

¿Necesito saber programar para usar esto?

Necesitas suficiente contexto para escribir una especificación coherente y para revisar el resultado de forma crítica. Si no puedes leer un diff y determinar si el cambio tiene sentido, vas a pasar un mal momento. La IA agéntica amplifica la competencia. No reemplaza la línea base.

¿Qué modelo de Claude debo usar para bucles agénticos?

Claude 3.5 Sonnet es mi opción predeterminada actual. Logra un buen equilibrio entre la calidad del razonamiento y la velocidad, lo que importa cuando pagas por token en un bucle de 30 pasos. Claude 3 Opus es mejor para tareas de razonamiento muy complejo pero más lento y más caro; lo uso para el paso de planificación inicial en trabajos grandes y luego lo transfiero a Sonnet para la ejecución.

---

Lo que siempre me lleva de vuelta es que el desarrollo agéntico no se trata realmente de que la IA reemplace a los desarrolladores. Se trata de cambiar cuánto vale el tiempo de un desarrollador. Los doce minutos que no gasté escribiendo ese wrapper PHP el octubre pasado, los gasté pensando en arquitectura. Es un intercambio que haré siempre.

← volver