🔄 O Motor de Consulta — Uma instância por conversa
No coração do Claude Code está o Query Engine — o Motor de Consulta. Ele gerencia o ciclo de vida completo de cada conversa, desde o momento que você digita até a resposta final aparecer no terminal.
Query Engine
Uma instância exclusiva por conversa — isolamento total
Baseado em geradores assíncronos (async generators)
Gerencia o estado da conversa: mensagens, contexto, ferramentas ativas
Responsável por chamar a API do Claude e processar as respostas
Controla o ciclo de vida: início, execução, compressão, finalização
💡 Por Que Uma Instância por Conversa?
Isolamento garante que conversas paralelas não interferem entre si. Cada instância mantém seu próprio estado, histórico e contexto — como processos separados em um sistema operacional.
📝 As 6 Etapas — Do teclado até a resposta
Quando você digita algo no Claude Code, sua mensagem passa por exatamente seis etapas antes de virar uma resposta. Este fluxo se repete em loop até o Claude decidir que terminou.
Você Digita
Sua mensagem entra no sistema como input do usuário
Prompt do Sistema
O sistema injeta suas skills, plugins, contexto do projeto e memória
API do Claude
A solicitação é transmitida em streaming para os servidores da Anthropic
Chamadas de Ferramentas
Se o Claude precisar ler um arquivo ou executar um comando, ele chama uma ferramenta
Resultados de Volta
Os resultados da ferramenta voltam para o Claude para outra passagem
Resposta
A resposta final é transmitida em streaming para o seu terminal
💡 O Loop no Coração
As etapas 3 a 5 se repetem em loop. O Claude pode ler um arquivo, depois executar um comando, depois ler outro arquivo, e só então responder. Esse loop é o coração do sistema — é o que faz dele um agente, não um chatbot.
♾️ O Loop Infinito — while(true) no coração do sistema
O segredo do Claude Code como agente está em três palavras: while(true). O loop de consulta roda indefinidamente, permitindo que o Claude execute quantas ações forem necessárias antes de responder.
O Loop while(true)
O loop roda dentro de um while(true) infinito
Em cada iteração: envia para API → recebe resposta → verifica se há tool calls
Se há tool calls: executa ferramentas → injeta resultados → volta para a API
Se não há tool calls: resposta final é entregue ao usuário
O modelo pode fazer dezenas de iterações em uma única mensagem
Fazer
- ✓ Confiar no loop — o Claude sabe quando parar
- ✓ Dar instruções claras para que o loop seja eficiente
-
✓
Usar
/compactse o loop ficar muito longo
Evitar
- ✗ Interromper prematuramente com Ctrl+C (a menos que necessário)
- ✗ Dar instruções vagas que causam loops desnecessários
- ✗ Ignorar quando o contexto está ficando grande
🌊 Streaming Tool Executor — Paralelismo e acesso exclusivo
No centro do loop está o Streaming Tool Executor — o componente que decide como executar as ferramentas. Ele é inteligente o suficiente para rodar ferramentas seguras em paralelo e dar acesso exclusivo a ferramentas arriscadas.
Dois Modos de Execução
Paralelo (concurrency-safe): Ferramentas read-only como Read, Glob, Grep rodam simultaneamente. Ler 5 arquivos ao mesmo tempo é seguro e rápido.
Exclusivo (não concurrency-safe): Ferramentas que modificam estado como Edit, Write, Bash rodam uma de cada vez. Editar dois arquivos em paralelo poderia causar conflitos.
O método isConcurrencySafe() de cada ferramenta define o comportamento
Ferramentas isReadOnly() são aprovadas automaticamente sem pedir permissão
📊 Impacto na Performance
Leitura paralela de arquivos pode ser 5-10x mais rápida que sequencial
O cache de prompt é compartilhado entre execuções paralelas
Ferramentas seguras para concorrência não precisam de aprovação do usuário
O executor gerencia filas e prioridades automaticamente
🔀 Fallback de Modelo — Troca automática sem você perceber
O que acontece quando o modelo principal falha? O Claude Code tem um sistema de fallback que troca automaticamente para um modelo alternativo — e você nem percebe.
Resiliência Transparente
Se a chamada de API para o modelo principal falhar, o sistema tenta um modelo de fallback
A troca é completamente transparente — o usuário não vê erro
O contexto da conversa é preservado durante a troca
Feature flags controlam quais modelos estão disponíveis como fallback
O código menciona modelos como "capybara", "capybara-fast" e "capybara-fast[1m]"
⚠️ O Modelo Capybara
O vazamento revelou referências ao codinome "Capybara" — possivelmente a próxima geração de modelos Claude (Claude 5?). Três variantes foram encontradas: capybara (padrão), capybara-fast (rápido) e capybara-fast[1m] (janela de 1M tokens). A Anthropic não confirmou.
📡 Geradores Assíncronos — Streaming palavra por palavra
Tudo no Claude Code é construído com async generators (geradores assíncronos). Isso significa que as respostas não chegam de uma vez — elas fluem em tempo real, ferramenta por ferramenta, palavra por palavra.
Fluxo Contínuo, Não Batch
Respostas são transmitidas em tempo real via streaming
Cada token (pedaço de texto) é renderizado no terminal imediatamente
Resultados de ferramentas aparecem conforme são concluídos
Não existe "esperar tudo terminar" — é um fluxo contínuo
A experiência é como assistir o Claude "pensar em tempo real"
💡 Na Prática
O streaming é o que torna o Claude Code responsivo mesmo em tarefas longas. Você vê progresso imediato — texto aparecendo, ferramentas sendo executadas, resultados surgindo. É fundamentalmente diferente de fazer uma requisição e esperar a resposta completa.
📊 Async Generators em TypeScript
async function* produz valores sob demanda
yield emite cada token/resultado conforme fica disponível
for await...of consome o stream no lado do cliente
O padrão é usado em todo o sistema: API, ferramentas, agentes, ponte
📋 Resumo do Módulo
Próximo Módulo:
1.4 - 🧰 A Caixa de Ferramentas: 40+ Ferramentas