A anatomia de um agente de IA: o que é o arnês e suas peças

A anatomia de um agente de IA: o que é o arnês e suas peças
5tipos de componentes que formam um arnês
6peças deduzidas do que queremos do agente
30 → 5posição do agente da LangChain no Terminal Bench 2.0
52,8 → 66,5pontos com o mesmo modelo, mudando só o arnês
A anatomia de um agente de IA: o que é o arnês e cada peça que o compõe
Também conto isso neste vídeo de cerca de quinze minutos, no meu canal Articulator PT.

Agente = modelo + arnêslink

A ideia cabe numa fórmula: agente = modelo + arnês (em inglês, harness). E vem com uma regra fácil de lembrar: se você não é o modelo, você é o arnês.

A fórmula na tela: agente é igual a modelo mais arnês.
Toda a tese do artigo, em uma linha.

Um arnês é todo o código, a configuração e a lógica de execução que não são o modelo. Um modelo bruto não funciona como agente. Ele começa a funcionar quando o arnês lhe dá estado, execução de ferramentas, ciclos de realimentação e restrições que são cumpridas de qualquer jeito.

Concretamente, um arnês inclui cinco coisas:

  • Prompts de sistema. As instruções de partida.
  • Ferramentas, skills e servidores MCP, com as suas descrições.
  • Infraestrutura incluída: sistema de arquivos, sandbox e navegador.
  • Orquestração: lançar subagentes, dividir o trabalho e escolher o modelo.
  • Hooks ou middleware: passos determinísticos, como compactar, fazer o agente continuar ou rodar o linter.
O cérebro, o modelo, ligado a cinco colunas: prompts de sistema, ferramentas, infraestrutura, orquestração e hooks.
Os cinco componentes em volta do modelo.

A fronteira mais limpalink

Há muitas formas complicadas de separar o modelo do arnês. Vivek defende esta por considerá-la a mais limpa: ela nos obriga a pensar em como projetar sistemas em torno da inteligência do modelo. E a partir daí o artigo deduz, de trás para a frente, por que cada peça existe.

O modelo dentro de um círculo e o arnês fora: projetar sistemas em torno da inteligência.
Tudo o que fica fora do círculo é o arnês.

O artigo resume isso num esquema. No centro está o modelo, que raciocina e decide. De cima entra o contexto: prompts, memória, skills e a conversa. À direita ele age: chama o bash, ferramentas e servidores MCP, e os resultados voltam ao contexto. Embaixo ele persiste: escreve e lê arquivos, git e arquivos de progresso. Na diagonal ele observa e verifica, com capturas do navegador, resultados de testes e registros. E à esquerda fica o controle: compactação, orquestração e loops Ralph.

Esquema com o modelo no centro, rodeado por contexto, ação, persistência, observação e controle, tudo dentro de uma moldura laranja: o arnês.
O esquema do artigo, redesenhado: toda a moldura laranja é o arnês.

Por que precisamos de um arnêslink

Coloque-se no lugar do modelo. Quase todos recebem dados, como texto, imagens, áudio ou vídeo, e devolvem texto. Só isso. De fábrica, eles não conseguem:

  • Manter um estado durável entre interações.
  • Executar código.
  • Acessar conhecimento em tempo real.
  • Preparar ambientes e instalar pacotes para terminar um trabalho.
O cérebro ao lado de quatro cartões riscados: estado durável, executar código, conhecimento em tempo real e preparar ambientes.
Quatro coisas que um modelo não consegue fazer sozinho.

Tudo isso são funções do arnês. E com certeza você já usou um sem saber: para conversar com um modelo, nós o envolvemos num loop while que guarda as mensagens anteriores e adiciona cada mensagem nova sua. Essa experiência de conversar não vem do modelo. Vem desse loop.

O código de um chat, um loop while que vai guardando mensagens, com o selo: a experiência vem do loop.
Um chat por dentro: algumas linhas de arnês.

Trabalhar de trás para a frentelink

Daí sai a ideia central: transformar o comportamento que queremos do agente numa função real do arnês. Isso se chama engenharia de arneses (harness engineering). Serve para injetar conhecimento prévio que guie o agente e, como os modelos estão cada vez mais capazes, também para estendê-los e corrigi-los com precisão de cirurgião.

Por isso o artigo segue sempre o mesmo padrão: primeiro, o comportamento que queremos; depois, o que o arnês adiciona para consegui-lo. Saem seis pares. Não pretende ser uma lista completa: o importante é que cada peça nasce de algo que o modelo não pode oferecer por si mesmo.

