🧠FFVAcademy
🏗️

Harness: a Infraestrutura do Agente

10 min de leitura·+80 XP
Pré-requisitos (0/1)0%

Recomendamos completar os pré-requisitos antes de seguir, mas nada te impede de continuar.

Voce ja sabe que um agente e um LLM em loop com tools. Mas o que faz um agente funcionar bem? A resposta e o harness — a infraestrutura ao redor do modelo que orquestra o loop, gerencia contexto, controla permissoes e delega para subagentes. Neste artigo, voce vai entender os 6 componentes que transformam um LLM em um agente profissional.

Anatomia de um agente

🗺️ Os 6 componentes do harness
1. LLM (cérebro)
Gera texto e decisões
Função pura: texto in → texto out
Não tem estado próprio
Tudo vem do contexto
2. TOOLS (mãos)
Executam ações no mundo real
read/write/edit arquivos
run_command (shell)
search, web, subagent
3. LOOP (ciclo)
Think → Act → Observe
Repete até completar
Limite de iterações
Detecção de loops infinitos
4. CONTEXTO (memória)
O que vai no prompt a cada passo
System prompt + task + arquivos
Histórico compactado
Lazy loading sob demanda
5. SUBAGENTES (delegar)
Agentes filhos especializados
Contexto limpo e focado
Isolados do contexto principal
Resultado resumido ao parent
6. PERMISSÕES (segurança)
Auto-approve: leitura
Ask once: edição
Always ask: delete/push
Block: rm -rf / force push

1. LLM: o cerebro

O LLM e uma funcao pura: recebe texto (contexto), retorna texto (decisao/conteudo). Ele nao tem estado — tudo que sabe vem do contexto que o harness envia.

Escolha de modeloQuando usarTrade-off
Opus / GPT-4Tarefas complexas, raciocinio longo, planejamentoMais caro ($15-75/M tokens), mais lento
Sonnet / GPT-4oUso geral, coding, analiseEquilibrio custo/qualidade
Haiku / GPT-4o-miniTriagem, classificacao, tasks simplesRapido e barato, menos capaz em tarefas complexas
💡
Agentes profissionais usam multiplos modelos: Haiku para triagem rapida (qual tool usar?), Sonnet para execucao, Opus para planejamento e decisoes criticas. Isso otimiza custo sem sacrificar qualidade.

2. Tools: as maos

Tools sao as interfaces do agente com o mundo. Em um coding agent tipico:

ToolO que fazRisco
read_fileLe conteudo de um arquivoBaixo — so leitura
write_fileCria ou sobrescreve arquivoMedio — pode destruir trabalho
edit_fileEdita trecho especifico (search/replace)Medio — edicao precisa
run_commandExecuta comando no shellAlto — pode rodar qualquer coisa
search_codebaseBusca por pattern no codigoBaixo — so leitura
web_searchPesquisa na internetBaixo — so leitura
create_subagentDelega tarefa para agente filhoMedio — consume tokens

3. Loop: o ciclo de decisao

🗺️ Agent loop (ReAct pattern)
🎯Receber tarefaentrada
Usuario ou sistema define o objetivo: "Refatore esse modulo para usar async/await".
THINK
🧠RaciocinarLLM
Modelo analisa o estado atual (arquivos lidos, erros anteriores, plano) e decide o proximo passo.
ACT
🔧Executar tool(s)harness
Harness executa as tool calls do modelo. Pode ser read, edit, run_command, etc.
OBSERVE
👀Observar resultadoharness → LLM
Resultado da tool e adicionado ao contexto. Modelo ve: "Comando tsc retornou 3 erros de tipo...".
DECIDE
🔄Continuar ou terminar?LLM
Se a tarefa nao esta completa, volta para THINK. Se completa, gera resposta final. Se preso, pede ajuda ao usuario.

O numero de iteracoes varia: uma refatoracao simples pode levar 5-10 passos. Um bug complexo pode levar 30-50. Agentes profissionais tem limites de iteracao para evitar loops infinitos e custo descontrolado.

4. Context Engineering: o que vai no prompt

O contexto e tudo que o modelo ve a cada passo. Gerenciar esse contexto e talvez a parte mais importante e menos obvia do harness.

🗺️ Composição do contexto a cada passo (200k tokens)
SYSTEM PROMPTcacheado
~2k tokens — Instruções, persona, regras de segurança
TASK
~500 tokens — O que o usuário pediu
RELEVANT FILES
~5–20k tokens — Arquivos que o harness julga relevantes (carregados sob demanda)
ACTION HISTORY
~2–10k tokens — Últimas N ações + resultados resumidos (ações antigas compactadas)
CURRENT STATE
~1k tokens — Erros pendentes, plano atual, progresso

5. Subagentes: dividir para conquistar

Tarefas complexas se beneficiam de delegacao. O agente principal cria subagentes especializados, cada um com:

AspectoAgente principalSubagente
ContextoCompleto (task + historico)Limpo (so a subtarefa)
ToolsTodos disponiveisPode ser restrito (so leitura, por ex)
CustoAlto (contexto longo)Menor (contexto focado)
RiscoPode tomar decisoes globaisIsolado — nao afeta estado principal
💡
Exemplo real (Claude Code):o agente principal pede “pesquise como a funcao X e usada no codebase”. Um subagente faz grep, le arquivos, e retorna um resumo. O principal nao polui seu contexto com dezenas de resultados de busca — recebe so o resumo.

6. Permissoes: seguranca em agentes

Um agente com acesso a shell pode rodar qualquer comando. Sem controle, isso e perigoso. Harnesses profissionais categorizam acoes por risco:

