Introducción a Dynamic Workflows de Claude Code
Este es un texto publicado por el equipo de Claude Code de Anthropic (Thariq Shihipar, Sid Bidasaria) que explica la nueva función de flujos de trabajo dinámicos (Dynamic Workflows) incorporada en Claude Code. Los flujos de trabajo dinámicos funcionan de forma que Claude escribe directamente, en el momento y en formato de archivo JavaScript, su propia estructura de ejecución (arnés, harness) adaptada a la tarea para coordinar múltiples subagentes. El arnés predeterminado del Claude Code existente está optimizado para tareas de programación, pero tenía límites en trabajos que requieren mucho tiempo, paralelismo a gran escala o verificación adversarial. La idea central para resolverlo fue permitir que Claude cree por sí mismo un arnés personalizado.
Contexto de adopción y forma de funcionamiento
- Límites de un contexto único : existen tres modos de fallo que aparecen cuando se planifica y ejecuta al mismo tiempo dentro de una sola ventana de contexto. Son la pereza agéntica (agentic laziness), en la que se hace la tarea a medias y se declara terminada; el sesgo de auto-preferencia (self-preferential bias), en el que evalúa favorablemente sus propios resultados; y la deriva del objetivo (goal drift), en la que el objetivo original se desdibuja durante el proceso de compresión del contexto.
- Estructura de funcionamiento : ejecuta archivos JavaScript para crear y coordinar subagentes, y puede aprovechar funciones estándar como JSON, Math y Array. El flujo de trabajo también decide directamente el tipo de modelo de cada subagente (Sonnet, Opus, etc.) y si habrá aislamiento por
worktree. Si se interrumpe, es posible continuar mediante la reanudación de la sesión. - Cómo invocarlo : basta con pedirle a Claude que cree un flujo de trabajo o usar la palabra activadora "ultracode".
Resumen de patrones representativos (Patterns)
- Clasificar y enrutar (Classify and Route) : un agente clasificador determina el tipo de tarea y luego la deriva hacia el agente o flujo de procesamiento correspondiente. También puede usarse en la etapa final para clasificar resultados.
- Fan-out y síntesis (Fan-out and Synthesize) : divide una tarea grande en unidades pequeñas, ejecuta un agente separado para cada una y luego reúne todos los resultados en una sola salida durante la etapa de síntesis (synthesize). Es adecuado para muchos trabajos pequeños que necesitan un contexto limpio.
- Verificación adversarial (Adversarial Verification) : a cada agente de trabajo se le asigna un agente de verificación independiente que refuta y valida los resultados según una rúbrica (rubric, tabla de criterios de evaluación).
- Generar y filtrar (Generate and Filter) : genera muchas ideas, luego las filtra con una rúbrica y verificación, elimina duplicados y deja solo las candidatas de mayor calidad.
- Torneo (Tournament) : N agentes compiten resolviendo la misma tarea con enfoques distintos, y un agente juez elige al ganador mediante comparación por pares (pairwise comparison). Se explica que este tipo de comparación es más confiable que una evaluación con puntajes absolutos.
- Repetir hasta converger (Loop Until Convergence) : cuando la carga de trabajo no está definida de antemano, repite la creación de agentes hasta que ya no haya nuevos hallazgos ni errores.
Resumen de casos de uso (Use Cases)
- Refactorización y migración a gran escala : divide por sitios de llamada, pruebas fallidas o módulos; los subagentes corrigen cada
worktree, y luego otro agente los revisa de forma adversarial antes de fusionarlos. Se menciona un caso real de reescritura de Zig a Rust, y si se les indica evitar comandos intensivos en recursos, puede maximizarse el paralelismo. - Investigación profunda (skill
/deep-research) : distribuye la búsqueda web para recopilar fuentes, verifica afirmaciones mediante verificación adversarial y luego sintetiza un informe con citas. También puede aplicarse a redactar reportes de estado en Slack o a explorar en profundidad un codebase. - Verificación de hechos (Fact-Checking) : primero corre un agente que identifica todas las afirmaciones fácticas dentro de un informe; después, subagentes de verificación revisan las fuentes de cada afirmación, y un agente aparte evalúa incluso la calidad de esas fuentes.
- Ordenamiento y ranking cualitativo : resuelve tareas difíciles de procesar de una sola vez, como ordenar más de 1000 líneas de tickets de soporte por severidad, mediante un pipeline de comparación por pares tipo torneo o mediante división en buckets, procesamiento paralelo y posterior fusión.
- Validación de reglas y automatización de
CLAUDE.md: asigna agentes de verificación por regla para detectar omisiones, y un agente con personalidad escéptica revisa la validez de las propias reglas. A la inversa, también puede agrupar correcciones repetidas de sesiones recientes y revisiones de código para derivar automáticamente nuevas reglas. - Depuración de fallos intermitentes y análisis post mortem : agentes independientes formulan hipótesis a partir de evidencia separada por logs, archivos o datos, y luego un panel de validadores y refutadores evalúa cada hipótesis. Se aplica no solo al código, sino también al análisis de causas de caída en ventas o de fallas en pipelines de datos.
- Triage y manejo de backlog : clasifica colas de soporte y reportes de bugs, elimina duplicados con respecto a elementos existentes y luego corrige automáticamente o escala a una persona. Se recomienda un patrón de cuarentena (quarantine) que separa a los agentes que leen contenido externo no confiable de los que ejecutan acciones con privilegios. Combinado con
/loop, permite operación continua. - Exploración creativa y evaluación (Eval) : en tareas donde interviene el gusto, como diseño o naming, genera múltiples propuestas y luego un agente revisor las califica y selecciona con una rúbrica. También puede usarse para evaluaciones ligeras que puntúen y mejoren la calidad de una skill.
- Enrutamiento de modelos (Model Routing) : un agente clasificador investiga previamente la complejidad de la tarea y luego la enruta hacia el modelo adecuado entre Sonnet y Opus.
Ventajas y diferencias
- Diferencia clave : los flujos de trabajo estáticos (static) creados con el Claude Agent SDK o con
claude -pdeben escribirse de forma genérica para manejar casos generales, mientras que los flujos de trabajo dinámicos se distinguen porque Claude redacta en el momento un arnés personalizado para cada situación. - Ventajas : como múltiples agentes con contextos separados se concentran en sus propios objetivos, pueden reducir estructuralmente problemas como la pereza, la auto-preferencia y la deriva del objetivo. También incluye funciones operativas como reanudar sesiones interrumpidas, especificar presupuestos de tokens ("use 10k tokens"), combinarse con
/goaly/loop, y guardar con la tecla "s" para compartir a través del directorio~/.claude/workflowso mediante skills. - Desventajas y precauciones : el uso de tokens puede aumentar mucho, por lo que no es adecuado para todas las tareas. Los propios autores dejan claro que una tarea de programación común no necesita un panel de cinco revisores, y recomiendan preguntarse primero: "¿de verdad hace falta más cómputo?". Las mejores prácticas todavía están en formación.
Los flujos de trabajo dinámicos pueden leerse como un cambio que expande a Claude Code desde un asistente único de programación hacia un metaorquestador capaz de coordinar múltiples agentes. Es un enfoque que apunta a un punto intermedio entre los pipelines estáticos y los agentes autónomos, y parece especialmente eficaz en trabajos estructurados de larga duración como migración de código, investigación profunda, triage o análisis post mortem. Sin embargo, dado que el costo en tokens es alto y las mejores prácticas aún no están consolidadas, conviene evaluar con cuidado la idoneidad de cada patrón y empezar en pequeño con "quick workflows".
Aún no hay comentarios.