Tabela de seis linhas que combina o que queremos do agente com o que o arnês adiciona.
Figura do artigo, adaptada: cada comportamento com a sua peça.

Como isto é sobre anatomia, no vídeo eu monto essas seis peças como um corpo, e mantenho a imagem aqui porque ajuda a lembrar delas. O modelo é o cérebro. A metáfora é minha, não do artigo.

1. Arquivos: o esqueletolink

Queremos que o agente trabalhe com dados reais, guarde o que não cabe no contexto e conserve o seu trabalho entre sessões. Mas o modelo só opera sobre o que está dentro da sua janela. Antes era preciso copiar e colar à mão, algo incômodo que não serve para um agente autônomo.

A solução veio sozinha. O mundo já trabalhava com arquivos, então os modelos foram treinados com bilhões de tokens que ensinam a usá-los. Por isso os arneses já trazem um sistema de arquivos e ferramentas para lidar com ele. Vivek a considera talvez a peça mais fundamental, pelo que ela destrava:

Espaço de trabalho

O agente tem onde ler dados, código e documentação.

Fora do contexto

Pode ir guardando resultados intermediários, sem manter tudo na janela, e conservar um estado que sobrevive à sessão.

Colaboração

Vários agentes e pessoas se coordenam com arquivos compartilhados.

Três cartões: espaço de trabalho, fora do contexto e colaborar.
O que um sistema de arquivos destrava.

Adicione o git e ele passa a ter versões: acompanha o trabalho, desfaz erros e testa experimentos em branches. Vale lembrar desta peça, porque várias das próximas se apoiam nela.

Uma linha de commits com um erro, a volta atrás e uma branch para testar.
Arquivos mais git: versões.

2. Bash e código: as mãoslink

Queremos que o agente resolva problemas sozinho, sem que ninguém precise projetar antes cada ferramenta. O padrão habitual hoje é o loop ReAct: o modelo raciocina, age chamando uma ferramenta, observa o resultado e repete.

O loop ReAct: raciocina, age, observa e repete, em volta do cérebro.
O loop ReAct.

Mas o arnês só executa as ferramentas para as quais tem lógica. Em vez de programar uma para cada ação possível, é melhor dar a ele uma de uso geral: o bash. Assim o modelo resolve os problemas por conta própria, escrevendo e executando código.

É um grande passo para dar a ele um computador e deixar que se vire. Ele não depende mais de um conjunto fixo de ferramentas: cria as suas na hora. Os arneses continuam trazendo outras, mas executar código já é a estratégia padrão.

Um terminal onde o agente escreve e usa a sua própria ferramenta, reduzir.py, ao lado do esqueleto com as mãos iluminadas.
O agente fabrica a ferramenta que falta.

3. Ambientes isolados: a pelelink

Ele já consegue guardar e executar código, mas tudo isso precisa acontecer em algum lugar. Rodar na sua máquina o que um agente gera é arriscado, e ter só um ambiente local não escala quando a carga de agentes cresce.

Um notebook com um aviso de perigo e dezenas de agentes conectados: um só ambiente não escala.
Um só ambiente local: arriscado e sem escala.

A resposta são os sandboxes, ambientes isolados e seguros. O arnês se conecta a um deles para executar código, olhar arquivos e instalar dependências. Se você quiser mais segurança, ele permite só uma lista de comandos e isola a rede. E eles também escalam: são criados sob demanda, distribuídos entre muitas tarefas e destruídos no final.

Bons ambientes trazem boas ferramentas de fábrica, e configurá-las é trabalho do arnês: linguagens e pacotes já instalados, linhas de comando para o git e para os testes, e navegadores para usar a web e conferir o que foi feito. Navegadores, registros, capturas e executores de testes permitem que ele observe o próprio trabalho, e assim nascem os ciclos de autoverificação: escreve o código, roda os testes, lê os registros e corrige os erros.

O ciclo de autoverificação: escreve, testa, lê e corrige, ao lado de um terminal com os testes passando.
Um ciclo de autoverificação.

De fábrica, o modelo não configura o próprio ambiente. Onde ele roda, que ferramentas tem, o que pode acessar e como verifica o trabalho são decisões de projeto do arnês.

Quatro perguntas com o selo do arnês: onde roda, que ferramentas, o que acessa e como verifica. Ao lado, o corpo com a pele iluminada.
Quatro decisões que o modelo não toma.

4. Memória e buscalink

