zong0728/claude-code-internals

GitHub: zong0728/claude-code-internals

基于 npm source maps 泄露事件,对 Anthropic Claude Code CLI 进行全面逆向架构分析的文档项目,涵盖工具系统、查询引擎、权限模型和隐藏功能的深度拆解。

Stars: 0 | Forks: 0

# Claude Code 内部架构 **对 Anthropic 的 AI 编程 CLI 的深度架构分析** 基于 2026 年 3 月 31 日通过 npm source maps 泄露的源代码 **[英语](README.md)** | **[中文](README_zh.md)** `~1,900 个文件` · `~513,000 行代码` · `39 个工具` · `36 个模块` · `85+ 个钩子` · `146+ 个组件` · `100+ 个命令`
## 架构概述 ``` graph TB subgraph USER["🖥 User Interface"] CLI["Terminal CLI\nInk.js React renderer"] IDE["IDE Extensions\nVS Code · JetBrains"] end subgraph CORE["⚙️ Core Engine"] QE["Query Engine\nAgentic turn loop\nStreaming · Error recovery"] TOOLS["39 Tools\nFile · Bash · Search\nWeb · MCP · Agent"] PERM["Permission System\nAST parsing · Auto-classifier\nPlan mode"] end subgraph INFRA["🏗 Infrastructure"] BRIDGE["IDE Bridge\nWebSocket / SSE\nDual protocol"] TASKS["Task System\nBackground agents\nShell · Remote"] MEM["Memory\nPersistent recall\nSonnet selection"] end subgraph EXTEND["🧩 Extensibility"] MCP["MCP Servers\nExternal tools"] PLUGINS["Plugins & Skills\nSlash commands"] COORD["Coordinator\nMulti-agent\norchestration"] end subgraph HIDDEN["🔮 Hidden Features"] BUDDY["BUDDY\nVirtual companion\n18 species · 5 rarities"] KAIROS["KAIROS\nProactive messaging\nCheckpoint comms"] end CLI --> QE IDE --> BRIDGE BRIDGE --> QE QE --> TOOLS TOOLS --> PERM QE --> TASKS QE --> MEM TOOLS --> MCP TOOLS --> PLUGINS TASKS --> COORD QE -.-> BUDDY QE -.-> KAIROS TOOLS -->|"Claude API"| API(("Anthropic\nClaude API")) style CLI fill:#6366f1,stroke:#4f46e5,color:#fff style IDE fill:#6366f1,stroke:#4f46e5,color:#fff style QE fill:#ef4444,stroke:#dc2626,color:#fff style TOOLS fill:#ef4444,stroke:#dc2626,color:#fff style PERM fill:#ef4444,stroke:#dc2626,color:#fff style BRIDGE fill:#3b82f6,stroke:#2563eb,color:#fff style TASKS fill:#3b82f6,stroke:#2563eb,color:#fff style MEM fill:#3b82f6,stroke:#2563eb,color:#fff style MCP fill:#f59e0b,stroke:#d97706,color:#fff style PLUGINS fill:#f59e0b,stroke:#d97706,color:#fff style COORD fill:#f59e0b,stroke:#d97706,color:#fff style BUDDY fill:#8b5cf6,stroke:#7c3aed,color:#fff style KAIROS fill:#8b5cf6,stroke:#7c3aed,color:#fff style API fill:#10b981,stroke:#059669,color:#fff ``` ## 查询引擎流程 Claude Code 的核心 —— 一个具备流式工具执行、4 种上下文压缩策略和 7 种以上错误恢复路径的智能体回合循环(agentic turn loop)。 ``` sequenceDiagram autonumber participant U as User participant QE as Query Engine participant API as Claude API participant T as Tools (39) U->>QE: Message QE->>QE: Context compaction (4 strategies) loop Agentic Turn Loop QE->>API: Stream request API-->>QE: Tokens + tool_use blocks par Streaming execution QE->>T: Run concurrent-safe tools T-->>QE: Results end QE->>T: Run remaining tools (serial for writes) T-->>QE: Results alt Error recovery QE->>QE: Prompt too long → compact QE->>QE: Max tokens → escalate QE->>QE: Fallback → switch model end QE->>QE: Memory + skill attachments end QE-->>U: Final response ``` ## 内部揭秘 ### 分析 | 文档 | 您将了解到的内容 | |----------|-------------------| | [**工具系统拆解**](analysis/tools-breakdown.md) | 10 大类共 39 个工具,多层权限模型(AST 解析命令、自动分类器、计划模式),失败即关闭的默认策略 | | [**隐藏功能**](analysis/hidden-features.md) | **BUDDY** —— 确定性虚拟伴侣(Mulberry32 PRNG,18 个物种,5 个稀有度等级,1% 闪光概率)和 **KAIROS** —— 具有仅追加日志的主动消息系统 | | [**额外模块**](analysis/extra-modules.md) | coordinator(多智能体)、tasks(后台执行)、memdir(使用 Sonnet 选择的持久化内存)、**moreright**(神秘的仅限内部使用的存根) | ### 详细图表 (Mermaid) | 图表 | 描述 | |---------|-------------| | [架构(全细节)](diagrams/architecture-overview.mmd) | 所有 36 个模块及其依赖箭头,按层级颜色编码 | | [查询引擎(全细节)](diagrams/query-engine-flow.mmd) | 完整的调用链:入口 → 流式传输 → 工具执行 → 错误恢复 → 循环 | | [IDE Bridge 协议](diagrams/ide-bridge.mmd) | v1 (WebSocket) / v2 (SSE) 双协议,重连策略,崩溃恢复 | ### 文章 | 文章 | 受众 | |---------|----------| | [**英文文章**](docs/article-en.md) (~1,800 词) | GitHub / dev.to —— 简明的技术深度剖析 | | [**中文文章**](docs/article-zh.md) (~2,300 词) | 掘金 / 知乎 —— 附带更多背景信息的详细解读 | ## 关键发现 **权限系统** —— 比 LLM 编排本身更复杂。Bash 命令经过 AST 解析以检测破坏性操作。WebFetch 使用主机名白名单。轻量级分类器会自动批准安全操作。计划模式要求对每一次工具调用进行显式批准。 **流式工具执行** —— `StreamingToolExecutor` 在 LLM 仍在生成内容时,并发安全地运行工具,显著降低了多工具回合中的延迟。 **上下文管理** —— 四种压缩策略(微压缩、自动压缩、反应式压缩、上下文折叠)加上工具结果预算控制。上下文窗口管理并非一个已解决的问题,而是一项持续的工程努力。 **BUDDY** —— 一个确定性的抽卡系统,从 `userId` 哈希 → Mulberry32 PRNG 种子中派生出独特的 ASCII 伴侣。只有“灵魂”(名称、个性)被持久化;“骨骼”(物种、稀有度、属性)从哈希中重新生成,从而防止配置编辑作弊。 **KAIROS** —— 通过 `SendUserMessage` 工具路由所有可见输出。工具调用之外的文本将进入一个低可见度的详细视图。这实现了主动状态更新和基于检查点的通信。 **moreright/** —— 一个 25 行的空操作存根,替代了 Anthropic 的一个内部功能。由 `"external" === 'ant'` 控制(永远为 false)。`onBeforeQuery` / `onTurnComplete` 接口揭示了内部工具是如何挂载到主循环中的。 ## 背景 2026 年 3 月 31 日,[Chaofan Shou](https://x.com/shoucccc) 发现 Anthropic 的 Claude Code CLI 通过 npm 包中捆绑的 source maps 暴露了其完整源代码。Source maps —— 通常仅作为开发调试的辅助工具 —— 被意外包含在生产构建中,使得任何人都可以重构原始的 TypeScript 源代码。 本仓库仅包含**原始分析和文档** —— 不包含任何泄露的源代码。 ## 许可证 本分析为原创作品。被分析的源代码归 Anthropic 所有。
标签:AI编程助手, Anthropic, AST解析, CIS基准, Claude Code, DLL 劫持, DNS解析, IDE Bridge, Ink.js, JetBrains, MCP服务器, PyRIT, Query Engine, React, SOC Prime, Syscalls, VS Code, WebSocket, 中英双语, 云资产清单, 依赖分析, 前端技术, 多智能体系统, 大语言模型, 开发工具, 开源项目, 权限系统, 架构分析, 源码分析, 系统设计, 逆向工程