Claude Code: Filosofia e Arquitetura
- ⬜🗺️ O Panorama dos Coding Agents(Ferramentas de IA para Código)
Recomendamos completar os pré-requisitos antes de seguir, mas nada te impede de continuar.
Em março-abril de 2026, partes significativas do código-fonte do Claude Code vazaram publicamente. Isso transformou o que era especulação em arquitetura documentada. Este módulo usa essas fontes (além da documentação oficial da Anthropic) para descrever o que está de fato por trás do CLI, sem marketing.
Separação Session / Harness / Sandbox
O código organiza a execução em três camadas distintas — essa separação é o que permite o mesmo binário funcionar em terminal local, IDE, CI/CD e como SDK:
Session
Mantém o estado da conversa, o histórico de mensagens e ferramentas chamadas, e o orçamento de tokens. É serializável — por isso você pode pausar e retomar uma sessão.
Harness (QueryEngine)
~46.000 linhas. Decide a próxima ação, aplica políticas de permissão, dispara o modelo, interpreta a saída, chama ferramentas, compacta contexto. É aqui que o loop agêntico vive.
Sandbox
A camada que faz contato com o mundo real: lê/escreve arquivos, roda bash, faz fetch HTTP. Respeita as restrições de permissão que o Harness valida antes.
O modelo NÃO roda o loop. O modelo é um dos atores no loop. Quem decide "agora leio o arquivo X, agora compacto contexto, agora peço confirmação ao usuário" é código determinístico — não o LLM.
O catálogo real de ferramentas
A documentação oficial agrupa as ferramentas em cinco categorias. No código vazado os schemas completos ocupam cerca de 29.000 linhas:
File operations
Read, Write, Edit, NotebookEdit
Read exige leitura antes de escrever — prevenção de sobrescrita acidental.
Search
Glob, Grep (ripgrep-powered)
Grep é multiline-capable. Glob ordena por mtime.
Execution
Bash, BashOutput, KillShell
Suporta processos em background com monitoramento assíncrono.
Web
WebFetch, WebSearch
WebFetch aceita prompt de extração — resume HTML direto para Markdown focado.
Code intelligence
Task (subagents), SlashCommand, TodoWrite, MCP tools
MCP expõe ferramentas externas (Sentry, Linear, Drive) via protocolo padronizado.
Auto-compact: por que sessões de horas não estouram contexto
O detalhe técnico mais importante do Claude Code — e o que explica por que ele vence em tarefas longas — é o auto-compact. Quando a conversa chega a ≈98% da janela do modelo, o harness dispara:
// Pseudo-código do auto-compact
if (contextTokens >= windowSize * 0.98) {
const summary = await model.summarize({
history,
preserve: [
"objetivo original do usuário",
"arquivos tocados e seus estados finais",
"comandos executados com seus resultados",
"decisões de design feitas até agora",
"erros encontrados e como foram resolvidos",
],
discard: [
"tool calls exploratórias já resolvidas",
"conteúdo de arquivos lidos mas não modificados",
"tentativas falhadas depois corrigidas",
],
});
session.replaceHistory(summary);
// continua a tarefa sem o usuário perceber
}Isso é fundamentalmente diferente de "truncar as mensagens mais antigas" (o que perderia contexto crítico) ou "passar tudo toda vez" (que estoura a janela). É o que permite uma sessão de 6 horas em uma codebase com milhares de arquivos.
Prompt caching: onde os 60-90% de latência somem
O system prompt do Claude Code é pesado — dezenas de milhares de tokens entre instruções, definições de ferramentas e CLAUDE.md carregados. Mandar tudo de novo a cada turno seria insustentável.
A Anthropic documentou publicamente que, com o cache_control aplicado corretamente, os times internos de managed-agents reduziram p50 de time-to-first-token em ~60% e p95 em mais de 90%. O Claude Code usa os mesmos breakpoints de cache:
Tier 1 vs Tier 2: o modelo de permissões
Cada ferramenta é classificada por blast radius. O harness valida a tier antes de executar — é o que permite você rodar Claude Code em CI sem se preocupar que ele vai dar rm -rf por acidente.
Tier 1 — Reversível (auto-execute)
Read, Grep, Glob, WebFetch, WebSearch, Task (read-only)
Rodam em loop sem confirmação. Não alteram estado do sistema.
Tier 2 — Com efeito (confirmação no Default)
Write, Edit, Bash (destrutivo), MCP que alteram estado externo
No modo Default pede confirmação. No Accept Edits aceita writes mas confirma bash. No Auto libera tudo. No Plan Mode bloqueia tudo — só explora.
# Os 4 modos de permissão Default → Pergunta antes de qualquer Tier 2 Accept Edits → Aceita Write/Edit, pergunta Bash Plan Mode → Só Tier 1. Produz plano sem executar Auto (yolo) → Autoriza tudo. Use em CI ou sandbox isolado
MCP: ferramentas sem recompilar o agente
O Claude Code implementa o Model Context Protocol, padrão aberto da Anthropic para expor ferramentas externas ao agente sem precisar alterar o binário. Você configura um servidor MCP em ~/.claude/mcp.json e as ferramentas aparecem no próximo turno.
Limite técnico interessante: o harness expõe 25.000 tokens de saída MCP direto para o modelo. Acima disso, grava em disco (até 500.000 tokens) e passa só um ponteiro — o modelo pode usar Read para puxar o que precisar. Isso evita que um servidor MCP mal-comportado entupa o contexto.
Fluxo completo de um turno
Quando você escreve claude "adiciona validação de email no formulário", o QueryEngine faz:
1. SESSION: carrega sessão (ou cria nova)
- Lê CLAUDE.md hierárquico (repo → subpasta → cwd)
- Monta system prompt com cache breakpoints
2. HARNESS: entra no loop
a. Envia request ao modelo (com prompt caching)
b. Modelo responde com text + tool_use blocks
c. Para cada tool_use:
- Valida tier (Tier 1 auto, Tier 2 respeita modo)
- Confirma com usuário se necessário
d. SANDBOX executa: lê arquivo, roda bash, faz grep
e. Resultado volta como tool_result
f. Se tokens > 98% janela → auto-compact
g. Volta ao passo (a) até o modelo emitir stop_reason
3. SESSION: persiste histórico serializado em ~/.claude/CLAUDE.md hierárquico: o canal pra mudar comportamento
O CLAUDE.md não é um arquivo só — o harness busca e empilha do repo até o cwd. Isso permite convenções por subprojeto:
~/projetos/empresa/
├── CLAUDE.md # convenções gerais da empresa
├── backend/
│ └── CLAUDE.md # Go, testes em table-driven
└── frontend/
└── CLAUDE.md # TS strict, Tailwind, nunca usar any
└── CLAUDE.md # (cwd) regras do sub-app específico
// Ao rodar em frontend/app-x/, o harness injeta os 3 CLAUDE.md
// no system prompt, mais específico tem precedência.Modelos disponíveis e economia de roteamento
O Claude Code é desacoplado do modelo. O usuário pode escolher:
Flag --model ou /model dentro da sessão. O dispatch de subagents (Task) pode usar modelo diferente do principal — um padrão comum é main=Sonnet, subagents=Haiku para grunt work paralelo.
Quiz rápido
3 perguntas · Acerte tudo e ganhe o badge 🎯 Gabarito