Queremos que ele lembre o que viu e que acesse o que não existia quando foi treinado. Mas um modelo só sabe o que está nos seus pesos e no seu contexto atual. Como não podemos editar esses pesos, a única via para acrescentar conhecimento é injetá-lo no contexto.

Para a memória, os arquivos voltam a ser a base. Os arneses aceitam padrões como AGENTS.md, que é injetado ao iniciar. Quando o agente o edita, o arnês carrega a versão nova. É uma forma de aprendizado contínuo: o que ele guarda numa sessão chega às seguintes.

Um agente edita o AGENTS.md na sessão 1 e outro carrega a versão nova na sessão 2: aprendizado contínuo.
O que aprende numa sessão chega à seguinte.

Depois vem a data de corte. O modelo não conhece, por exemplo, a última versão de uma biblioteca, a menos que você a forneça. A busca na web e ferramentas MCP como o Context7 trazem o que não existia quando o treinamento acabou, então vale a pena integrá-las ao arnês.

Uma linha do tempo cortada pela data de corte; a busca na web traz ao cérebro as versões novas de uma biblioteca.
A busca salta a data de corte.

5. Apodrecimento do contexto: o sistema imunológicolink

O context rot é isto: os modelos raciocinam pior e completam pior as tarefas à medida que a janela se enche. Esse espaço é um recurso valioso e escasso, então o arnês precisa de estratégias para administrá-lo. Vivek resume com uma frase forte: os arneses de hoje são, em grande medida, mecanismos para entregar uma boa engenharia de contexto.

A janela em 97 %, uma curva que cai e uma abóbora apodrecendo: um recurso valioso e escasso.
Um esquema, sem medições: quanto mais cheia a janela, pior ele raciocina.

O artigo cita três técnicas:

  1. Compactação. O que acontece se a conversa ultrapassa a janela? Uma opção é a API devolver um erro, e isso não é bom. Então o arnês descarrega e resume com inteligência o que existe, e o agente pode continuar trabalhando.
  2. Tirar para fora as saídas das ferramentas. As enormes enchem o contexto de ruído sem acrescentar nada útil. Se uma passa de certo limite de tokens, o arnês conserva o começo e o final e guarda o texto completo num arquivo, caso o modelo precise dele.
  3. Skills. Ter ferramentas ou servidores MCP demais carregados ao iniciar faz com que ele renda menos antes de começar. As skills evitam isso com revelação progressiva: no início só se carrega o cabeçalho delas. O modelo não escolheu isso; é o arnês que o protege.
A janela de contexto depois de compactar, com um resumo no alto e espaço livre embaixo: segue em frente.
Compactação: um resumo no lugar da conversa inteira.
De uma saída enorme ficam o começo e o final; o texto completo vai para um arquivo.
Tirar para fora: o começo e o final ficam; o resto vai para um arquivo.
À esquerda, a janela cheia de ferramentas ao iniciar; à direita, só os cabeçalhos das skills. Ao lado, o corpo.
Revelação progressiva: no início, só o cabeçalho de cada skill.

Se quiser se aprofundar, falo disso nos meus posts sobre compressão de contexto, gestão de contexto e engenharia de contexto.

6. Trabalho de longo prazo: o coraçãolink

Criar software de forma autônoma é o santo graal dos agentes de programação. Mas os modelos de hoje param antes da hora, têm dificuldade em decompor problemas complexos e perdem coerência quando o trabalho se estende por várias janelas. Um bom arnês precisa ser projetado em torno disso tudo.

Três cartões: param antes da hora, têm dificuldade em decompor e perdem coerência.
Os três problemas dos modelos em tarefas longas.

Aqui as peças anteriores começam a se somar: trabalhar a longo prazo exige estado durável, planejamento, observação e verificação.

  • Arquivos e git para acompanhar o trabalho. Numa tarefa longa, um agente produz milhões de tokens. Os arquivos guardam esse progresso, e o git permite que um recém-chegado se atualize logo. Para vários agentes, é também um registro compartilhado.
  • O loop Ralph para que ele continue. Quando o modelo tenta terminar, um hook intercepta essa saída e injeta de novo o prompt original numa janela de contexto limpa. Assim ele é obrigado a seguir até cumprir o objetivo. Não parte do zero porque cada volta começa com o contexto fresco, mas lê nos arquivos o estado que a anterior deixou.
  • Planejar e verificar para não perder o rumo. O modelo decompõe o objetivo em passos, e o arnês o apoia com bons prompts e lembretes sobre como usar um arquivo de plano. Ao concluir cada passo, os hooks podem rodar uma bateria de testes e, se falhar, devolver o erro. Também dá para pedir que ele avalie o próprio código de forma independente.
