Escrever código continua sendo parte importante do trabalho, mas deixou de ser o único gargalo. Assistentes e agentes de IA já conseguem propor implementações, refatorar arquivos e executar tarefas repetitivas com muita velocidade. Isso não elimina a engenharia: desloca o foco para definir o problema, estabelecer limites e verificar se a solução realmente merece chegar à produção.
É aí que entra o harness: o conjunto de contexto, regras, ambientes e ciclos de feedback que orienta o trabalho — humano ou assistido por IA. Ele transforma um pedido amplo em uma mudança que pode ser executada, observada e revisada.
Do teste ao sistema de trabalho
No jargão de testes, um test harness é a estrutura que permite executar um sistema em condições controladas: prepara dependências, injeta dados, aciona o código e observa o resultado. Em uma equipe que usa agentes, a ideia se amplia. O harness passa a incluir a descrição do que é aceitável, as restrições de segurança, os comandos confiáveis e as verificações que sustentam uma entrega.
A IA acelera; o harness dá direção
Modelos de linguagem são excelentes em explorar alternativas, mas não possuem entendimento garantido do negócio, das consequências operacionais ou das particularidades de um repositório. Um resultado que compila pode ainda violar uma regra de produto, expor um dado sensível ou quebrar uma integração pouco exercitada. Por isso, o objetivo não é pedir que a IA “faça tudo”: é oferecer um caminho seguro para que ela produza mudanças pequenas, verificáveis e fáceis de contestar.
Um bom harness não substitui revisão técnica nem decisão de produto. Ele reduz a incerteza e gera evidências. Quando os testes falham, o agente recebe um sinal específico para corrigir; quando passam, a equipe ainda avalia se a solução atende à intenção, à segurança e à manutenção futura.
O que compõe um bom harness
A implementação varia conforme o projeto, mas estes componentes costumam fazer diferença:
- Especificação e contexto versionados: requisitos de negócio, convenções do repositório, critérios de aceite e exemplos reais próximos do código. Instruções curtas e específicas são mais úteis do que um pedido genérico de “implemente isso”.
- Ambiente reproduzível: dependências, variáveis de exemplo e comandos claros para executar o projeto. Containers e scripts de inicialização ajudam a aproximar o ambiente local, o CI e a produção.
- Portas de qualidade automáticas: formatação, tipos, lint, testes unitários, integração, interface e build. Cada verificação deve ser rápida o bastante para o ciclo de desenvolvimento e confiável o bastante para não virar ruído.
- Limites de acesso: permissões mínimas, segredos fora do contexto do agente e atenção a instruções presentes em conteúdo não confiável. Quanto maior a autonomia, mais explícitos devem ser os limites para arquivos, rede e comandos.
- Observabilidade da mudança: diff pequeno, logs úteis, resultado dos comandos e uma explicação objetiva do que foi alterado. Isso torna a revisão humana mais rápida e o rollback menos arriscado.
Ferramentas são interfaces, não o processo
Claude Code, agentes do VS Code e plataformas como o Google Antigravity podem ler o projeto, alterar arquivos, executar comandos e iterar a partir de feedback. Essas capacidades só são confiáveis quando encontram um projeto bem preparado. O mesmo harness deve servir a qualquer ferramenta: a escolha do modelo ou da IDE pode mudar; os critérios de qualidade não deveriam.
| Sem um harness claro | Com um harness bem projetado |
|---|---|
| Pedido amplo e contexto espalhado em conversas | Critérios de aceite e convenções próximos do código |
| Alteração grande, difícil de revisar e reproduzir | Diff pequeno, comandos determinísticos e feedback rápido |
| Confiança baseada em “parece funcionar” | Evidências: tipos, testes, build, revisão e monitoramento |
A habilidade que ganha importância não é apenas escrever o próximo trecho de código. É desenhar um sistema de trabalho no qual boas soluções se tornam o caminho mais fácil e falhas aparecem cedo. A IA pode acelerar a execução; responsabilidade, julgamento e contexto continuam sendo humanos.