Inteligência Artificial

17 abr, 2026

Harness Engineering: A camada que faltava no desenvolvimento de IA guiado por especificações

Publicidade

Muitas equipes ainda estão usando IA como se fosse um estagiário.
Nós damos instruções, revisamos cada resultado, pedimos correções e repetimos. Isso funciona para experimentos rápidos. Não funciona como um modelo de entrega de longo prazo.
Assim que a IA passa a fazer parte da entrega real de software, o modelo de estagiário começa a apresentar falhas:

  • Não escala
  • É difícil de padronizar
  • Cria resultados frágeis que dependem demais de supervisão humana constante

A mudança que precisamos não é melhorar os prompts. A mudança é melhorar a engenharia.
Precisamos parar de tratar a IA como um estagiário e começar a tratá-la como um sistema.

O que significa Harness Engineering aqui

Harness engineering é a camada de controle em torno do comportamento da IA.

Uma definição útil neste contexto:

Harness engineering é a prática de projetar guias antecipatórios (feedforward) e sensores de feedback para que o código seja continuamente regulado em direção ao estado desejado definido pelas especificações.

Essa forma de pensar é poderosa porque tira o foco de “qual modelo usar?” e leva para “qual sistema de controle precisamos?”.

Em termos simples:

  • Guias aumentam a chance de acertar já na primeira geração
  • Sensores aumentam a chance de autocorreção antes da revisão humana

Ambos são necessários.

Um sistema só com feedback repete os mesmos erros.

Um sistema só com feedforward nunca prova que funcionou.

Por que o desenvolvimento guiado por especificações importa

Specs-driven development é o que torna o harness engineering viável. Sem isso, não há nada concreto para o harness aplicar.

No desenvolvimento de software, não colocamos sistemas em produção sem:

  • Requisitos
  • Contratos
  • Testes

Sistemas com IA devem seguir a mesma disciplina.

Desenvolvimento de IA guiado por especificações significa definir antecipadamente:

  • Resultados esperados
  • Restrições (formato, linguagem, políticas, regras de domínio)
  • Critérios de aceitação
  • Casos de borda relevantes

Isso transforma a IA de assistente útil em um componente confiável.

De Especificações para Sistema de Controle

Se mapeamos a engenharia de harness para o ciclo orientado por especificações do meu post anterior, este é o modelo central:

Etapa orientada por especificações Objetivo do harness Controles típicos
Intenção do produto Evitar otimização incorreta Documentação de restrições do produto, não-objetivos, métricas de sucesso
Design de alto nível Evitar deriva da arquitetura Regras de arquitetura, limites de módulos, restrições de dependência
Design de baixo nível + critérios de aceitação Evitar comportamento ambíguo Cenários baseados em exemplos, exemplos de contratos, bases de fixtures
Implementação Evitar regressões locais no código Verificação de tipos, linting, análise estática, testes focados
Validação Evitar surpresas em integração/execução Gates de CI, verificação de contratos, sinais em runtime, checagens manuais

O ponto-chave é que o harness não é uma única ferramenta.

Ele é o sistema de controles ao longo de todo o ciclo de vida.

Os dois pilares de um Harness

1. Feedforward (antes da execução)

Feedforward é a orientação fornecida antes do modelo rodar:

  • Instruções claras
  • Contexto estruturado
  • Exemplos (few-shot)
  • Expectativas de formato de saída

Objetivo: reduzir ambiguidade antes da geração.

2. Feedback automatizado (depois da execução)

O feedback não deve depender de humanos encontrando cada erro manualmente.

Um modelo mais robusto usa sensores automatizados:

  • Testes unitários e de integração
  • Validação de schema e contratos
  • Regras de negócio e heurísticas
  • Uso seletivo de LLM como juiz para revisão semântica

Se uma verificação falhar:

  • Reexecutar quando o erro for transitório
  • Corrigir quando a correção for determinística
  • Escalar quando a confiança for baixa ou o impacto for alto

É assim que o sistema se autocorrige.

Entre feedforward e feedback, o harness também gerencia a camada de execução:

  • Orquestração de ferramentas e funções
  • Estratégias de retry e fallback
  • Observabilidade com logs, traces e métricas

Juntas, essas camadas tornam a IA operável: controlável, testável e evoluível.

O risco real: adoção sem disciplina

As equipes vão usar IA de qualquer forma, com ou sem harness. Sem ele, surgem rapidamente anti-patterns conhecidos:

  • Prompts tratados como se fossem especificações
  • Validação mínima
  • Confiança excessiva no primeiro resultado
  • Sistemas que parecem bons até falharem em produção

E conforme a IA acelera a geração de código, o problema cresce:

  • A velocidade de entrega aumenta, mas a confiança não
  • Revisores viram gargalos
  • Desvios ocultos se acumulam mais rápido
  • A dívida de qualidade aparece depois, com custos maiores