Um gancho, um robô obrigado a seguir e uma janela limpa com o prompt original, até cumprir o objetivo.
O loop Ralph: de novo o prompt original, numa janela limpa.
Três voltas seguidas que leem o mesmo progress.md, ao lado do corpo com o coração iluminado.
Cada volta começa limpa, mas lê o que a anterior deixou.
Um objetivo e um arquivo de plano com os passos marcados um a um: verificar cada passo.
O plano fica num arquivo, e cada passo é verificado.

A verificação ancora a solução nessas provas e cria um sinal para melhorar.

O corpo inteirolink

Está montado. O esqueleto de arquivos e git. As mãos de bash e código. A pele do sandbox. A memória e a busca. O sistema imunológico contra o apodrecimento. E o coração, que não para de bater até o trabalho terminar. Cada parte nasceu de algo que o cérebro não conseguia fazer sozinho.

O corpo completo, com cada peça indicada: esqueleto, sistema imunológico, mãos, memória, coração e pele.
A anatomia completa de um agente.

Modelo e arnês, treinados juntoslink

Produtos como Claude Code e Codex são pós-treinados com o modelo e o arnês no ciclo. Assim o modelo melhora no que os seus criadores acham que ele deveria fazer bem de forma nativa: operar com arquivos, executar bash, planejar ou dividir o trabalho entre subagentes.

Isso cria um ciclo: uma peça útil é descoberta, acrescentada ao arnês e usada para treinar a geração seguinte. A cada repetição, o modelo fica mais capaz, mas dentro do arnês com que foi treinado.

O ciclo: descobrir uma peça, acrescentá-la ao arnês, treinar o próximo modelo e o modelo melhora, só dentro desse arnês.
O ciclo entre o projeto do arnês e o treinamento.

Essa evolução conjunta tem um efeito colateral: se você muda a lógica de uma ferramenta, ele rende menos. O exemplo é o apply_patch, o utilitário que o Codex usa para editar arquivos. O guia dele recomenda usar essa implementação exata, porque o modelo foi treinado com esse formato. Algo realmente inteligente mudaria de método sem problema; treinar assim provoca sobreajuste.

Um cadeado, uma barra de rendimento baixa e a citação do guia do Codex: recomendamos usar a nossa implementação exata.
O modelo se acostuma a uma ferramenta concreta.

Mesmo assim, o melhor arnês para a sua tarefa não precisa ser aquele com que o modelo foi treinado. O Terminal Bench 2.0 é um bom exemplo: segundo o artigo, quando ele foi escrito, o Opus 4.6 dentro do Claude Code pontuava muito abaixo do mesmo Opus 4.6 em outros arneses. Não consegui comprovar isso: a página do Terminal Bench já mostra outra versão.

Duas barras com o mesmo modelo em cima: baixa a do Claude Code e alta a de outros arneses.
Um esquema, sem números: o mesmo modelo rende diferente conforme o arnês.

A LangChain comprovou isso com o seu próprio agente de programação: passou do 30º lugar ao top 5 só mudando o arnês, de 52,8 a 66,5 pontos, sem tocar no modelo (GPT-5.2-Codex). Ainda há muita margem para melhorar se você o otimizar para a sua tarefa.

Uma classificação com o agente da LangChain em quinto lugar, 66,5 pontos, e o modelo intacto.
Mesmo modelo, outro arnês.

Para onde vailink

À medida que os modelos melhorarem, parte do que hoje vive no arnês vai acabar dentro deles. Vão planejar, verificar o próprio trabalho e manter a coerência melhor de forma nativa, e precisarão de menos contexto injetado. Isso sugere que o arnês vai importar cada vez menos.

Mas Vivek acredita que ele continuará sendo útil, assim como a engenharia de prompts continua sendo hoje. É verdade que os arneses remendam deficiências, mas também constroem sistemas em torno da inteligência. Um ambiente bem configurado, boas ferramentas, estado durável e ciclos de verificação tornam qualquer modelo mais eficiente, seja qual for o nível.

Ambiente, ferramentas, estado e verificação ao lado de três barras: tornam qualquer modelo mais eficiente.
Um esquema, sem números: o arnês ajuda seja qual for o nível do modelo.

