O que exatamente está fazendo o Agente de IA? Análise completa do vazamento de 500.000 linhas de código do Claude Code

51,2 mil linhas de código, 1.906 ficheiros, 59,8 MB de source map. Na madrugada de 31 de março, Chaofan Shou, da Solayer Labs, descobriu que o produto emblemático da Anthropic, o Claude Code, expunha o código-fonte completo num repositório npm público. Em poucas horas, o código foi espelhado no GitHub, com o número de forks a ultrapassar 41.000.

Este não é o primeiro erro da Anthropic. Quando o Claude Code foi publicado pela primeira vez em fevereiro de 2025, ocorreu também uma fuga semelhante do mesmo source map. Desta vez, o número de versão era v2.1.88; a causa da fuga era a mesma: a ferramenta de construção Bun gera source map por predefinição, e o ficheiro foi omitido no .npmignore.

A maioria das notícias faz um levantamento de ovos de Páscoa nas fugas, como um sistema de animais de estimação virtuais e um “modo de infiltrado” que permite ao Claude enviar código anonimamente para projetos open source. Mas a questão realmente valiosa para desmontar é esta: por que razão é que o mesmo modelo do Claude se comporta de forma tão diferente na versão para a Web e no Claude Code? Afinal, o que é que estas 51,2 mil linhas de código estão a fazer?

O modelo é só a ponta do iceberg

A resposta está na estrutura do código. De acordo com uma análise inversa do código-fonte vazado feita pela comunidade do GitHub, nas 512.000 linhas de TypeScript, o código da interface diretamente responsável por chamar o modelo de IA tem apenas cerca de 8.000 linhas, ou 1,6% do total.

O que é que os restantes 98,4% estão a fazer? Os dois maiores módulos são o motor de pesquisa (46.000 linhas) e o sistema de ferramentas (29.000 linhas). O motor de pesquisa trata das chamadas à API do LLM, da saída em streaming, da orquestração de cache e do gerenciamento de conversas de múltiplas rondas. O sistema de ferramentas define cerca de 40 ferramentas incorporadas e 50 comandos de barra (slash commands), formando uma arquitetura semelhante a plugins; cada ferramenta tem controlos de permissões independentes.

Além disso, existem 25.000 linhas de código de renderização da interface do terminal (um dos ficheiros, chamado print.ts, tem 5.594 linhas, e uma única função atravessa 3.167 linhas), 20.000 linhas de segurança e controlo de permissões (incluindo 23 verificações de segurança em Bash numeradas e 18 comandos embutidos do Zsh que ficam bloqueados) e 18.000 linhas do sistema de orquestração de múltiplos agentes.

O investigador de investigação em machine learning Sebastian Raschka, após analisar o código vazado, apontou que a razão pela qual o Claude Code é mais forte do que a versão Web do mesmo modelo não está no próprio modelo, mas sim no “andaime” de software construído à volta do modelo, incluindo carregamento do contexto do repositório, agendamento de ferramentas dedicadas, estratégias de cache e colaboração entre subagentes. Ele até considera que, se esta mesma arquitetura de engenharia for aplicada a outros modelos como o DeepSeek ou Kimi, também é possível obter melhorias de desempenho de programação muito semelhantes.

Uma comparação intuitiva ajuda a compreender esta diferença. Quando tu escreves uma pergunta no ChatGPT ou na versão Web do Claude, o modelo processa e devolve a resposta; no fim da conversa, não fica nada. Mas a forma como o Claude Code funciona é totalmente diferente: ao arrancar, primeiro lê os ficheiros do teu projeto, entende a estrutura da tua base de código e memoriza preferências que tu indicaste antes, como “não mockar a base de dados nos testes”. Ele consegue executar comandos diretamente no teu terminal, editar ficheiros e executar testes; quando enfrenta tarefas complexas, desdobra-as em várias subtarefas e atribui-as a diferentes subagentes para processamento em paralelo. Em outras palavras, a IA na versão Web é uma janela de perguntas e respostas; o Claude Code é um colaborador que vive no teu computador.

Alguém comparou esta arquitetura a um sistema operativo: 42 ferramentas incorporadas equivalem a chamadas de sistema, o sistema de permissões equivale à gestão de utilizadores, o protocolo MCP equivale a controladores de dispositivos e a orquestração de subagentes equivale ao agendamento de processos. Cada ferramenta é marcada de fábrica, por predefinição, como “não segura, gravável”, a menos que o programador declare explicitamente que é segura. A ferramenta de edição de ficheiros força a verificação de se tu já leste este ficheiro; se não o tiveres lido, não te deixa alterar. Isto não é um chatbot com algumas ferramentas acopladas; é um ambiente de execução com um núcleo em LLM, mas com mecanismos de segurança completos.

