Agent Harness Engineering — Addy Osmani
TL;DR
Um agente de coding é o modelo mais tudo que se constrói ao redor dele — o harness. Osmani argumenta que tratar essa scaffolding (prompts, ferramentas, políticas de contexto, hooks, sandboxes, subagentes, loops de feedback, caminhos de recuperação) como um artefato real, endurecido a cada erro do agente, importa mais que a escolha do modelo: um modelo decente com um ótimo harness vence um ótimo modelo com um harness ruim.
Pontos-chave
- Agente = Modelo + Harness. O harness é todo código, configuração e lógica de execução que não é o modelo: system prompts,
CLAUDE.md/AGENTS.md, skills, ferramentas e MCP servers, infra (filesystem, sandbox, browser), orquestração, hooks e observabilidade. Um modelo bruto vira agente quando um harness lhe dá estado, execução de ferramentas, loops de feedback e restrições executáveis. - O “skill issue reframe”: harness engineering rejeita culpar o modelo pelas falhas. Elas costumam ser legíveis e endereçáveis no harness — não conhecia uma convenção? adiciona ao
AGENTS.md; rodou comando destrutivo? cria um hook que bloqueia; se perdeu em tarefa longa? divide em planejador e executor. O gap entre o que os modelos conseguem e o que você os vê fazendo é, em grande parte, um gap de harness. - A catraca (ratchet): todo erro vira regra permanente. Você só adiciona restrições depois de ver falhas reais — cada linha de um bom
AGENTS.mddeveria ser rastreável até algo específico que deu errado. - Working backwards: parta do comportamento desejado para o design do componente. Se você não consegue nomear o comportamento que um componente existe para entregar, ele provavelmente não deveria estar lá. Componentes típicos: filesystem/Git (estado durável), bash (ferramenta geral), sandboxes, memória/busca (aprendizado contínuo), compressão de contexto, skills com divulgação progressiva, Ralph Loops (horizonte longo), hooks (enforcement) e
AGENTS.md(rulebook). - Harnesses não encolhem, se movem: melhorias do modelo não tornam o harness obsoleto — mudam onde a scaffolding é necessária. Cada componente codifica uma suposição sobre o que o modelo não consegue fazer sozinho; quando o modelo melhora nisso, o componente sai. Há um loop de feedback: primitivas úteis descobertas no harness são padronizadas, entram no treino da próxima geração e o modelo seguinte fica melhor em usá-las.
- Harness-as-a-Service: a indústria migra de “construir sobre LLM APIs” (que dão uma completion) para “construir sobre harness APIs” (que dão um runtime) — Claude Agent SDK, Codex SDK, OpenAI Agents SDK. O default passa a ser escolher um framework de harness, configurá-lo e investir esforço em design de prompt e ferramentas de domínio.
- Para onde vai: os agentes de coding top se parecem mais entre si do que seus modelos subjacentes — os padrões de harness estão convergindo. Problemas abertos: orquestrar muitos agentes em paralelo, agentes que analisam os próprios traces para corrigir falhas de harness, e harnesses que montam ferramentas just-in-time — ponto em que o harness deixa de ser config estático e começa a parecer um compilador.
Citações
“A decent model with a great harness beats a great model with a bad harness.”
“Agent = Model + Harness. If you’re not the model, you’re the harness.” — Viv Trivedy
“Every line in a good
AGENTS.mdshould be traceable back to a specific thing that went wrong.”
“Every component in a harness encodes an assumption about what the model can’t do on its own.”
“Success is silent, failures are verbose.” — HumanLayer
Meu comentário
Escreva aqui sua reação, surpresas, discordâncias.