Por isso continua sendo uma área de pesquisa muito ativa. Na LangChain, ela é usada para melhorar a biblioteca deepagents, e são citados três problemas em aberto:

  • Orquestrar centenas de agentes em paralelo sobre o mesmo código.
  • Fazer os agentes analisarem os próprios rastros para encontrar e corrigir as falhas do arnês.
  • Arneses montados na hora, com as ferramentas e o contexto certos para cada tarefa, em vez de virem pré-configurados.
Três cartões com os problemas em aberto: centenas de agentes, analisar os rastros e arneses montados na hora.
Os três problemas em aberto que a LangChain cita.

Em resumolink

Cada peça do arnês existe por causa de algo que o modelo não consegue fazer sozinho: guardar, agir, executar com segurança, lembrar, manter o contexto limpo e continuar trabalhando. E como o modelo é treinado dentro de um arnês, mudar esse arnês pode render mais do que trocar de modelo.

Em uma frase

O modelo contém a inteligência, e o arnês é o sistema que a torna útil.

Qual peça do arnês deu mais resultado para você?

Fonteslink

Continuar lendo

Últimos posts -->

Você viu esses projetos?

Gymnasia

Gymnasia Gymnasia
Expo
React Native
TypeScript
OpenAI
Anthropic

App de fitness com dois agentes que são executados integralmente no dispositivo, sem backend, de forma que os dados do usuário nunca saem do celular. Um coach conversacional BYOK com tools locais e system prompt remoto com fallback offline, e um estimador de refeições que tira os macronutrientes de uma foto do prato, com leitura de códigos de barras contra o OpenFoodFacts.

LangGraph Deep Researcher

LangGraph Deep Researcher LangGraph Deep Researcher
Python
LangGraph
FastAPI
React
TypeScript
Docker

Sistema multiagente de pesquisa construído com LangGraph. Um supervisor decompõe sua pergunta em tópicos e lança subagentes de busca em paralelo; cada um comprime seus achados antes de repassá-los a um agente redator que escreve o relatório final em markdown com suas fontes. Streaming ao vivo por WebSockets, modelo configurável por papel e chaves de API próprias que nunca são armazenadas no servidor.

Tau

Tau Tau
Python
LangChain

Sistema multiagente de tutoria para estudantes do ensino médio, com um agente por disciplina e material de curso elaborado e validado por uma equipe de professores. Chegou a ser usado com alunos reais em um colégio privado na Espanha e em uma escola de ensino médio na Colômbia.

Ver todos os projetos -->
>_ Disponível para projetos

Tem um projeto com IA?

Vamos conversar.

maximofn@gmail.com

Especialista em Machine Learning e Inteligência Artificial. Desenvolvo soluções com IA generativa, agentes inteligentes e modelos personalizados.

Quer assistir alguma palestra?

Últimas palestras -->

Quer melhorar com essas dicas?

Últimos tips -->

Use isso localmente

Os espaços do Hugging Face nos permitem executar modelos com demos muito simples, mas e se a demo quebrar? Ou se o usuário a deletar? Por isso, criei contêineres docker com alguns espaços interessantes, para poder usá-los localmente, aconteça o que acontecer. Na verdade, se você clicar em qualquer botão de visualização de projeto, ele pode levá-lo a um espaço que não funciona.

Flow edit

Flow edit Flow edit

Edite imagens com este modelo de Flow. Baseado em SD3 ou FLUX, você pode editar qualquer imagem e gerar novas

FLUX.1-RealismLora

FLUX.1-RealismLora FLUX.1-RealismLora
Ver todos os contêineres -->
>_ Disponível para projetos

Tem um projeto com IA?

Vamos conversar.

maximofn@gmail.com

Especialista em Machine Learning e Inteligência Artificial. Desenvolvo soluções com IA generativa, agentes inteligentes e modelos personalizados.

Você quer treinar seu modelo com esses datasets?

short-jokes-dataset

HuggingFace

Dataset com piadas em inglês

Uso: Fine-tuning de modelos de geração de texto humorístico

231K linhas 2 colunas 45 MB
Ver no HuggingFace →

opus100

HuggingFace

Dataset com traduções de inglês para espanhol

Uso: Treinamento de modelos de tradução inglês-espanhol

1M linhas 2 colunas 210 MB
Ver no HuggingFace →

netflix_titles

HuggingFace

Dataset com filmes e séries da Netflix

Uso: Análise de catálogo Netflix e sistemas de recomendação

8.8K linhas 12 colunas 3.5 MB
Ver no HuggingFace →
Ver mais datasets -->