Isto significa uma coisa: as barreiras competitivas de um produto de IA talvez não estejam na camada do modelo, mas sim na camada de engenharia.

A cada falha de “cache breakdown”, o custo multiplica por 10

No código vazado há um ficheiro chamado promptCacheBreakDetection.ts, que acompanha 14 vetores possíveis que podem fazer falhar o prompt cache. Por que razão os engenheiros da Anthropic despenderiam tanto esforço para evitar “cache breakdown”?

Basta olhar para a tabela oficial de preços da Anthropic. Por exemplo, no Claude Opus 4.6, o preço padrão para input é 5 dólares por cada milhão de tokens; mas se houver “hit” no cache, o custo de leitura cai para apenas 0,5 dólares — 90% mais barato. Inversamente, sempre que ocorre um cache breakdown, o custo de inferência precisa de multiplicar por 10.

Isto explica as muitas decisões de arquitetura que, à primeira vista, parecem “demasiado desenhadas” no código vazado. Quando o Claude Code arranca, carrega a branch git atual, os registos dos commits mais recentes e o ficheiro CLAUDE.md como contexto; estes conteúdos estáticos são guardados em cache globalmente, com marcações de fronteira a separar o conteúdo dinâmico, garantindo que em cada conversa não se volta a processar o contexto já existente. O código também tem um mecanismo chamado sticky latches, concebido para evitar que a mudança de modo destrua caches já estabelecidas. Os subagentes foram desenhados para reutilizar a cache do processo pai, em vez de reconstruírem a sua própria janela de contexto.

Há um detalhe que vale a pena explorar. Quem já usou ferramentas de programação com IA sabe que quanto mais longa é a conversa, mais lenta fica a resposta da IA, porque em cada ronda de conversa todo o histórico anterior precisa de ser reenviado ao modelo. A prática comum é apagar mensagens antigas para libertar espaço, mas o problema é que apagar qualquer mensagem quebra a continuidade da cache, levando a que todo o histórico tenha de ser reprocessado, fazendo disparar em simultâneo a latência e o custo.

No código vazado existe um mecanismo chamado cache_edits: em vez de apagar as mensagens “a sério”, ele coloca uma marca de “skip” na camada de API. O modelo já não consegue ver essas mensagens, mas a continuidade da cache não é destruída. Isto significa que numa conversa longa contínua de várias horas, depois de limpar centenas de mensagens antigas, a velocidade da próxima resposta fica quase igual à da primeira. Para o utilizador comum, é esta a resposta de base para “por que razão o Claude Code consegue suportar conversas infinitamente longas sem ficar mais lento”.

De acordo com dados internos de monitorização provenientes do código comentado em autoCompact.ts, marcado com a data de 10 de março de 2026, antes de serem introduzidos limites de falha para compactação automática, o Claude Code desperdiçava cerca de 250.000 chamadas de API por dia. Houve 1.279 sessões de utilizadores em que ocorreram falhas consecutivas de compactação 50 vezes ou mais; na situação mais grave, uma sessão falhou consecutivamente 3.272 vezes. A correção foi apenas adicionar uma única linha de limite: MAX_CONSECUTIVE_AUTOCOMPACT_FAILURES = 3.

Por isso, para produtos de IA, o custo de inferência do modelo pode não ser a camada mais cara; falhas no gerenciamento da cache é que podem ser.

44 interruptores, apontando para a mesma direção

O código vazado esconde 44 feature flags — interruptores de funcionalidade já compilados — mas que ainda não foram publicados ao exterior. Segundo a análise da comunidade, estas flags se dividem em cinco categorias por domínio funcional; a mais densa é a classe de “agentes autónomos” (12), que aponta para um sistema chamado KAIROS.

O KAIROS é citado mais de 150 vezes no código-fonte; é um modo de processo daemon residente em segundo plano. O Claude Code já não é apenas uma ferramenta que responde quando tu a invocas; é um agente que está sempre a correr em segundo plano, a observar continuamente, a registar e a agir proactivamente em momentos apropriados. A condição é não interromper o utilizador; qualquer operação que possa bloquear o utilizador por mais de 15 segundos é executada apenas mais tarde.

