1 pontos por ragingwind 3 시간 전 | Ainda não há comentários. | Compartilhar no WhatsApp

Introdução aos Dynamic Workflows do Claude Code

Texto publicado pela equipe do Claude Code da Anthropic (Thariq Shihipar, Sid Bidasaria), explicando o novo recurso de Dynamic Workflows introduzido no Claude Code. Dynamic Workflows é uma abordagem em que o Claude escreve na hora sua própria estrutura de execução (harness) na forma de um arquivo JavaScript para orquestrar vários subagentes de acordo com a tarefa. O harness padrão existente do Claude Code é otimizado para tarefas de programação, mas tinha limitações em trabalhos longos, com paralelismo em larga escala e verificação adversarial; a ideia central para resolver isso foi permitir que o próprio Claude criasse harnesses personalizados.

Contexto da adoção e modo de funcionamento

  • Limites de um único contexto : há três modos de falha que surgem ao fazer planejamento e execução ao mesmo tempo em uma única janela de contexto. São eles: preguiça agêntica (agentic laziness), em que a tarefa é feita pela metade e declarada como concluída; viés de autovalorização (self-preferential bias), em que o agente avalia de forma favorável o próprio resultado; e desvio de objetivo (goal drift), em que o objetivo original fica difuso no processo de compressão de contexto.
  • Estrutura de funcionamento : executa arquivos JavaScript para criar e coordenar subagentes, podendo usar funções padrão como JSON, Math e Array. O próprio workflow também decide diretamente o tipo de modelo de cada subagente (Sonnet, Opus etc.) e se haverá isolamento por worktree. Em caso de interrupção, é possível continuar a execução retomando a sessão.
  • Como chamar : basta pedir ao Claude para criar um workflow ou usar a palavra-gatilho ultracode.

Resumo dos principais padrões (Patterns)

  • Classificar e rotear (Classify and Route) : um agente classificador identifica o tipo de tarefa e então encaminha para o agente ou fluxo de processamento apropriado. Também pode ser usado na etapa final para classificação dos resultados.
  • Fan-out e síntese (Fan-out and Synthesize) : divide uma tarefa grande em unidades menores, executa um agente separado para cada uma e, na etapa de síntese (synthesize), reúne todos os resultados em um só. É adequado para muitas subtarefas que exigem contexto limpo.
  • Verificação adversarial (Adversarial Verification) : atribui a cada agente de tarefa um agente verificador separado, que contesta e valida os resultados com base em uma rubrica (rubric, tabela de critérios de avaliação).
  • Gerar e filtrar (Generate and Filter) : gera muitas ideias, depois filtra com rubrica e verificação, remove duplicatas e deixa apenas os candidatos de maior qualidade.
  • Torneio (Tournament) : N agentes executam a mesma tarefa com abordagens diferentes, e um agente juiz escolhe o vencedor por comparação pareada (pairwise comparison). O texto explica que comparações pareadas são mais confiáveis do que avaliações por nota absoluta.
  • Repetir até convergir (Loop Until Convergence) : quando o volume de trabalho não é conhecido de antemão, repete a criação de agentes até que não haja mais novas descobertas ou erros.

Resumo dos casos de uso (Use Cases)

  • Refatorações e migrações em larga escala : divide por callsites, testes que falharam e módulos; em cada worktree, subagentes fazem correções, outro agente revisa de forma adversarial e depois tudo é mesclado. Há um caso real de reescrita de Zig para Rust, e, se forem dadas instruções para evitar comandos intensivos em recursos, é possível maximizar o paralelismo.
  • Deep research (skill /deep-research) : faz fan-out de buscas na web para coletar fontes, verifica alegações com verificação adversarial e sintetiza tudo em um relatório com citações. Também pode ser aplicado à redação de relatórios de status no Slack, exploração profunda de codebases etc.
  • Checagem de fatos (Fact-Checking) : primeiro roda um agente que identifica todas as alegações factuais no relatório; depois, para cada alegação, subagentes verificadores conferem as fontes, enquanto um agente de validação separado avalia até a qualidade dessas fontes.
  • Ordenação e ranking qualitativos : resolve tarefas difíceis de processar de uma vez só — como ordenar mais de 1000 linhas de tickets de suporte por gravidade — usando um pipeline em estilo torneio com comparações pareadas ou divisão em buckets com processamento paralelo e posterior mesclagem.
  • Validação de regras e automação de CLAUDE.md : usa agentes verificadores por regra para detectar omissões, enquanto um agente com persona cética revisa a validade das próprias regras. No sentido inverso, também é possível agrupar correções recorrentes em sessões recentes e code reviews para derivar automaticamente novas regras.
  • Depuração de falhas intermitentes e análise pós-incidente : agentes independentes criam hipóteses a partir de evidências separadas por logs, arquivos e dados, e um painel de validadores e contestadores avalia cada hipótese. Isso se aplica não só a código, mas também à análise de queda de receita, falhas em pipelines de dados etc.
  • Triagem e tratamento de backlog : classifica filas de suporte e bug reports, remove duplicações com itens existentes e então faz correção automática ou escalonamento para humanos. Recomenda-se o padrão de quarentena (quarantine), separando agentes que leem conteúdo externo não confiável dos agentes que executam ações com privilégios. Combinado com /loop, isso permite operação contínua.
  • Exploração criativa e avaliação (Eval) : em tarefas em que preferência pessoal importa, como design ou naming, gera várias opções e depois um agente revisor pontua e seleciona usando uma rubrica. Também pode ser usado em avaliações leves para medir e melhorar a qualidade da própria skill.
  • Roteamento de modelo (Model Routing) : um agente classificador investiga previamente a complexidade da tarefa e escolhe entre Sonnet e Opus para fazer o roteamento adequado.

Vantagens e diferenciais

  • Diferencial : workflows estáticos (static) criados com o Claude Agent SDK ou claude -p precisam ser escritos de forma genérica para dar conta de tratamento generalizado, enquanto Dynamic Workflows se diferenciam por permitir que o Claude escreva um harness personalizado no momento, conforme a necessidade.
  • Vantagens : como vários agentes com contextos separados se concentram cada um em seu próprio objetivo, problemas como preguiça, autovalorização e desvio de objetivo podem ser reduzidos estruturalmente. Em termos operacionais, já há recursos como retomada de sessões interrompidas, definição de orçamento de tokens (use 10k tokens), combinação com /goal e /loop, além de salvar com a tecla s e compartilhar via diretório ~/.claude/workflows ou por meio de skills.
  • Desvantagens e cuidados : o consumo de tokens pode aumentar bastante, então não é adequado para toda tarefa. Os autores deixam claro que um painel de cinco revisores não é necessário para trabalhos comuns de programação e recomendam se perguntar antes: “isso realmente precisa de mais computação?”. As boas práticas ainda estão em formação.

Os Dynamic Workflows podem ser lidos como uma mudança que expande o Claude Code de um assistente único de programação para um metaorquestrador que coordena vários agentes. É uma abordagem voltada para um ponto intermediário entre pipelines estáticos e agentes autônomos, e tende a mostrar maior efeito em trabalhos estruturados e longos, como migração de código, deep research, triagem e análise pós-incidente. Ainda assim, como o custo em tokens é alto e as boas práticas ainda não estão consolidadas, vale avaliar com cuidado a adequação de cada padrão e começar pequeno com “quick workflows”.

Ainda não há comentários.

Ainda não há comentários.