Harness no desenvolvimento de software e agentes de AI
1. O que significa "harness"
No contexto de software, "harness" significa uma estrutura de suporte criada para executar, testar, controlar, observar ou avaliar outro sistema.
A tradução literal seria algo como "arnês" ou "arreio", mas em tecnologia o sentido mais útil é:
Um harness é uma estrutura que envolve um sistema para permitir que ele seja executado, testado, medido ou controlado de forma confiável.
Ele não é necessariamente o produto final. Ele é o ambiente, a camada ou o conjunto de ferramentas que permite usar, validar e melhorar o produto final.
Exemplos simples:
- Um test harness executa testes contra uma função, API ou módulo.
- Um evaluation harness mede a qualidade de um modelo ou agente de AI.
- Um agent harness controla como um agente recebe contexto, usa ferramentas, executa passos, guarda estado e valida resultados.
- Um integration harness simula dependências externas para testar um sistema sem depender do mundo real.
- Um safety harness limita ações perigosas, permissões, custos ou efeitos colaterais.
A ideia central é sempre a mesma: criar uma estrutura ao redor do sistema para que ele possa operar com mais controle, repetibilidade, segurança e observabilidade.
2. Por que o conceito está em alta
O conceito de harness sempre existiu em engenharia de software, principalmente em testes automatizados. O assunto voltou a ficar forte por causa de AI, LLMs e agentes autônomos.
Antes, muitos sistemas eram determinísticos: a mesma entrada quase sempre gerava a mesma saída. Nesse cenário, testes tradicionais costumavam ser suficientes.
Com sistemas baseados em AI, isso muda:
- A saída pode variar mesmo com entradas parecidas.
- O agente pode chamar ferramentas, editar arquivos, navegar, consultar APIs e tomar decisões em várias etapas.
- O resultado depende de prompt, contexto, memória, ferramentas, permissões, orçamento de tokens, retries, dados externos e ambiente de execução.
- Pequenas mudanças no modelo ou no prompt podem causar regressões difíceis de perceber.
- Um agente pode parecer inteligente em uma demo e falhar em produção por falta de validação, limites ou observabilidade.
Por isso, em AI moderna, o harness deixa de ser apenas "infra de teste" e vira parte essencial do sistema.
Em agentes de AI, muitas vezes a diferença entre um agente fraco e um agente útil não está apenas no modelo. Está no harness ao redor dele.
3. Harness não é apenas teste
É comum associar harness somente a testes, mas o conceito é mais amplo.
Um harness pode cumprir várias funções:
- Executar: rodar o sistema em um ambiente controlado.
- Testar: verificar se o comportamento está correto.
- Avaliar: medir qualidade, custo, latência, segurança e aderência a critérios.
- Isolar: impedir que erros afetem sistemas reais.
- Simular: substituir dependências externas por mocks, stubs ou ambientes fake.
- Observar: coletar logs, traces, métricas e evidências.
- Controlar: impor limites de tempo, permissões, custo e ações permitidas.
- Reproduzir: permitir repetir uma execução para entender o que aconteceu.
- Comparar: avaliar versões diferentes de código, prompt, modelo ou estratégia.
Essa visão é importante porque um bom harness não responde apenas "passou ou falhou?". Ele ajuda a responder "o que aconteceu, por que aconteceu, quanto custou, se é seguro e se melhorou ou piorou".
4. Tipos comuns de harness
4.1 Test harness
Um test harness é a estrutura usada para executar testes de software.
Ele geralmente inclui:
- Código de teste.
- Dados de entrada.
- Mocks e stubs.
- Um executor de testes.
- Relatórios de resultado.
- Setup e teardown do ambiente.
Exemplo prático:
Uma função calcula o preço final de um pedido. O test harness cria pedidos de exemplo, chama a função, compara o resultado esperado e gera um relatório.
Isso permite testar o comportamento sem precisar abrir uma interface, acessar produção ou depender de um usuário real.
4.2 Integration harness
Um integration harness permite testar como partes diferentes do sistema se conectam.
Exemplo:
Uma aplicação depende de banco de dados, fila, serviço de pagamento e API externa. O harness pode subir versões controladas dessas dependências, usar containers, dados de teste e mocks para simular cenários.
Isso ajuda a validar fluxos reais sem expor dinheiro, clientes ou dados sensíveis.
4.3 Evaluation harness
Um evaluation harness mede a qualidade de um sistema, especialmente quando a resposta não é apenas certo ou errado.
Em AI, isso é essencial.
Ele pode avaliar:
- Correção da resposta.
- Aderência a instruções.
- Uso correto de ferramentas.
- Fundamentação em fontes.
- Segurança.
- Latência.
- Custo.
- Consistência.
- Taxa de alucinação.
- Qualidade percebida por humanos ou por LLM-as-a-judge.
Exemplo:
Você tem um chatbot que responde dúvidas jurídicas internas. O evaluation harness roda 300 perguntas reais ou sintéticas, compara as respostas com critérios definidos, mede citações, verifica se houve invenção de informação e gera um score por versão do prompt ou modelo.
4.4 Agent harness
Um agent harness é a estrutura que permite um agente de AI agir no mundo de forma controlada.
Ele pode incluir:
- Prompt de sistema.
- Gerenciamento de contexto.
- Memória.
- Ferramentas disponíveis.
- Regras de permissão.
- Sandbox de execução.
- Estratégia de planejamento.
- Histórico de ações.
- Verificadores automáticos.
- Limites de tokens, tempo, custo e tentativas.
- Critérios de parada.
- Escalonamento para humanos.
Esse tipo de harness é central para agentes que programam, operam sistemas, analisam documentos, executam tarefas ou usam ferramentas externas.
Sem um harness adequado, o agente pode até ter um modelo forte, mas operar mal: perder contexto, repetir erros, chamar ferramentas erradas, não validar saída, gastar demais ou fazer alterações inseguras.
4.5 Safety harness
Um safety harness impõe limites para evitar dano.
Exemplos:
- Bloquear escrita fora de uma pasta autorizada.
- Exigir aprovação antes de apagar arquivos.
- Impedir comandos destrutivos.
- Limitar chamadas caras de API.
- Reduzir permissões de rede.
- Exigir revisão humana antes de produção.
- Validar dados sensíveis antes de enviar a terceiros.
Em agentes de AI, safety harness é indispensável porque o agente pode agir em muitos sistemas ao mesmo tempo.
5. Harness aplicado a agentes de AI
Agentes de AI não são apenas prompts. Um agente prático costuma ser uma combinação de:
- Modelo de linguagem.
- Instruções.
- Ferramentas.
- Memória.
- Ambiente de execução.
- Planejamento.
- Observabilidade.
- Avaliação.
- Controle de permissões.
O harness é o que organiza tudo isso.
Uma forma simples de visualizar:
Usuário -> Harness -> Agente/Modelo -> Ferramentas/Ambiente -> Harness -> Resultado validado
O harness fica antes, durante e depois da ação do agente.
Antes da execução, ele prepara contexto, regras e ferramentas. Durante a execução, ele controla permissões, registra passos e limita custos. Depois da execução, ele valida o resultado, gera evidências e decide se entrega ao usuário, tenta corrigir ou pede intervenção humana.
6. Componentes de um bom agent harness
6.1 Contexto bem montado
O agente precisa receber o contexto certo, na quantidade certa.
Contexto demais gera ruído, custo e distração. Contexto de menos leva a decisões ruins.
Um harness bem feito seleciona:
- Arquivos relevantes.
- Histórico necessário.
- Regras do projeto.
- Dados de entrada.
- Restrições.
- Critérios de sucesso.
6.2 Ferramentas controladas
Agentes ficam muito mais úteis quando podem usar ferramentas: terminal, navegador, banco de dados, APIs, editores, sistemas internos e buscadores.
Mas ferramenta sem controle é risco.
O harness deve definir:
- Quais ferramentas existem.
- Quando podem ser usadas.
- Quais ações exigem aprovação.
- Quais ações são proibidas.
- Como registrar cada chamada.
- Como lidar com falhas.
6.3 Estado e memória
Tarefas longas exigem estado. O agente precisa saber o que já tentou, o que falhou, quais arquivos editou, quais decisões tomou e quais evidências coletou.
O harness pode manter esse estado de forma explícita para evitar loops e perda de continuidade.
6.4 Verificação automática
Um bom harness não confia apenas na resposta do agente.
Ele executa verificações:
- Testes automatizados.
- Linters.
- Type checks.
- Build.
- Scanners de segurança.
- Comparação com critérios esperados.
- Avaliações com outro modelo quando necessário.
Isso reduz o risco de aceitar uma resposta bonita, mas errada.
6.5 Observabilidade
Se algo dá errado, você precisa entender o motivo.
O harness deve registrar:
- Entradas.
- Saídas.
- Ferramentas chamadas.
- Decisões importantes.
- Erros.
- Custos.
- Tempo de execução.
- Versão de modelo, prompt e código.
Sem observabilidade, melhorar agentes vira tentativa e erro.
6.6 Limites e circuit breakers
Agentes podem entrar em loop, gastar tokens demais ou insistir em uma solução ruim.
Um harness maduro define:
- Limite de tokens.
- Limite de tempo.
- Limite de custo.
- Limite de tentativas.
- Condições de parada.
- Regras para pedir ajuda humana.
Isso transforma autonomia em autonomia controlada.
7. Por que harness é importante para desenvolvedores
Para desenvolvedores, harness é uma forma de trabalhar com mais confiança.
Ele permite:
- Testar código sem depender de produção.
- Reproduzir bugs.
- Validar integrações.
- Automatizar regressões.
- Comparar versões.
- Medir impacto de mudanças.
- Reduzir risco em deploys.
- Usar AI sem abrir mão de engenharia.
No dia a dia, isso aparece em situações como:
- Criar testes para uma API antes de refatorar.
- Simular um webhook de pagamento.
- Rodar uma suíte de avaliação para um chatbot.
- Validar se um agente de programação realmente corrigiu o bug.
- Impedir que um script gerado por AI apague arquivos fora do projeto.
- Medir se uma nova versão de prompt melhorou ou piorou.
A lógica é simples: quanto mais automatizado e poderoso fica o desenvolvimento, mais importante fica ter estruturas confiáveis de validação e controle.
8. Por que harness é importante para AI
Em AI, principalmente com LLMs e agentes, qualidade não é garantida apenas escolhendo um modelo melhor.
A qualidade final depende do sistema completo:
- Modelo.
- Prompt.
- Contexto.
- Ferramentas.
- Dados.
- Memória.
- Ambiente.
- Critérios de avaliação.
- Processo de correção.
O harness mede e controla esse sistema completo.
Sem harness, a equipe tende a avaliar AI por impressão subjetiva: "parece bom", "respondeu bem", "na demo funcionou".
Com harness, a equipe passa a medir:
- Em quantos casos acertou?
- Onde falhou?
- O erro foi de raciocínio, ferramenta, contexto ou dados?
- A nova versão melhorou de verdade?
- Ficou mais cara?
- Ficou mais lenta?
- Criou risco de segurança?
- Está seguindo as regras do negócio?
Isso é o que permite transformar AI em software confiável.
9. Exemplo prático: harness para um agente de programação
Imagine um agente que corrige bugs em um repositório.
Um harness básico poderia funcionar assim:
- Recebe a issue ou descrição do bug.
- Carrega apenas os arquivos relevantes.
- Dá ao agente ferramentas de leitura, edição e execução de testes.
- Impede alterações fora do repositório.
- Exige que o agente explique a mudança.
- Roda testes automatizados.
- Roda lint e type check.
- Mede se o bug foi corrigido.
- Verifica se não houve regressão.
- Gera um relatório com arquivos alterados, testes executados e riscos.
Um harness mais avançado também poderia:
- Criar tarefas isoladas em containers.
- Comparar soluções de vários agentes.
- Rodar testes ocultos.
- Medir tempo e custo por correção.
- Detectar loops ou tentativas repetidas.
- Pedir revisão humana em mudanças sensíveis.
Nesse cenário, o agente escreve código, mas o harness garante disciplina de engenharia.
10. Exemplo prático: harness para um chatbot corporativo
Imagine um assistente interno que responde dúvidas sobre políticas da empresa.
Um evaluation harness poderia:
- Rodar perguntas reais de colaboradores.
- Verificar se a resposta cita fontes internas corretas.
- Penalizar respostas inventadas.
- Medir tom, clareza e completude.
- Testar perguntas maliciosas ou fora de escopo.
- Comparar modelos e prompts.
- Registrar custo e latência.
Antes de publicar uma nova versão, o time executa o harness. Se a qualidade cair, a mudança não vai para produção.
Isso evita que o chatbot seja avaliado apenas por opinião ou por poucos testes manuais.
11. Exemplo prático: harness para automação com ferramentas
Imagine um agente que cria tickets, consulta sistemas internos e atualiza planilhas.
O harness deve controlar:
- Quais sistemas o agente pode acessar.
- Quais ações são somente leitura.
- Quais ações exigem aprovação.
- Como validar se a alteração está correta.
- Como desfazer ou auditar ações.
- Como detectar dados sensíveis.
Sem isso, o agente pode parecer produtivo, mas criar risco operacional.
Com harness, ele vira uma automação mais confiável.
12. Harness, scaffolding e orchestration
Três termos aparecem muito juntos:
- Harness: estrutura de execução, controle, avaliação e observabilidade.
- Scaffolding: estrutura auxiliar que melhora a capacidade do modelo, como planejamento, decomposição de tarefas, uso de ferramentas e memória.
- Orchestration: coordenação entre etapas, agentes, ferramentas, eventos e fluxos.
Eles se sobrepõem, mas não são idênticos.
Um harness pode incluir scaffolding e orchestration. Por exemplo, um agent harness pode ter um planejador, uma memória, uma política de ferramentas, uma etapa de revisão e um avaliador automático.
A diferença prática:
- Scaffolding ajuda o agente a executar melhor.
- Orchestration organiza o fluxo.
- Harness controla, mede, isola e valida a execução.
13. Como criar um harness simples para seu trabalho
Você não precisa começar com uma plataforma complexa. Um harness inicial pode ser simples.
Para software tradicional
Comece com:
- Uma lista de cenários críticos.
- Dados de teste reproduzíveis.
- Testes automatizados.
- Mocks para dependências externas.
- Script único para rodar tudo.
- Relatório claro de sucesso ou falha.
Exemplo:
run-tests -> sobe banco temporário -> aplica migrations -> roda testes -> gera relatório
Para aplicações com LLM
Comece com:
- Um dataset de perguntas ou tarefas reais.
- Critérios de avaliação explícitos.
- Registro de prompt, modelo e parâmetros.
- Métricas de qualidade, custo e latência.
- Comparação entre versões.
- Revisão humana em amostras críticas.
Exemplo:
run-evals -> executa 100 casos -> avalia respostas -> compara com baseline -> mostra regressões
Para agentes
Comece com:
- Tarefas representativas.
- Ambiente isolado.
- Ferramentas permitidas.
- Limites de tempo, tokens e custo.
- Logs de todas as ações.
- Verificações automáticas.
- Critério claro de sucesso.
Exemplo:
agent-task -> prepara sandbox -> executa agente -> roda validações -> gera relatório
14. Boas práticas
- Defina o que significa sucesso antes de rodar o agente ou modelo.
- Use casos reais, não apenas exemplos bonitos.
- Separe avaliação determinística de avaliação subjetiva.
- Meça custo e latência junto com qualidade.
- Guarde versões de prompt, modelo, dados e código.
- Rode avaliações a cada mudança relevante.
- Crie baselines para comparar evolução.
- Registre falhas e transforme falhas recorrentes em novos testes.
- Use humanos para revisar casos ambíguos ou de alto risco.
- Coloque limites claros para ações perigosas.
15. Erros comuns
- Confundir demo boa com sistema confiável.
- Avaliar AI com poucos exemplos escolhidos manualmente.
- Não registrar versão de prompt e modelo.
- Deixar agente usar ferramentas sem permissão clara.
- Medir apenas acerto e ignorar custo, latência e segurança.
- Não testar casos negativos, ambíguos ou maliciosos.
- Não ter ambiente isolado.
- Aceitar saída do agente sem validação.
- Trocar de modelo sem rodar regressão.
- Criar harness tão complexo que ninguém usa.
16. O ponto mais importante
Harness é uma das ideias mais importantes para o próximo ciclo de desenvolvimento com AI.
Não porque seja uma ferramenta específica, mas porque resolve um problema central: como permitir que software, modelos e agentes façam coisas poderosas sem perder controle, segurança e qualidade.
Para software tradicional, harness ajuda a testar e integrar melhor.
Para LLMs, harness ajuda a medir qualidade e regressão.
Para agentes, harness ajuda a transformar autonomia em execução confiável.
A frase-chave é:
Quanto mais autonomia você dá a um sistema, mais forte precisa ser o harness ao redor dele.
17. Resumo executivo
Harness, em desenvolvimento de software, é uma estrutura de suporte que envolve um sistema para executá-lo, testá-lo, avaliá-lo, observá-lo e controlá-lo.
No mundo de AI e agentes, esse conceito ficou ainda mais importante porque agentes não apenas respondem texto: eles usam ferramentas, tomam decisões, mantêm contexto e executam ações em múltiplas etapas.
Um bom harness permite:
- Validar qualidade antes da produção.
- Reduzir regressões.
- Controlar riscos.
- Medir custo e latência.
- Reproduzir falhas.
- Comparar modelos, prompts e agentes.
- Criar confiança operacional.
Para desenvolvedores e entusiastas de AI, dominar esse conceito é essencial. O futuro do desenvolvimento não será apenas escolher o melhor modelo ou escrever o melhor prompt. Será construir bons sistemas ao redor dos modelos.
E esse sistema ao redor é, em grande parte, o harness.
18. Fontes e leituras úteis
- TechTarget - definição de test harness: https://www.techtarget.com/searchsoftwarequality/definition/test-harness
- OpenAI - Evals: https://evals.openai.com/
- OpenAI - How evals drive the next chapter in AI for businesses: https://openai.com/index/evals-drive-next-chapter-of-ai/
- OpenAI - Trustworthy third-party evaluations and harness choices: https://openai.com/index/trustworthy-third-party-evaluations-foundations/
- Anthropic - Demystifying evals for AI agents: https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents
- EleutherAI - LM Evaluation Harness: https://lm-evaluation-harness.readthedocs.io/
- Agentic Development glossary - Evaluation Harness: https://www.agentic-dev.org/glossary/eval-harness
- Prefactor glossary - Agent Evaluation Harness: https://prefactor.tech/glossary/evaluation-harness-agent/