Seu agente escreve mais rápido do que você consegue ler
Na última terça-feira, meu agente de codificação autônomo concluiu uma refatoração de 47 arquivos em 9 minutos. Os testes passaram. O linting passou. Os portões de qualidade não encontraram nenhuma violação. Fiz merge do PR, deployei e segui em frente. Três dias depois, um colega de equipe perguntou por que a lógica de retry no serviço de pagamento havia mudado de backoff exponencial para polling de intervalo fixo. Eu não sabia que tinha mudado. A mensagem de commit do agente dizia “refactor: standardize retry patterns across services.” A mudança estava tecnicamente correta. Eu nunca li a linha 847 do arquivo 31.
Dívida cognitiva é a lacuna entre o código que um agente de IA entrega e o que o desenvolvedor realmente entende sobre esse código. Ao contrário da dívida técnica, que vive na base de código, a dívida cognitiva vive na cabeça do desenvolvedor. Ela se acumula com a velocidade do agente — agentes produzindo 140-200 linhas por minuto geram dívida mais rápido do que os desenvolvedores conseguem quitar por meio de revisão. Cinco equipes de pesquisa independentes publicaram sobre esse problema em uma única semana, confirmando-o como o gargalo central no desenvolvimento assistido por agente.
Essa lacuna entre o que foi entregue e o que eu entendi é dívida cognitiva.
TL;DR
Cinco equipes de pesquisa independentes publicaram sobre o mesmo problema estrutural em uma semana: agentes de codificação produzem saída mais rápido do que os desenvolvedores conseguem verificar, entender e manter. Margaret-Anne Storey nomeou o padrão como “dívida cognitiva.” Pesquisadores da Microsoft, ETH Zurich e de várias universidades estão construindo sistemas para detectar comportamentos inadequados de agentes, tornar chamadas de ferramentas transacionais e fazer benchmarking de como os agentes aprendem por meio de interação. A convergência importa porque sinaliza que a comunidade de pesquisa está alcançando um problema que os praticantes vêm resolvendo com portões de qualidade ad-hoc. O problema de confiabilidade de agentes agora tem um nome, uma taxonomia e cinco abordagens concorrentes. Abaixo: a pesquisa, como detectar dívida cognitiva no seu próprio fluxo de trabalho e uma intervenção mínima viável que você pode implementar hoje.
Cinco artigos, uma semana, um problema
Entre 15 e 21 de fevereiro de 2026, cinco grupos independentes publicaram trabalhos que abordam a mesma falha estrutural em agentes de codificação de IA. Nenhum citou o outro. Cada um abordou o problema de um ângulo diferente. Todos convergiram para a mesma conclusão: o gargalo no desenvolvimento assistido por agente não é mais a qualidade do código. O gargalo é a compreensão humana.
Margaret-Anne Storey articulou o conceito de “dívida cognitiva” para descrever o que se acumula quando agentes produzem código que pode ser limpo, testado e bem estruturado, enquanto desenvolvedores perdem o controle do que o código realmente faz.1 A dívida técnica vive na base de código. A dívida cognitiva vive na cabeça do desenvolvedor. O enquadramento de Storey desloca a questão da confiabilidade do agente de “o código funciona?” para “o desenvolvedor entende o código?”
Nanda et al. na Microsoft publicaram o Wink, um sistema para detectar e recuperar automaticamente de comportamentos inadequados de agentes de codificação.2 A taxonomia deles identifica três modos de falha: desvio de instrução (o agente faz algo diferente do que você pediu), loops repetitivos (o agente tenta repetidamente a mesma abordagem que falha) e uso indevido de ferramenta (o agente chama a ferramenta errada ou passa argumentos errados). O Wink monitora o comportamento do agente em tempo real e intervém antes que o comportamento inadequado se agrave.
Mohammadi et al. na ETH Zurich apresentaram o Atomix, um runtime que envolve chamadas de ferramentas do agente em transações.3 Quando um plano multi-etapas do agente falha no meio, o Atomix reverte os efeitos colaterais. O insight: agentes atuam em sistemas externos (bancos de dados, APIs, sistemas de arquivos), e essas ações têm consequências que o agente não consegue desfazer sem infraestrutura de rollback explícita.
Hallinan et al. criaram o OpaqueToolsBench, um benchmark que mede como agentes aprendem o comportamento de ferramentas por meio de interação em vez de documentação.4 Ferramentas do mundo real são mal documentadas. O benchmark testa se os agentes conseguem descobrir modos de falha, melhores práticas e casos extremos por tentativa e erro. A conclusão: agentes que exploram o comportamento de ferramentas de forma independente produzem melhores resultados do que agentes recebendo documentação perfeita que nunca verificam.
Deng et al. avaliaram 28 sistemas de teste de penetração baseados em LLM e identificaram duas categorias de falha distintas.5 As falhas do Tipo A decorrem de capacidades ausentes (ferramentas erradas, prompts ruins) que a engenharia corrige prontamente. As falhas do Tipo B persistem independentemente do ferramental porque o agente não tem o julgamento para avaliar suas próprias descobertas. O Tipo B é o problema da dívida cognitiva expresso como um risco de segurança: o agente encontra seis de sete vulnerabilidades, mas relata com confiança que o sistema é seguro.
A convergência importa mais do que qualquer artigo isolado
Um artigo sobre confiabilidade de agentes é interessante. Cinco artigos em uma semana de equipes sem relação é um sinal. A comunidade de pesquisa está chegando de forma independente à mesma conclusão que os praticantes vêm descobrindo por meio de falhas em produção.
Construí o sistema de qualidade Jiro a partir de maio de 2025. O sistema impõe um loop de qualidade de 7 etapas, um portão de evidências com 6 critérios e 7 modos de falha nomeados que mapeiam diretamente para os padrões que esses artigos descrevem:
| Descoberta da pesquisa | Equivalente Jiro | Método de detecção |
|---|---|---|
| Wink: desvio de instrução | Tunnel Vision | Etapa Zoom Out verifica pontos de integração |
| Wink: loops repetitivos | Circuit breaker | Encerra o retry após 3 falhas idênticas |
| Wink: uso indevido de ferramenta | Confidence Mirage | Portão de evidências rejeita “estou confiante” sem prova |
| Atomix: efeitos colaterais irrecuperáveis | Portões de deliberação | Consenso multiagente antes de ações irreversíveis |
| Deng: falhas de julgamento Tipo B | Hollow Report | Exige evidência específica para cada afirmação |
A linha do tempo importa. Nove meses de depuração por tentativa e erro em produção, construindo portões de qualidade uma falha por vez, resultaram em uma arquitetura que cinco artigos de pesquisa agora estão formalizando de forma independente. Os problemas estruturais são reais. As soluções ad-hoc funcionam. A pesquisa está alcançando com frameworks, taxonomias e benchmarks que tornam as soluções reproduzíveis.
As três leis da dívida cognitiva
O enquadramento de Storey cristaliza o que observei ao longo de 11 meses de desenvolvimento autônomo de agentes. Três padrões se mantêm independentemente do modelo, ferramental ou domínio:
1. A dívida cognitiva se acumula com a velocidade. Meu agente produz em média 140-200 linhas de mudanças significativas de código por minuto em uma sessão de refatoração (medido a partir de diffs do git, excluindo espaços em branco). Um desenvolvedor humano focado produz cerca de 20-40 linhas por minuto durante codificação ativa.8 O loop Ralph que executa Claude a US$ 10/hora não produz 5x a dívida cognitiva de um desenvolvedor humano. Ele produz muito mais, porque a velocidade de digitação do desenvolvedor humano está acoplada à sua velocidade de pensamento. A velocidade de saída do agente não tem acoplamento com sua velocidade de compreensão. A saída dobra; a compreensão permanece constante; a dívida se acumula.
2. Testes passando não quitam dívida cognitiva. Cada artigo no conjunto desta semana trata a aprovação de testes como um sinal necessário, mas insuficiente. As falhas Tipo B de Deng et al. passam em todas as verificações automatizadas. A taxonomia de comportamento inadequado do Wink inclui agentes que produzem código funcional que não corresponde à intenção. Meu portão de evidências exige seis critérios além de “testes passam,” e o critério mais difícil de verificar ainda é “o desenvolvedor entende o que mudou?”6
Aqui está um exemplo concreto. Meu agente refatorou uma consulta de banco de dados para usar uma CTE (Common Table Expression) em vez de uma subconsulta. Ambas as abordagens retornaram resultados idênticos. Os testes passaram. A versão com CTE rodou 3x mais lentamente em nosso conjunto de dados porque o planejador de consultas não conseguiu empurrar predicados para dentro da CTE. Percebi isso durante uma verificação rotineira de EXPLAIN ANALYZE duas semanas depois. Os testes do agente verificaram a corretude. Nada no conjunto de testes verificou características de performance. A dívida cognitiva não era “código ruim.” A dívida cognitiva era “eu não sabia que o plano de execução havia mudado.”
3. A dívida cognitiva é invisível até não ser. A dívida técnica se anuncia por meio de builds lentos, testes instáveis e conflitos de merge. A dívida cognitiva é silenciosa até alguém perguntar “por que o serviço de pagamento usa polling de intervalo fixo?” e ninguém saber. A contribuição de Storey é dar um nome ao problema invisível.
Cinco sinais de alerta de que você está acumulando dívida cognitiva
Antes de poder consertar o problema, você precisa enxergá-lo. Estes cinco sinais aparecem antes dos incidentes em produção:
1. Você não consegue explicar o último PR do agente sem relê-lo. Abra o PR mais recente que seu agente criou. Sem olhar para o diff, descreva o que mudou e por quê. Se você não consegue, fez merge de código que não entende. Rastreio isso adicionando uma “verificação de resumo” de uma linha ao meu processo de revisão: antes de aprovar, escrevo uma explicação de uma frase no comentário do PR. Se não consigo escrever a frase, não revisei o suficiente.
2. Seu git log --stat mostra sessões com 20+ arquivos tocados. Execute isto agora mesmo:
git log --stat --since="1 week ago" --author="$(git config user.name)" | \
awk '/files? changed/ {files+=$1} END {print files, "files changed this week"}'
Compare o número a quantos desses arquivos você conseguiria descrever de memória. A diferença é seu backlog de dívida cognitiva.
3. Você revisa diffs rolando, não lendo. Rolar é reconhecimento de padrões: “isso parece certo.” Ler é compreender: “isso muda o intervalo de retry de exponencial para fixo, o que significa que o serviço downstream verá um padrão de tráfego diferente.” Se sua revisão leva menos de um minuto por 100 linhas de diff, você está rolando.
4. Suas mensagens de commit descrevem O QUÊ, não POR QUÊ. “Refactor: standardize retry patterns” descreve o que o agente fez. “Fix: exponential backoff caused thundering herd after service restart” descreve por quê. Se as mensagens de commit do seu agente se parecem com o primeiro exemplo e você não as reescreve, ninguém (incluindo você no futuro) saberá o raciocínio por trás da mudança.
5. Você se sente produtivo, mas não consegue listar o que mudou. No final de um dia usando um agente, escreva de memória as três mudanças de código mais significativas. Se você tiver dificuldade, o agente foi produtivo. Você não. A dívida se acumulou enquanto você se sentia eficiente.
Comece por aqui: o protocolo dos três arquivos
Você não precisa de 95 hooks, 7 modos de falha nomeados ou um sistema de deliberação multiagente para começar a gerenciar a dívida cognitiva. Comece com uma regra e construa a partir daí.
A regra: Após cada sessão de agente, leia completamente três arquivos. Não passe o olho. Não role. Leia cada linha dos três arquivos com os maiores diffs.
Por que três? Porque três arquivos é alcançável (você realmente vai fazer) e diagnóstico (você descobrirá se as mudanças do agente correspondem ao seu modelo mental). Se corresponderem, sua dívida é gerenciável. Se não corresponderem, você tem um indicador antecipado de que o resto das mudanças da sessão também diverge do seu entendimento.
Implementação
Depois que seu agente terminar, execute:
# Show the 3 files with the largest diffs from the last commit
git diff HEAD~1 --stat | sort -t'|' -k2 -rn | head -3
Em seguida, leia esses três arquivos. Não o diff. O arquivo completo. O contexto importa: o diff mostra o que mudou, mas o arquivo mostra o que a mudança significa no contexto.
Caminho de upgrade
Uma vez que o protocolo dos três arquivos vire hábito (cerca de uma semana), adicione uma camada de cada vez:
| Semana | Adição | O que detecta |
|---|---|---|
| 1 | Leitura de três arquivos | Lacunas de compreensão |
| 2 | Resumo de uma frase do PR (escrito antes da aprovação) | Desalinhamento de intenção |
| 3 | EXPLAIN ANALYZE em qualquer consulta modificada |
Regressões de performance |
| 4 | Reescrita da mensagem de commit (mudar O QUÊ para POR QUÊ) | Raciocínio perdido |
| 5+ | Modos de falha nomeados para padrões recorrentes da sua equipe | Cegueira estrutural |
Cada camada quita uma categoria específica de dívida cognitiva. A leitura de três arquivos detecta lacunas de compreensão. O resumo do PR detecta desalinhamento de intenção. A verificação de consulta detecta o incidente da CTE que descrevi acima. A reescrita do commit preserva o raciocínio que de outra forma evaporaria. Modos de falha nomeados previnem erros recorrentes.
O que a pesquisa propõe (e o que realmente funciona)
Os cinco artigos apontam para quatro intervenções estruturais. Todas as quatro existem de alguma forma em minha toolchain de Claude Code, construída antes dos artigos serem publicados, validada pelos mesmos padrões que os artigos descrevem.
Verificação independente. O Wink monitora o comportamento do agente em relação à intenção declarada. Meu loop de qualidade exige a releitura de cada linha escrita, proibindo explicitamente o modo de falha Phantom Verification (alegar que os testes passam sem executá-los na sessão atual).7 A correção é estrutural: a verificação deve ser realizada por um processo diferente daquele que produziu a saída.
Na prática, imponho isso com um hook pós-sessão que executa o conjunto de testes de forma independente em vez de confiar no relatório do agente:
# Post-session verification hook (simplified)
# Agent says "tests pass" — verify independently
cd "$PROJECT_DIR"
test_output=$(python -m pytest --tb=short -q 2>&1)
exit_code=$?
if [ $exit_code -ne 0 ]; then
echo "AGENT CLAIMED TESTS PASS. INDEPENDENT RUN FAILED:"
echo "$test_output"
exit 1
fi
O agente relatou “todos os testes passam” e falou sério. A execução independente detecta diferenças de ambiente, fixtures ausentes e testes que passam por efeitos colaterais em vez de corretude. Em 11 meses rodando esse hook, ele detectou 23 falsos positivos de auto-relatos do agente.9
Limites transacionais. O Atomix envolve chamadas de ferramentas em transações com rollback. Meu sistema de deliberação gateia ações irreversíveis atrás de consenso de múltiplos agentes independentes. Ambas as abordagens adicionam fricção à execução do agente nos pontos onde os erros são mais caros. A versão prática para a maioria das equipes: exigir uma etapa de aprovação manual antes de qualquer migração de banco de dados, deploy ou chamada de API externa iniciada pelo agente.
Taxonomias comportamentais. Os três modos de falha do Wink (desvio, loops, uso indevido de ferramenta) e meus sete modos de falha nomeados (Shortcut Spiral, Confidence Mirage, Good-Enough Plateau, Tunnel Vision, Phantom Verification, Deferred Debt, Hollow Report) servem ao mesmo propósito: tornam falhas invisíveis visíveis ao dar-lhes nomes.7 Um desenvolvedor que pode dizer “o agente está exibindo Tunnel Vision” pode intervir antes que a dívida se agrave. Comece com três nomes para os três erros de agente mais comuns da sua equipe. Os nomes importam mais do que a taxonomia.
Engajamento seletivo. A distinção Tipo A/Tipo B de Deng et al. e o módulo de confiança no meu sistema de deliberação ambos codificam o mesmo insight: nem toda saída do agente merece o mesmo nível de escrutínio. Uma heurística útil:
| Saída do agente | Nível de revisão | Por quê |
|---|---|---|
| Adições de arquivos de teste | Passar o olho | Baixo raio de impacto, fácil de verificar executando |
| Mudanças de configuração/dependência | Leitura completa | Impacto silencioso em produção |
| Schema ou consultas de banco de dados | Leitura completa + EXPLAIN | Performance é invisível em testes |
| Autenticação/autorização | Leitura completa + revisão de segurança | Falhas Tipo B de Deng se concentram aqui |
| Refatoração em 10+ arquivos | Protocolo dos três arquivos + verificações pontuais | Compreensão impossível em escala total |
A pergunta que ninguém respondeu ainda
Todos os cinco artigos descrevem o problema. Wink, Atomix e OpaqueToolsBench propõem soluções parciais. Nenhum deles responde à pergunta que mais importa: como você mede a dívida cognitiva?
A dívida técnica tem proxies: complexidade ciclomática, cobertura de testes, idade das dependências. A dívida cognitiva não tem métrica equivalente. Meu portão de evidências pergunta “o desenvolvedor entende o que mudou?” mas impõe a resposta por meio de auto-relato, que é exatamente o método de verificação que o modo de falha Confidence Mirage explora.
Uma métrica útil rastrearia o delta entre o que o agente mudou e o que o desenvolvedor consegue explicar. Contagem de arquivos é um proxy grosseiro. Complexidade de diff (não contagem de linhas, mas densidade semântica de mudança) é melhor. A métrica ideal se correlacionaria com a probabilidade de um incidente em produção causado por um mal-entendido de código gerado por agente. Ninguém construiu essa métrica ainda. A calculadora interativa acima aproxima a razão, mas uma razão não é um limiar. Ainda não sabemos onde cai a linha entre “dívida gerenciável” e “incidente à espera de acontecer.”
Até alguém construir essa métrica, a resposta prática é a mesma que precede os agentes de IA: leia o código. A velocidade do agente torna a leitura de cada linha impraticável. O protocolo dos três arquivos, as taxonomias comportamentais e os limites transacionais reduzem o volume de código que requer atenção humana. A dívida cognitiva que permanece após esses filtros é a dívida que importa.
Principais conclusões
- Cinco grupos de pesquisa independentes convergiram para o mesmo problema em uma semana. Quando equipes sem relação chegam à mesma conclusão simultaneamente, o problema subjacente é estrutural, não teórico.
- A dívida cognitiva é o gargalo, não a qualidade do código. Agentes produzem código correto mais rápido do que os desenvolvedores conseguem entender. Testes, linters e portões de qualidade reduzem o problema, mas não conseguem eliminá-lo.
- Comece com o protocolo dos três arquivos. Após cada sessão de agente, leia completamente os três arquivos com os maiores diffs. Construa camadas adicionais (resumos de PR, verificações de consulta, reescritas de commit, modos de falha nomeados) uma por semana.
- Nomeie os modos de falha. A taxonomia do Wink e os modos de falha nomeados do Jiro servem ao mesmo propósito: tornar problemas invisíveis visíveis. Se o seu sistema de agente não tem nomes para seus padrões de falha, você não consegue detectá-los.
- Adicione fricção em limites irreversíveis. Chamadas transacionais de ferramentas (Atomix) e consenso multiagente (deliberação) ambos adicionam custo nos pontos onde os erros são mais caros. O custo vale a pena.
FAQ
O que é dívida cognitiva no desenvolvimento de software?
Dívida cognitiva é a lacuna entre o que o código faz e o que os desenvolvedores entendem sobre o código. Margaret-Anne Storey articulou o conceito para distingui-lo da dívida técnica, que vive na base de código. A dívida cognitiva vive na cabeça do desenvolvedor. Agentes de codificação de IA aceleram a dívida cognitiva porque produzem código funcional mais rápido do que os desenvolvedores conseguem ler, revisar e internalizar.
Como você detecta o acúmulo de dívida cognitiva?
Cinco sinais práticos: você não consegue explicar o último PR do agente sem relê-lo, git log mostra 20+ arquivos tocados por sessão, você revisa diffs rolando em vez de ler, as mensagens de commit descrevem o que mudou, mas não por quê, e você se sente produtivo, mas não consegue listar o que mudou. A razão de arquivos modificados para arquivos revisados é o proxy quantitativo mais simples.
Os desenvolvedores devem revisar cada linha que um agente de IA escreve?
Revisar cada linha é impraticável nas velocidades de saída do agente. O protocolo dos três arquivos fornece uma alternativa prática: após cada sessão de agente, leia completamente os três arquivos com os maiores diffs. Revisão seletiva guiada por risco preenche a lacuna restante. Mudanças rotineiras com alta cobertura de testes precisam de menos escrutínio. Mudanças de arquitetura, modificações de segurança, consultas de banco de dados e ações irreversíveis precisam de revisão completa. A classificação de falhas Tipo A/Tipo B de Deng et al. fornece o framework: falhas Tipo A (ferramentas ausentes, prompts ruins) são detectadas por verificações automatizadas. Falhas Tipo B (lacunas de julgamento) exigem revisão humana.
Qual é a intervenção mínima viável para a dívida cognitiva?
Comece com o protocolo dos três arquivos: após cada sessão de agente, execute git diff HEAD~1 --stat | sort -t'|' -k2 -rn | head -3 para encontrar os três maiores arquivos alterados, então leia cada arquivo completamente (não o diff, o arquivo completo no contexto). Adicione uma camada por semana: frases de resumo de PR, EXPLAIN ANALYZE em consultas modificadas, reescritas de mensagens de commit de "o quê" para "por quê" e modos de falha nomeados para padrões recorrentes.
Referências
-
Storey, Margaret-Anne, “How Generative and Agentic AI Shift Concern from Technical Debt to Cognitive Debt.” Referenciado via Simon Willison, 15 de fevereiro de 2026. simonwillison.net. ↩
-
Nanda, Rahul, et al., “Wink: Recovering from Misbehaviors in Coding Agents,” arXiv:2602.17037, fevereiro de 2026. arxiv.org. ↩
-
Mohammadi, Bardia, et al., “Atomix: Timely, Transactional Tool Use for Reliable Agentic Workflows,” arXiv:2602.14849, fevereiro de 2026. arxiv.org. ↩
-
Hallinan, Skyler, et al., “OpaqueToolsBench: Learning Nuances of Tool Behavior Through Interaction,” arXiv:2602.15197, fevereiro de 2026. arxiv.org. ↩
-
Deng, Gelei, et al., “What Makes a Good LLM Agent for Real-world Penetration Testing?” arXiv:2602.17622, fevereiro de 2026. arxiv.org. ↩
-
Portão de evidências do sistema de qualidade Jiro do autor. Seis critérios: segue padrões da base de código, solução funcional mais simples, casos extremos tratados, testes passam, sem regressões, resolve o problema real. Implementação em Why My AI Agent Has a Quality Philosophy. ↩
-
Taxonomia de modos de falha nomeados do autor. Sete modos documentados no sistema de qualidade Jiro, impostos por 95 hooks na toolchain de Claude Code. Consulte Quality Philosophy para a taxonomia completa e métodos de detecção. ↩↩
-
Saída do agente medida a partir de
git diff --statem 30 sessões do loop Ralph em janeiro-fevereiro de 2026, com média de 140-200 linhas significativas por minuto (excluindo espaços em branco, imports e boilerplate). Baseline humano estimado a partir do próprio histórico de commits pré-agente do autor: 20-40 linhas por minuto durante sessões de codificação focada. Esses números são ilustrativos e variam por tipo de tarefa. ↩ -
Logs de verificação pós-sessão do autor, rastreados em
~/.claude/state/verification/. 23 falsos positivos detectados em aproximadamente 400 sessões de agente de maio de 2025 a fevereiro de 2026 (taxa de falsos positivos de 5,75% no status de testes auto-relatado pelo agente). ↩