Uma preocupação comum de líderes é que nem toda equipe está pronta para isso. O problema principal não é senioridade, e sim o modelo operacional.

Essa abordagem exige que equipes pensem diferente:

  • Definir o que é correto antes da execução
  • Construir loops de feedback, não apenas prompts
  • Projetar para lidar com falhas, não apenas caminhos ideais

Essas são habilidades aprendíveis, mas exigem estrutura e orientação.

Harness engineering é como equipes guiadas por especificações evitam esse gap de disciplina. Ele externaliza o conhecimento do time em controles explícitos, evitando depender de um único engenheiro experiente para garantir qualidade.

Um harness mínimo para começar (times Java com specs-driven)

Você não precisa de um framework gigante para começar.

Comece com uma topologia simples, como um serviço CRUD em Spring Boot, e construa um template reutilizável de harness.

Passo 1: Definir o pacote de especificações (Spec Pack)

  • Descrição do problema
  • O que não será feito (non-goals)
  • Exemplos de aceitação
  • Exemplos de contratos de API ou eventos
  • Restrições operacionais (latência, logs, segurança)

Por exemplo, um spec pack para um endpoint POST /customers poderia ser assim:

# spec-pack/create-customer.yml
problem: Create a new customer record with validated contact info
non_goals:
  - Deduplication logic (handled by a separate service)
acceptance_examples:
  - input: { name: "John Doe", email: "john@example.com" }
    expected_status: 201
    expected_body_contains: ["id", "createdAt"]
  - input: { name: "", email: "invalid" }
    expected_status: 400
    expected_errors: ["name is required", "email format is invalid"]
contract: openapi/customers.yml#CreateCustomer
constraints:
  max_latency_ms: 200
  logging: structured_json
  auth: bearer_token

 

Este único arquivo dá ao agente limites claros, à suíte de testes objetivos claros e ao revisor um checklist claro.

Passo 2: Definir guias de Feedforward

  • Convenções de código
  • Limites arquiteturais
  • Fluxo de “como implementar”
  • Fluxo de “como testar”

Passo 3: Definir sensores de Feedback

  • Build e checagens de tipo
  • Testes rápidos
  • Regras estruturais
  • Verificação de contratos
  • Uma etapa de revisão semântica para mudanças de alto risco

Passo 4: Fechar o ciclo de controle

Quando um problema se repete, não corrija apenas o código.

Melhore o harness:

  • Adicione uma regra
  • Adicione um sensor
  • Melhore uma habilidade
  • Melhore um exemplo de especificação

É aqui que harness engineering deixa de ser uma configuração pontual e passa a ser uma prática contínua de engenharia.

Depois que o harness existe, a próxima pergunta é como expandi-lo para outros times.

Como ajudar os times a terem sucesso

Torne o jeito certo o mais fácil

Não dependa apenas de documentos de boas práticas.

Codifique os padrões diretamente:

  • Templates reutilizáveis
  • Validações de schema embutidas
  • Gates de validação em CI
  • Comportamentos padrão de retry e escalonamento

Se o harness for opcional, ele será ignorado.

Conecte com padrões já conhecidos de engenharia

Reduza a carga cognitiva conectando conceitos de IA com conceitos familiares:

  • Contrato de prompt → contrato de entrada de função
  • Validação de saída → assertions de teste
  • Política de retry → estratégia de tratamento de erro
  • Conjunto de avaliação → mentalidade de fixtures de teste

Evolua as perguntas de revisão

Em vez de perguntar “esse prompt está bom?”, pergunte:

  • O que define que isso está correto?
  • Qual sensor valida isso?
  • Qual é o caminho de falha?
  • Quando devemos escalar?

Isso transforma o trabalho com IA em trabalho de engenharia.

O que parar de fazer

Se você está migrando para desenvolvimento de IA guiado por especificações, esses hábitos custam caro:

  • Tratar um único prompt como se fosse uma “spec”
  • Assumir que testes passando significam comportamento correto
  • Deixar regras arquiteturais apenas no conhecimento informal do time
  • Rodar checagens caras em todo lugar sem estratégia de custo
  • Corrigir falhas recorrentes sem atualizar o harness

Esses padrões mantêm os times em modo reativo.

Um modelo mental melhor

Um resumo útil:

  • Specs definem o estado desejado
  • Harness define o sistema de controle
  • Agentes executam mudanças dentro desse sistema
  • Humanos direcionam e melhoram o sistema ao longo do tempo

É assim que equipes reduzem a necessidade de supervisão sem perder qualidade.

Não confiando mais no modelo.

Mas construindo um harness melhor.

Pensamento final

Prompts são o ponto de entrada. Não são o modelo operacional.

O verdadeiro ganho vem de construir sistemas onde o comportamento da IA é guiado, validado e continuamente melhorado.

Essa é a mudança:

De estagiário para sistema.