agentic-development-claude-loop.html
< BACK Máquina vintage de fita carretel-a-carretel funcionando autonomamente em um estúdio iluminado com tons quentes de âmbar, granulação de filme 35mm

Desenvolvimento Agentic: Deixando Claude Dirigir o Loop Completo

No outubro passado, passei uma tarefa bastante chata para Claude: "Monte um wrapper da API REST do WordPress em PHP, escreva testes PHPUnit para ele, execute-os, corrija o que falhar." Dei a ele acesso ao meu terminal via uma configuração local de tool-use do Claude e saí para fazer chá. Voltei doze minutos depois. Os testes estavam verdes. Eu tinha um wrapper funcionando com 94% de cobertura e um pequeno comentário inline onde Claude tinha detectado um caso extremo que não havia mencionado no briefing. Fiquei ali na minha cozinha em Bermondsey genuinamente desconfortável.Claude tool-use setup and walked away to make tea. Came back twelve minutes later. Tests were green. I had a working wrapper with 94% coverage and a small inline comment where Claude had caught an edge case I hadn't mentioned in the brief. I stood there in my kitchen in Bermondsey genuinely unsettled.

Isso é desenvolvimento agentic. Não é autocomplete, não é um Stack Overflow mais inteligente. É um modelo que raciocina sobre um objetivo, escolhe a próxima ação, executa-a, observa o resultado e faz loop até terminar. E está mudando como eu executo projetos na Seahawk Media mais rápido do que quase qualquer coisa nos últimos nove anos.

O Que "Agentic" Realmente Significa (E O Que Não Significa)

Vamos ser precisos, porque essa palavra é usada de forma vaga. Um loop agentic de IA tem três coisas: um objetivo, um conjunto de ferramentas e a capacidade de decidir o que fazer a seguir com base no que acabou de acontecer. O modelo não está apenas gerando texto. Está agindo, observando e replanejando.

O que não é é mágica. O modelo ainda pode alucinar uma assinatura de função. Pode se prender em um loop fazendo o mesmo conserto errado sete vezes. Pode entender mal seu objetivo no passo um e construir com confiança na direção errada por dez passos. Já vi todos esses casos. Uma vez, em um projeto de dashboard React, Claude gastou cerca de vinte minutos adicionando verificações de nulidade cada vez mais elaboradas para resolver um problema que era na verdade uma falta de await. Esse foi meu erro, dei a ele um especificação inicial vaga.not is magic. The model can still hallucinate a function signature. It can loop itself into a corner doing the same wrong fix seven times. It can misunderstand your goal at step one and build confidently in the wrong direction for ten steps. I've seen all of these. Once, on a React dashboard project, Claude spent about twenty minutes adding increasingly baroque null checks to solve a problem that was actually a missing await. That one was my fault, I gave it a vague initial spec.

A distinção que importa para quem está na prática: tarefas agênticas bem delimitadas vencem as abertas. "Escrever e testar uma função de sanitização de slug que lida com árabe, japonês e emoji" é uma ótima tarefa agêntica. "Construa um SaaS para mim" não é. Mantenha o escopo fechado, ou você passará mais tempo revisando desvios errados do que teria gasto apenas escrevendo o código.narrow agentic tasks beat open-ended ones. "Write and test a slug sanitisation function that handles Arabic, Japanese, and emoji" is a great agentic task. "Build me a SaaS" is not. Scope it tight, or you'll spend more time reviewing wrong turns than you would have spent just writing the code.

A Stack Real que Estou Usando

Ferramentas importam enormemente aqui. Sem o suporte correto, "Claude agêntico" é só uma janela de chat.