O KAIROS também tem perceção de foco no terminal embutida. No código, existe um campo terminalFocus que deteta em tempo real se o utilizador está a ver a janela do terminal. Quando tu mudas para o browser ou para outras aplicações, o agente conclui que “não estás lá” e alterna para o modo autónomo, executando tarefas e submetendo código de forma proativa, sem esperar por tua confirmação. Quando voltas para o terminal, o agente muda imediatamente de volta para o modo colaborativo: primeiro relata o que acabou de fazer e depois pede a tua opinião. O grau de autonomia não é fixo; varia em tempo real com a tua atenção. Isto resolve um problema embaraçoso de longa data das ferramentas de IA: uma IA totalmente autónoma não inspira confiança; uma IA completamente passiva é demasiado ineficiente. A escolha do KAIROS é ajustar dinamicamente a proatividade da IA com base no foco do utilizador: quando tu lhe prestas atenção, ela fica sossegada; quando te afastas, ela vai trabalhar por si.

Outro subsistema do KAIROS chama-se autoDream: após acumular 5 sessões ou ao fim de 24 horas, o agente inicia em segundo plano um processo de “reflexão” em quatro etapas. Primeiro, varre as memórias existentes para perceber o que já domina. Depois, extrai novos conhecimentos dos registos das conversas. Em seguida, faz a fusão entre conhecimentos novos e antigos, corrige contradições e remove duplicações. Por fim, simplifica o índice e remove entradas desatualizadas. Este desenho inspira-se na teoria de consolidação da memória da ciência cognitiva: as pessoas organizam memórias durante o sono; o KAIROS organiza o contexto do projeto quando o utilizador se ausenta. Para o utilizador comum, isto significa que quanto mais tempo usas o Claude Code, mais preciso se torna o entendimento do teu projeto, e não é apenas “memorizar o que tu disseste”.

A segunda categoria é “anti-evaporação e segurança” (8 flags). Entre as mais notáveis está o mecanismo fake_tools: quando quatro condições se verificam em simultâneo (flag ativada em tempo de compilação, ativação do entry da CLI, uso de API de primeira parte, e o switch remoto do GrowthBook a estar em true), o Claude Code injeta definições de ferramentas falsas nos pedidos de API, com o objetivo de contaminar conjuntos de dados que possam estar a gravar o tráfego de API e a serem usados para treinar modelos concorrentes. Esta é uma nova forma de defesa na corrida armamentista de IA: não é impedir-te de copiar; é garantir que tu copias coisas erradas.

Além disso, no código aparece um código-nome do modelo Capybara (dividido em três níveis: versão padrão, versão fast e versão com janela de contexto de milhões), que a comunidade amplamente especula ser um código-nome interno da série Claude 5.

Ovos de Páscoa: uma simples “bichinho eletrónico” escondido nas 512.000 linhas de código

Entre toda a arquitetura séria de engenharia e os mecanismos de segurança, os engenheiros da Anthropic também construíram em silêncio um conjunto completo de sistema virtual de animais de estimação, com o código interno BUDDY.

De acordo com o código vazado e a análise da comunidade, o BUDDY é um animal de estimação terminal com características “imitadas”; aparece no lado do campo de entrada do utilizador em forma de caixa de bolhas ASCII. Tem 18 espécies (incluindo capivara, salamandra-de-fogo, cogumelos, fantasma, dragão, e uma série de seres originais como Pebblecrab, Dustbunny, Mossfrog), divididas em cinco níveis por raridade: comum (60%), rara (25%), rara (10%), épica (4%) e lendária (1%). Cada espécie também tem “variante brilhante” (shiny); a mais rara, Shiny Legendary Nebulynx, só aparece com uma probabilidade de um em dez mil.

Cada BUDDY tem cinco atributos: DEBUGGING (depuração), PATIENCE (paciência), CHAOS (caos), WISDOM (sabedoria) e SNARK (sarcástico). Também pode usar chapéus; as opções incluem coroa, cartola, chapéu com hélice, aro luminoso, chapéu de feiticeiro e até um mini pato. O valor hash do ID do utilizador determina que tipo de animal tu vais “chocar”; o Claude gera o nome e a personalidade para ele.

De acordo com o plano de lançamento divulgado, o BUDDY estava originalmente previsto para entrar em testes em abril 1 a 7; o lançamento oficial seria em maio, começando pelos empregados internos da Anthropic.

Nas 512.000 linhas de código, 98,4% é engenharia hardcore; e ainda assim, no fim, alguém gastou tempo a fazer um bichinho eletrónico que usa um chapéu com hélice. Talvez seja esta a linha de código mais humana de todo o vazamento.

Ver original
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
  • Recompensa
  • Comentar
  • Republicar
  • Partilhar
Comentar
Adicionar um comentário
Adicionar um comentário
Nenhum comentário
  • Fixar