Em 31 de março de 2026, Chaofan Shou, pesquisador de segurança e cofundador da Fuzzland, divulgou um incidente de segurança de código extremamente raro. Anthropic O assistente oficial de linha de comando do Intelligent Body Assistant Claude Código Ocorreu um vazamento completo do código-fonte.
O código bruto e não ofuscado agora está se espalhando como um incêndio na comunidade de desenvolvedores. Qualquer pessoa pode acessar facilmente o código-fonte projetado dessa inteligência de IA, que representa o que há de melhor no setor.
Erros de configuração fatais e o estado da aquisição de código-fonte
O incidente teve origem em um erro de configuração de baixo nível na engenharia de front-end. A equipe de desenvolvimento do Anthropic, ao publicar o kit de ferramentas da CLI no registro npm, não incluiu o .map Os arquivos de mapeamento de código-fonte são adicionados à lista de ignorados. Isso faz com que os arquivos que contêm referências de código-fonte TypeScript completas e não ofuscadas sejam empacotados diretamente para consumo público.
Depois de instalar a ferramenta localmente, o desenvolvedor descobriu que o .map O arquivo expõe um URL direto para o bucket de armazenamento interno do Anthropic no Cloudflare R2. A resolução desse link permite que qualquer pessoa baixe diretamente um arquivo zip contendo todo o código-fonte do projeto.
O código vazado mais completo já foi copiado para a plataforma GitHub:
- Repositório de backup completo do código-fonte: https://github.com/instructkr/claude-code
Status e limites dos snapshots do código-fonte
Um grande número de desenvolvedores clonou o repositório e descobriu que o repositório atual mantém apenas o núcleo src/ Árvore do catálogo. Faltam os metadados usuais de nível superior do projeto, incluindo o package.json arquivos de bloqueio de dependência, scripts de compilação, comandos de teste e uma estrutura clara de diretórios de versão.
Isso significa que o repositório atual não pode ser instalado ou executado diretamente com um único clique. É melhor pensar nele como um instantâneo de valor inestimável para leitura de código e referência arquitetônica. Isso também mostra que a Anthropic criou um processo interno de empacotamento e distribuição extremamente complexo.
Visão geral panorâmica: não se trata de um simples invólucro
Claude Code é muito mais do que um simples invólucro de linha de comando CLI. É um tempo de execução de aplicativo completo centrado em ferramentas, desenvolvido em seu núcleo com base nos seguintes recursos:
- Experiência interativa da CLI com uma grande superfície de comando integrada
- Exponha o tempo de execução de arquivos, shells, web, tarefas e ferramentas smartbody
- Oferece suporte a fluxos de execução locais e remotos
- para interoperabilidade de ferramentas MCP Entrada do servidor
Desmontagem do código principal: arquitetura de aplicativos de sete camadas
Ao mergulhar nessas 512.000 linhas de código TypeScript, fica claro que ele está dividido em sete camadas arquitetônicas lógicas.
Camada 1: entrada do processo e modo de operação
O caminho de inicialização da CLI está centrado no diretório src/main.tsx 和 src/entrypoints/cli.tsx O design da inicialização tem dois objetivos. O design da inicialização tem dois objetivos: oferecer suporte a vários modos de execução e tornar os caminhos de inicialização comuns extremamente responsivos.
Ele faz isso analisando os argumentos contra o --version O sistema fornece caminhos rápidos para comandos como o MCP e usa carregamento atrasado para evitar a introdução de todos os módulos de uma só vez. O sistema fornece não apenas um terminal interativo regular, mas também oferece suporte ao modo de servidor MCP, impressão não interativa, daemon e ponte.
Camada 2: sistema de roteamento de comandos
A camada de comando está localizada no src/commands.ts 及 src/commands/ diretório. As intenções de entrada visíveis ao usuário são definidas aqui, e o código-fonte expõe quase 50 comandos. Abrangendo login de autenticação, revisão de código ( /review ), comparação de diferenças ( /diff ), compressão contextual ( /compact ), gerenciamento de memória persistente ( /memory ), gerenciamento de MCP e até mesmo transporte ambiental remoto.
Camada 3: mecanismo de sessão e ciclo de rodada única
Essa camada é o coração do sistema e é arquitetada com uma segregação de funções bem definida:
src/QueryEngine.tsProprietário da conversa: atua como o proprietário da conversa. Mantém um histórico de mensagens em várias rodadas de diálogo, um cache de arquivos para leitura, Token Estatísticas de consumo e autoridade de gerenciamento para rejeitar registros.src/query.tsResponsável pelo loop de execução de rodada única subjacente. Ele lida com o fluxo de resposta do modelo, a articulação de chamadas de ferramentas, a compactação de contexto automatizada e responsiva e a lógica de recuperação quando o Token atinge seu limite superior.
Nível 4: Sistema de ferramentas
No Claude Code, as ferramentas são cidadãos de primeira classe. Toda chamada de ferramenta é feita na seção src/Tool.ts definido ToolUseContext é executado na interface de leitura/gravação do estado do aplicativo, nos recursos do MCP e nos ganchos de privilégio. src/tools.ts Cerca de 40 ferramentas controladas por chaves de recursos foram registradas. Elas incluem execução de Bash, substituição de leitura/gravação de arquivos, edição de Notebook, rastreamento da Web e ferramentas de geração de subinteligência em nível de equipe.
Camada 5: Tarefa
O sistema faz uma distinção clara entre “ferramentas” e “tarefas”. As ferramentas são chamadas de capacidade únicas, enquanto src/Task.ts Uma tarefa definida é uma unidade de execução rastreável com um ciclo de vida (em espera, em execução, concluída, com falha, encerrada). src/tasks.ts registra trabalhos de shell locais, inteligências locais e remotas para executar tarefas e até mesmo contém um novo arquivo chamado dream de tarefas de agrupamento ociosas em segundo plano.
Camada 6: estado interativo e interface do usuário
A interface do terminal está longe de ser uma simples saída de texto simples. src/state/AppStateStore.ts Demonstra uma cobertura extremamente ampla de React Modelo de estado. Ele rastreia os parâmetros de configuração, os recursos do cliente MCP, as tarefas, o estado de pensamento do modelo e o estado da interface do usuário da ponte remota. A entrada de comando do terminal é a mesma que src/components/ A renderização do grande número de componentes do Ink sob o
Camada 7: Serviços, ponte e integração externa
A verdadeira coreografia dos negócios está espalhada por essa camada:
- Serviços e infraestrutura:
src/services/和src/utils/Inclui telemetria analítica, mecanismo de compactação contextual, limites de política e sincronização de memória da equipe. - Remoto e ponteSubsistemas independentes
src/bridge/Trata da compatibilidade de URLs de sessões remotas, fluxos de trabalho de dispositivos confiáveis e transferências bidirecionais. - Integração de MCP:
src/entrypoints/mcp.tsServe como um ponto de entrada principal que permite que clientes externos descubram e invoquem ferramentas internas do sistema por meio do protocolo de transporte stdio.
Comutadores de privilégios, segurança e recursos
As restrições de segurança são uma parte central do tempo de execução do sistema. O código no ToolPermissionContext É demonstrado que a execução da ferramenta é naturalmente sensível à política. Diferentes modos de operação (local, remoto, headless) alteram dinamicamente o comportamento das permissões, e algumas tarefas em segundo plano são até mesmo configuradas à força para desativar a autorização pop-up.
A base de código é amplamente coberta com feature('...') Julgamento de troca de recursos. Isso significa que os recursos inativos são cortados no momento da compilação e que o instantâneo de origem atual contém, na verdade, um superconjunto de várias variantes de produtos.
Mergulho profundo: fluxo de ponta a ponta de uma única solicitação
Ao rastrear o código-fonte, um caminho completo de execução de uma única solicitação é o seguinte:
- O processo é iniciado a partir da CLI ou de um portal específico.
- A lógica de inicialização seleciona o modo de operação e inicializa a configuração, a autenticação e o estado da política em paralelo.
- O sistema reúne os comandos e o registro de ferramentas para a sessão atual.
- Crie um AppState interativo no modo interativo.
- O usuário insere um comando ou uma mensagem.
QueryEngineMontagem de interações únicas com contextos de execução em nível de sessão.- entrar em
query.tsde tubos de circulação de fluxo. - texto de saída do modelo ou acionar uma solicitação de chamada de ferramenta de uso da ferramenta.
- O sistema valida e executa as ferramentas de acordo com o contrato interno da ferramenta e o sistema de permissões.
- Os resultados da execução da ferramenta são mesclados novamente no fluxo de mensagens.
- Os componentes da interface do usuário, o estado da tarefa e o estado da sessão são atualizados de forma síncrona.
- Loop para determinar se ele é concluído, comprime o contexto ou executa uma nova tentativa de falha.
Leia este guia profissional para 510.000 linhas de código-fonte
Diante de uma base de código tão grande, a análise requer uma estratégia específica.
Caminho de leitura do desenvolvedor:
Recomenda-se que o hábito de olhar de baixo para cima seja descartado e que a seguinte ordem seja adotada:
Verifique primeiro o registro de entrada src/main.tsx 与 src/commands.ts Continue a entender a abstração central src/Tool.ts 、 src/tools.ts 、 src/Task.ts 和 src/tasks.ts e depois mais profundamente no sistema nervoso central src/QueryEngine.ts 和 src/query.ts ; analisando novamente o gerenciamento do estado src/state/AppStateStore.ts e o portal MCP src/entrypoints/mcp.ts . Por fim, com base no interesse em explorar src/bridge/ 和 src/services/ 。
Estratégias de recuperação projetadas para agentes de IA:
Ao analisar o repositório, a IA deve priorizar o registro antes de procurar implementações específicas. Analise “quais recursos” separadamente de “como eles são implementados” e rastreie explicitamente as variáveis do Feature Gate. Os pontos de entrada eficazes incluem rastrear o caminho completo de uma ferramenta, do registro à execução, distinguir o modelo de dados de uma ferramenta de uma tarefa, localizar o proprietário do estado da sessão e explorar como o servidor MCP chama as ferramentas internas.
Os segredos ocultos da escavação comunitária
Depois de corrigir a estrutura completa do código, os desenvolvedores usaram os switches de recursos para extrair funcionalidades internas que ainda não haviam sido lançadas.
Há um daemon do KAIROS não lançado incorporado ao sistema. Quando ativado, o assistente se torna um daemon residente em segundo plano, ouvindo ativamente o Webhook do GitHub e assumindo várias subinteligências paralelas.
Para os funcionários internos da Anthropic, o código força um “modo secreto”. Quando um funcionário é detectado operando em um armazém público, o sistema apaga automaticamente todos os rastros gerados pela IA e altera os avisos para ocultar sua identidade.
A equipe também escondeu um sistema eletrônico de animais de estimação com 18 configurações no código, usando funções de cadeia de caracteres para evitar a varredura. O módulo de telemetria subjacente não apenas monitora os registros de falhas, mas também conta com precisão a frequência de palavrões digitados pelos usuários para avaliar as métricas de usabilidade do modelo.
