Meu setup atual na Seahawk:

  • [Claude API](https://www.anthropic.com/api) com tool-use, especificamente a beta de computer_use e ferramentas customizadas de bash/filesystem, specifically the computer_use beta and custom bash/filesystem tools
  • Cursor como camada de IDE, com Claude 3.5 Sonnet configurado como modelo backend as the IDE layer, with Claude 3.5 Sonnet set as the backend model
  • pytest / PHPUnit / Jest dependendo do projeto, porque Claude precisa de um sinal determinístico para fazer loops. Sem o output dos testes, está voando à cega. depending on the project, because Claude needs a deterministic signal to loop on. Without test output, it's flying blind.
  • Um system prompt curto que diz ao Claude qual é a estrutura do projeto, quais são os padrões de código, e, isto é importante, para parar e perguntar se está prestes a criar um novo arquivo fora do diretório especificado. that tells Claude what the project structure is, what the coding standards are, and, this is important, to stop and ask if it's about to create a new file outside the specified directory.

Essa última restrição parece menor. Não é. Modelos agênticos criarão felizes módulos inteiros se acharem que serve ao objetivo. Guardrails no sistema de arquivos me salvaram de vários momentos "de onde isso veio?".

Uma coisa que não uso: frameworks de orquestração multi-agente para a maioria do trabalho. LangChain, AutoGen, CrewAI, são genuinamente interessantes, mas para uso de desenvolvedor solo ou pequena agência, a sobrecarga de configurar agentes-conversando-com-agentes geralmente não compensa. Um Claude loop bem delimitado vence três agentes mal delimitados gritando um com o outro.

Como Estruturo uma Tarefa Digna de Loop

Aqui está o que decidi após provavelmente 200+ sessões com agentes este ano. Dê ao modelo um resumo de tarefa que contenha quatro coisas:

  1. O objetivo, específico, testável, pequeno o suficiente para terminar em menos de 30 passos, specific, testable, small enough to finish in under 30 steps
  2. O estado inicial, quais arquivos existem, quais testes já passam, what files exist, what tests already pass
  3. A condição de sucesso, geralmente "todos os testes verdes" ou uma assinatura de função específica que deve produzir, usually "all tests green" or a specific function signature it must produce
  4. A condição de parada, "se você tentou o mesmo corretivo mais de três vezes, pare e explique por que está travado", "if you've tried the same fix more than three times, stop and explain why you're stuck"

Esse quarto ponto é subestimado. Sem ele, Claude às vezes faz loop infinito. Não infinito-infinito, mas já vi ele fazer 18 tentativas em um problema de regex complicado, cada uma ligeiramente diferente, nenhuma correta, nunca parando para dizer "não tenho certeza." Dizer explicitamente para ele superficializar confusão é algo que a especificação do modelo Anthropic discute em termos da abordagem do modelo à incerteza, mas na prática, você ainda precisa solicitar isso.Anthropic model spec discusses in terms of the model's approach to uncertainty, but in practice, you still need to prompt for it.

Em 2022 um cliente nos deu um trabalho migrando 14.000 listagens de produtos de uma instalação legada de Magento para WooCommerce. Naquele ponto Claude não estava fazendo loops agenticos, então escrevemos os scripts de migração manualmente em duas semanas. O mesmo trabalho hoje? Eu escreveria uma especificação rigorosa, passaria para Claude com acesso de leitura ao schema do BD Magento e acesso de escrita a uma instância WooCommerce de staging, e deixaria rodar. Genuinamente acho que terminaríamos em dois dias. Essa é a diferença.

Onde Claude é Surpreendentemente Bom

Refatoração de Código Existente

É aqui que eu mais me impressionei. Jogue para ele uma classe bagunçada com 400 linhas, peça para refatorar em direção à responsabilidade única, e deixe-o rodar seus próprios testes unitários como checkpoints. Ele mantém contexto em todo o arquivo melhor do que eu esperava e é genuinamente cuidadoso em não quebrar testes que estão passando. O resultado nem sempre é a arquitetura que eu escolheria, mas é geralmente defensável.I would choose, but it's usually defensible.

Escrevendo Testes para Código que Você Não Escreveu

Seahawk faz muitos audits de sites e rescues. Herdamos codebases o tempo todo, frequentemente sem nenhum teste e sem o desenvolvedor original à vista. Comecei a usar o Claude agentic especificamente para escrever uma test suite para código herdado antes de tocarmos em qualquer coisa. Ele lê o source, infere intent a partir de nomes de funções e comentários, escreve testes, roda-os, e ajusta quando algo falha inesperadamente. Mês passado ele pegou um bug de corrupção silenciosa de dados em um manipulador customizado de pedidos do WooCommerce que provavelmente estava lá há dois anos. Ninguém sabia.

Moendo Boilerplate

Scaffolding de endpoint REST, migrações CRUD, formulários de painel admin. A coisa chata que leva uma tarde de um desenvolvedor competente e ninguém gosta. Claude é rápido e consistente aqui, e consistência é na verdade o que você quer em boilerplate, ele não fica criativo, não fica cansado, ele apenas faz pattern-matching do seu código existente e o estende.

Onde Vai Por Água Abaixo

Honestamente, os fracassos são instrutivos. Aqui estão os que eu mais bato:

  • Context window overflow em codebases grandes. Claude 3.5 Sonnet tem uma janela de contexto de 200k tokens, o que soa enorme até você estar alimentando-o com um plugin WP completo com 40 arquivos. Ele começa a esquecer coisas que viu no começo da sessão. Solução: quebrar o trabalho em loops menores com checkpoints explícitos. Claude 3.5 Sonnet has a 200k token context window, which sounds enormous until you're feeding it a full WP plugin with 40 files. It starts forgetting things it saw early in the session. Solution: break the job into smaller loops with explicit checkpoints.
  • Confiança em coisas que ele não deveria estar confiante. Claude vai consertar uma query de banco de dados, rodar o teste, ele passa, e relatar sucesso, mas a query agora é sutilmente menos eficiente porque ele trocou uma cláusula WHERE amigável com índice por uma subquery. Ele resolveu o problema declarado e criou um não declarado. Code review ainda importa. Claude will fix a database query, run the test, it passes, and report success, but the query is now subtly less efficient because it swapped an index-friendly WHERE clause for a subquery. It solved the stated problem and created an unstated one. Code review still matters.
  • Tool permission creep. Se você der acesso bash e não restringir, ele vai rodar npm install para packages que você não pediu, ou pior, fazer uma requisição de rede que você não autorizou. Isso não é malicioso, é o modelo fazendo o que parece ser helpful. Defina suas permissões de tool antes de começar, não depois que algo estranho acontece. If you give it bash access and don't constrain it, it will run npm install for packages you didn't ask for, or worse, make a network request you didn't sanction. This isn't malicious, it's the model doing what seems helpful. Set your tool permissions before you start, not after something weird happens.

Uma nota sobre segurança: se você está executando loops de agentes contra qualquer coisa conectada a dados de produção, leia a orientação da Anthropic sobre segurança no uso de ferramentas. Não é longa, e vai te poupar de um mau dia.guidance on tool-use safety. It's not long, and it will save you a bad day.

Prompting para Comportamento de Agente vs. Comportamento de Chat

O modelo de prompting é diferente e isso confunde as pessoas. Em um contexto de chat você é conversacional, iterativo, vai e vem. Em um contexto de agente o prompt inicial é um documento de especificação. Você não estará lá para esclarecer no meio da tarefa.

Coisas que fazem prompts de agente funcionar:

  1. Declare as restrições primeiro, não por último. A maioria das pessoas as enterra.
  2. Diga ao agente o que não fazer. "Não modifique nenhum arquivo fora de /src/utils" é mais útil que dez linhas de instruções positivas.not to do. "Do not modify any file outside /src/utils" is more useful than ten lines of positive instructions.
  3. Dê a ele uma saída de emergência. "Se você chegar a um ponto de decisão onde prosseguir exigiria alterar o esquema do banco de dados, pare e escreva um resumo do motivo."
  4. Referencie explicitamente o comando do executor de testes. "Execute ./vendor/bin/phpunit tests/ após cada mudança e use a saída para guiar seu próximo passo."./vendor/bin/phpunit tests/ after every change and use the output to guide your next step."

A mudança de enquadramento é: você está escrevendo um briefing para um contratante muito capaz mas que não pode fazer perguntas. Então escreva como um.

O Dial de Autonomia: Quanto Deixar Rodar

Esta é a pergunta que mais recebo de outros donos de agências. Você fica de olho ou deixa por conta?

Minha resposta depois de um ano nisso: depende inteiramente da reversibilidade das ações. Pesquisa somente leitura, escrita de testes, scaffolding em um novo diretório, deixa rodar. Qualquer coisa que toque em um banco de dados ativo, modifique manifestos de pacotes, ou interaja com APIs externas, revise a cada poucos passos, ou pelo menos leia o plano antes de executar.

O padrão de prompting ReAct (Reason + Act, do paper Yao et al. de 2022) vale a pena entender aqui. É essencialmente o que Claude faz internamente quando você lhe dá ferramentas: ele pensa em voz alta sobre o que fazer, faz, lê o resultado, pensa novamente. Tornar esse raciocínio visível, pedir ao Claude para imprimir seu plano antes de cada ação, te dá um ponto natural de revisão sem quebrar o loop.ReAct prompting pattern (Reason + Act, from the 2022 Yao et al. paper) is worth understanding here. It's essentially what Claude does internally when you give it tools: it thinks out loud about what to do, does it, reads the result, thinks again. Making that reasoning visible, asking Claude to print its plan before each action, gives you a natural review point without breaking the loop.

Comecei a tratar a saída de raciocínio passo-a-passo do Claude da mesma forma que trato um PR de um desenvolvedor junior. Dou uma olhada rápida. Se algo parecer estranho, intervenho. Se parecer razoável, deixo prosseguir. Esse modelo mental tem me servido bem.

FAQ

Claude agentic é realmente pronto para produção para trabalho com clientes?

Para tarefas específicas e limitadas em ambientes não-produção: sim, absolutamente. Uso regularmente para as fases de scaffolding, refatoração e escrita de testes de projetos. Para qualquer coisa que toque um banco de dados de cliente ativo ou uma API de pagamento externa, mantenho um humano no loop a cada passo de execução. O modelo é capaz; o risco está no raio de explosão de um erro, não no modelo em si.

Qual é a diferença entre Claude agentic e apenas usar Cursor ou GitHub Copilot?

Cursor e Copilot são sugestões de código inline e interfaces de chat. Eles reagem ao que você digita. Claude agentic recebe um objetivo e executa um plano multi-etapas por conta própria, usando ferramentas como um terminal, sistema de arquivos, ou navegador web. É a diferença entre um motor de autocomplete e um processo que pode rodar sem supervisão por dez minutos e voltar com uma tarefa completa.

Preciso saber programar para usar isso?

Você precisa de contexto suficiente para escrever uma especificação coerente e revisar criticamente o resultado. Se você não conseguir ler um diff e dizer se a mudança faz sentido, vai ter um tempo difícil. IA agêntica amplifica competência. Ela não substitui a linha de base.

Qual modelo Claude devo usar para loops agênticos?

Claude 3.5 Sonnet é meu padrão atual. Ele atinge um bom equilíbrio entre qualidade de raciocínio e velocidade, o que importa quando você paga por token em um loop de 30 passos. Claude 3 Opus é melhor para tarefas de raciocínio muito complexo, mas mais lento e caro — eu o uso para o passo de planejamento inicial em trabalhos grandes, depois passo para Sonnet para execução.

---

O que eu sempre volto é que desenvolvimento agêntico não é realmente sobre IA substituir desenvolvedores. É sobre mudar o valor do tempo de um desenvolvedor. Os doze minutos que não gastei escrevendo aquele wrapper PHP em outubro passado, gastei pensando em arquitetura. Esse é um trade-off que eu faço toda hora.

< BACK