NivelAcoesComportamento
Auto-approveLer arquivo, buscar codigo, listar diretorioExecuta sem perguntar
Ask onceEditar arquivo, criar arquivo, instalar pacotePede permissao na primeira vez, lembra depois
Always askDeletar arquivo, push git, executar shell genericoPede permissao toda vez
BlockPush force, rm -rf, credenciais, emailsNunca permite — alerta o usuario

📋 Projetando permissoes para um coding agent

Default restritivo + escalation gradual

Comece bloqueando tudo exceto leitura. O usuario libera acoes conforme confianca cresce. O custo de parar para pedir permissao e baixo; o custo de uma acao destrutiva nao autorizada e alto.

Alt: Auto-approve tudoApenas em ambientes isolados (containers, VMs) onde destruicao nao importa.

Padrões de orquestração: qual arquitetura usar

A estrutura do agente determina como ele decompõe tarefas complexas. Não existe padrão universal — cada um tem trade-offs em qualidade, velocidade e custo:

PadrãoComo funcionaMelhor paraLimitação
ReAct (Reasoning + Acting)Pense → Aja → Observe → Repita. Loop simples sem planejamento explícito.Tarefas abertas onde o próximo passo depende do resultado anteriorPode ficar preso em loops se uma ferramenta falha repetidamente
Plan-and-ExecuteFase 1: planejar todos os passos. Fase 2: executar o plano.Tarefas bem definidas onde o espaço de busca é conhecido antecipadamentePlano pode ficar obsoleto se o ambiente muda durante execução
Orchestrator-WorkerAgente orquestrador delega subtarefas para subagentes especializados.Tarefas compostas com domínios distintos (código + busca + análise)Overhead de comunicação entre agentes; custo alto
Parallel ExecutionMúltiplos subagentes trabalham simultaneamente em partes independentes.Tarefas paralelizáveis: analisar 50 arquivos, pesquisar 10 fontesPrecisa de dependência clara entre subtarefas para evitar conflitos
ReflexionAgente auto-critica sua própria saída e itera até atingir qualidade alvo.Tarefas com critério de qualidade claro (código que passa nos testes)Caro (múltiplas iterações); risco de loop infinito sem critério de parada
🗺️ Orchestrator-Worker — o padrão mais escalável
🎯Orchestrator (LLM grande)Recebe tarefa, decompõe em subtarefas, delega para workers especializados
Workers paralelos (LLMs menores)Worker A: busca docs · Worker B: analisa código · Worker C: verifica tests
🔗Agregação de resultadosOrchestrator integra outputs dos workers, resolve conflitos, sintetiza resposta final
Resultado consolidadoQualidade de modelo grande, custo de modelo pequeno (workers Haiku/mini)
💡
Claude Code usa uma variação de Orchestrator-Worker: o modelo principal é o orquestrador, subagentes são spawned para tarefas específicas (ex: rodar testes em paralelo, buscar em múltiplas fontes). Cada subagente tem contexto próprio — quando termina, o contexto é descartado. Isso é o que permite tarefas muito longas sem estourar a context window.

Custo de um agente em producao

🗺️ Custo real — "Adicionar autenticação JWT ao projeto" (Claude Sonnet 4)
SEM OTIMIZAÇÃO
25 passos × 8k input + 1k output = 200k/25k tokens → $0.60 input + $0.38 output = ~$1.00/tarefa
COM PROMPT CACHE
-40% input: 200k × 60% × $3/M = $0.36 + $0.38 output = ~$0.74/tarefa
COM SUBAGENTES HAIKU
Tasks de busca/leitura via Haiku ($0.25/M input): ~$0.45/tarefa total
ESCALA MENSAL
100 tarefas/dia × 22 dias × $0.45 = ~$990/mês · vs 1 dev sênior: $X.000+/mês

A conta fecha quando o agente economiza 2+ horas/dia de trabalho de dev. Para tarefas bem definidas (testes, docs, bug fixes), o ROI é imediato.

Perguntas e respostas

Qual a diferenca entre ReAct e outros patterns de agente?

ReAct (Reasoning + Acting) e o padrao mais simples: pense, aja, observe, repita. Outros patterns: Reflexion (agente critica suas proprias acoes e melhora), Tree of Thoughts (explora multiplos caminhos antes de agir), Plan-and-Execute (planeja todos os passos antes, depois executa). Na pratica, ReAct com subagentes cobre 90% dos casos.

Como evitar loops infinitos?

Tres mecanismos: (1) max iterations — limite duro de passos (ex: 50); (2) budget limit — pare quando gastar $X; (3) stuck detection — se o agente repete a mesma acao 3 vezes, pare e peca ajuda ao usuario. Claude Code usa os tres.

O contexto nao estoura em tarefas longas?

Estouraria sem gerenciamento. Estrategias reais: (1) context compaction — resumir acoes antigas quando o contexto passa de 80%; (2) subagentes — cada um tem contexto proprio, descartado apos retornar; (3) lazy loading — so incluir um arquivo quando o modelo pede, nao antecipadamente.
O que voce aprendeu: um agente = LLM + harness. O harness tem 6 componentes: LLM (cerebro), tools (maos), loop (ciclo de decisao), contexto (memoria de trabalho), subagentes (delegacao) e permissoes (seguranca). Context engineering e a parte mais critica — o que o modelo ve determina o que ele faz. Proximo: como saber se um modelo e realmente bom — avaliacao de modelos de IA.
🧩

Quiz rápido

4 perguntas · Acerte tudo e ganhe o badge 🎯 Gabarito

Continue lendo