Pra mim, a decisão de especializar um agente ou manter um único agente generalista é apresentada com frequência como escolha de design, quando na prática é escolha sobre onde aceitar degradação. O generalista expõe um catálogo amplo, com system prompt que precisa cobrir todos os domínios de operação, e decide a cada turno qual subconjunto da própria capacidade ativar. O especializado opera com catálogo restrito, prompt ajustado a um domínio e trajetórias de raciocínio previsíveis dentro daquele recorte. A questão útil recai sobre qual modo de falha cada abordagem introduz e qual desses modos o time consegue operar. A discussão sobre superioridade em abstrato é secundária.
O agente generalista falha por dispersão. À medida que o catálogo de ferramentas cresce, a probabilidade de escolha correta decai, e essa decadência não é linear: na prática que tenho observado, fica imperceptível com poucas ferramentas e só vira dominante quando o catálogo cruza algumas dezenas. O modelo passa a selecionar ferramentas próximas em descrição, mas incorretas pra tarefa, e recorre a opções genéricas quando existe uma específica mais adequada. O system prompt que tenta compensar esse comportamento cresce até o ponto em que a instrução mais recente sobrepõe a mais antiga de forma imprevisível, e o custo por turno aumenta tanto pela inflação do prompt quanto pelos retrabalhos decorrentes de decisões ruins de ferramenta.
Na minha análise, o agente especializado falha por fragmentação. Quando a tarefa real do usuário cruza domínios, o especialista executa bem o que está no próprio escopo e devolve ao orquestrador subtarefas incompletas que precisam ser recombinadas com saídas de outros agentes. A recombinação introduz um segundo nível de raciocínio, consome tokens adicionais e é onde os erros de integração aparecem. Especialistas também envelhecem mal quando o domínio se expande: o que começou como um agente de faturamento passa a ser pressionado pra lidar com disputas, reembolsos, créditos e ajustes contábeis, e a escolha que restou ao time é alargar o escopo, diluindo a especialização, ou fragmentar novamente, multiplicando agentes.
O ponto de decisão entre as duas abordagens é observável. Enquanto o catálogo do agente mantém coesão semântica, no sentido de que as ferramentas compartilham vocabulário, estado e suposições sobre o domínio, o generalista opera com precisão aceitável e custo administrável. Quando o catálogo passa a conter ferramentas que operam sobre entidades diferentes, com semânticas sobrepostas e critérios de uso divergentes, a precisão começa a degradar de forma detectável nos traces. É nesse ponto que a separação em especialistas deixa de ser preferência arquitetural e vira correção de um sistema falhando silenciosamente.
Na minha avaliação, a especialização útil é a que se alinha a fronteiras reais do domínio, não a fronteiras organizacionais ou a convenções de nomenclatura. Um agente de leitura separado de um agente de escrita sobre a mesma entidade introduz coordenação desnecessária, porque a decisão de ler ou escrever raramente pode ser tomada antes de examinar o estado atual. Já um agente de pesquisa separado de um agente de execução opera sobre fronteiras reais, porque pesquisar e executar têm critérios de sucesso, latência tolerada e padrões de falha distintos. A heurística que tende a se sustentar é separar agentes quando os critérios de avaliação de sucesso divergem, e consolidar quando convergem mesmo que as ferramentas sejam formalmente distintas.
Especializar agentes também altera a dinâmica de evolução do sistema. Um generalista evolui por acréscimo, em geral de forma caótica, porque qualquer mudança no prompt ou no catálogo afeta todas as trajetórias possíveis simultaneamente e regressões aparecem em lugares inesperados. Um especialista evolui de forma contida, porque mudanças ficam restritas ao próprio domínio e o raio de impacto é previsível. O custo é que evoluções que atravessam domínios passam a exigir coordenação entre vários agentes e, com frequência, mudanças no orquestrador, o que transforma uma alteração que seria localizada no generalista em uma mudança distribuída no sistema especializado.
A economia de tokens também se comporta de formas opostas. Um generalista tende a gastar mais por turno porque carrega prompt e catálogo amplos, mas resolve mais tarefas no mesmo turno, evitando passagens de estado entre agentes. Um time de especialistas gasta menos por turno em cada agente, mas multiplica turnos porque a tarefa atravessa fronteiras, e cada fronteira custa tokens de resumo, passagem de contexto e validação. Em cargas com tarefas simples dentro de um único domínio, o generalista bem catalogado sai mais barato por tarefa. Em cargas com tarefas compostas que atravessam domínios, o time especializado sai mais barato porque cada agente opera com contexto menor e os erros ficam isolados antes de contaminar a trajetória inteira.
Pra mim, o erro mais comum em times que estão começando a operar agentes em produção é tratar a escolha entre especializar e unificar como decisão permanente. A escolha correta é dinâmica: sistemas saudáveis começam generalistas e só especializam quando os traces mostram degradação concreta, do tipo dispersão de ferramenta ou inflação de prompt num subdomínio identificável. A especialização funciona como resposta a um sinal observado, não como aposta antecipada. Quando feita na direção contrária, com base em diagrama de domínio, o sistema incorre no custo de coordenação antes de ter qualquer sinal de que esse custo valeria a pena, e a arquitetura passa a ser mantida por inércia mesmo depois que os traces apontam o problema real em outro lugar.