01
Por que o agente duplica ação com tanta facilidade
O ponto mais frágil de um loop de tool use é a fronteira entre "a ferramenta executou" e "o agente soube que executou". Entre esses dois momentos há uma rede, um processo que pode cair, um timeout que pode disparar. A ferramenta cobra o cartão com sucesso, mas a resposta se perde no caminho de volta; o agente, sem confirmação, conclui que a chamada falhou e tenta de novo. Do ponto de vista do modelo foi uma única intenção, "cobrar o cliente"; do ponto de vista do mundo foram duas cobranças. O agente não duplica por burrice, duplica porque a única informação que ele tem é a ausência de resposta, e ausência de resposta é indistinguível de falha real.
Some a isso a natureza probabilística do LLM. O modelo pode gerar a mesma tool call duas vezes na mesma conversa porque perdeu o rastro de que já a fez, pode reemitir uma ação depois que o contexto foi truncado, pode reagir a um erro de parsing repetindo o passo inteiro. E o loop de orquestração, tentando ser robusto, adiciona sua própria camada de retry por cima. O resultado é que a mesma ação de escrita tem várias fontes independentes de repetição, e nenhuma delas sabe da outra. Sem uma defesa explícita, a pergunta não é se a ação vai duplicar, é quando.
- Retry do loop de orquestração: a chamada de rede deu timeout e o loop tenta de novo, sem saber se a primeira chegou a executar do outro lado.
- Reexecução do modelo: a resposta veio malformada, o passo inteiro é refeito e a tool call de escrita é emitida uma segunda vez.
- Retomada apos queda: o processo caiu no meio do loop, o estado durável é recarregado e a etapa em andamento roda de novo.
- Repeticao pelo proprio LLM: o modelo perde o rastro do que ja fez e gera a mesma acao mais de uma vez na mesma conversa.