Skip to content
Gains Summary
Main Navigation 首页 / Home
C++ 编程 / C++ Programming
系统与高性能 / Systems & Performance
Web 开发 / Web Development
人工智能 / Artificial Intelligence
工业软件 / Industrial Software
其他内容 / Other Topics
C++ 编程 / C++系统与性能 / SystemsWeb 开发 / Web人工智能 / AI工业软件 / Industrial

外观

Sidebar Navigation

← 人工智能 / Artificial Intelligence

智能体工程 / Agent Engineering

1. Agent 工程体系全景 / Agent Engineering System Overview

2. Function Calling - 让 LLM 具备行动能力 / Function Calling for Giving LLMs the Ability to Act

3. Agent 框架演进 - 从裸 SDK 到 LangGraph / The Evolution of Agent Frameworks from Raw SDKs to LangGraph

4. RAG 基础 - 让 Agent 拥有"知识" / Retrieval-Augmented Generation Fundamentals for Agent Knowledge

5. 记忆管理 - Agent 的大脑 / Memory Management as the Brain of an Agent

6. Agent 工作流 - 从单步到复杂的执行编排 / Agent Workflows from Single Steps to Complex Orchestration

7. 多 Agent 系统 - 多个 Agent 协作 / Multi-Agent Systems and Agent Collaboration

8. RAG 进阶 - 企业级知识库实战 / Advanced RAG for Enterprise Knowledge Bases

9. 真实 Agent 应用场景 / Real-World AI Agent Applications

10. Structured Output - 让 LLM 输出可控的结构化数据 / Structured Output for Controllable, Machine-Readable LLM Responses

11. Tools Design Best Practices - AI Agent 工具设计最佳实践 / Tools Design Best Practices for AI Agents

12. Agent 架构模式 - 从单 Agent 到多 Agent 的工程范式 / Agent Architecture Patterns

13. Agent Modes — 编程 Agent 的交互模式设计 / Designing Interaction Modes for Coding Agents

14. Agent Workflow 编排:从循环到持久化执行的演进

15. Context Engineering - 从 Prompt 设计到上下文编排 / Context Engineering: From Prompt Design to Context Orchestration

16. Agent 缓存工程:从 KV Cache、Prompt Cache 到语义缓存 / Agent Caching Engineering

17. Harness Engineering, Skills, and Loop Engineering — 从信任模型到验证系统 / From Trusting Models to Verifying Systems

18. MCP 协议 - AI 工具的"USB 接口" / Model Context Protocol for AI Tool Integration

19. Agent 评估与测试 — 如何衡量一个"不可预测"的系统 / Agent Evaluation and Testing — How to Measure an "Unpredictable" System

20. 安全沙箱 - Agent 的安全边界 / Secure Sandboxes as Agent Safety Boundaries

21. 权限与门卫 - Agent 的安全控制中枢 / Permissions and Policy Gates for Agent Control

22. API Key 管理与安全 - Agent 的密钥生命周期的管理 / API Key Lifecycle Management and Security for Agents

23. 提示词注入防护 - Agent 的防御前沿 / Prompt Injection Defense for AI Agents

24. 可观测性与调试 - Agent 运行的透明度保障 / Observability and Debugging for Transparent Agent Operations

25. 模型路由 - 让正确的模型做正确的事 / Model Routing for Matching Models to Tasks

26. OpenClaw 设计深度分析 - 为什么它让人觉得"活"了 / OpenClaw Design Analysis and the Illusion of Liveliness

27. Claude Code 泄露源码深度分析 - 512,000 行代码揭示的生产级 Agent 架构 / Claude Code Source Analysis and Production Agent Architecture

28. LobeChat 设计深度分析 - 全栈 Agent Chat 应用工程实践 / LobeChat Design Analysis and Full-Stack Agent Chat Engineering

29. 编程 Agent 全面对比:从 Claude Code 到 Pi 的设计哲学 / Coding Agents Comparison: Design Philosophies from Claude Code to Pi

30. 领域 Agent 的确定性工具编译与延迟执行——从自然语言规格到单次 CAE 提交

31. Agent 工程学习指南 / An AI Agent Engineering Learning Guide

本页目录

Claude Code 泄露源码深度分析 - 512,000 行代码揭示的生产级 Agent 架构 / Claude Code Source Analysis and Production Agent Architecture ​

📅 创建时间:2026-05-08 🏷️ 标签:#ClaudeCode #源码泄露 #Agent架构 #PermissionModel #AntiDistillation 📚 前置知识:[[00-agent-overview]]


前言 ​

2026 年 3 月 31 日,Anthropic 意外暴露了 Claude Code 的完整源码。一个缺失的 .npmignore 条目,Bun 打包器的默认行为,一个 59.8 MB 的 Source Map 文件。

512,000 行 TypeScript。1,906 个文件。

Anthropic 确认是"发布配置中的人为错误,不是安全漏洞"。没有客户数据泄露。但在补丁发布之前,开发者们已经将代码镜像到了 GitHub 的各个角落。一个叫 "claw-code" 的仓库在 24 小时内获得了 100,000 星——据报道是 GitHub 有史以来最快的增长纪录。

8,100+ 个 GitHub 仓库收到了 DMCA 删除通知,包括一些合法的 fork 和分析仓库。社区愤怒,Anthropic 撤回了大部分过于宽泛的通知。

这不是本文要讨论的故事。

本文要讨论的是:512,000 行代码揭示了什么工程现实。


第1部分:Claude Code 不是什么 ​

1.1 错误的认知 ​

大多数人对 Claude Code 的心理模型是:一个聊天界面,可以运行终端命令。

这是错的,而且错得重要。

Claude Code 是一个"Agentic Harness"——一个编排层,用工具包装语言模型,赋予它管理文件、执行 bash 命令、协调子 Agent、在长程多步会话中维护连贯状态的能力。

当你使用 Claude Code,你实际上在和大约 1,900 个 TypeScript 文件交互,这些文件专门负责管理模型能看到什么、允许做什么、以及出问题时的行为。

1.2 数字背后的真相 ​

泄露源码揭示的一些数字应该重塑你的认知:

QueryEngine.ts → 46,000 行
基础工具定义 → 29,000 行
bashSecurity.ts → 2,592 行
内置工具总数 → 66 个

QueryEngine 是最大的单个模块
负责所有 LLM API 调用、流式处理、缓存、Token 计数
成本追踪、Prompt 缓存和重试逻辑
1
2
3
4
5
6
7
8

这不是代码膨胀。这是当每个组件都被认真对待时,生产级架构的实际样子。

到 2026 年初,Claude Code 的年化收入运行率估计达到 25 亿美元(来自 getpanto.ai 的报告)。这个运行率衡量的不是底层模型有多好——衡量的是 Harness 有多重要。


第2部分:架构概览——三层结构 ​

2.1 三大核心组件 ​

┌─────────────────────────────────────────────────────────────┐
│                    Claude Code 架构三层                       │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  编排循环(Orchestration Loop)                              │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ while not done:                                       │   │
│  │   model.generate()                                   │   │
│  │   if tool_calls: execute_tools()                    │   │
│  │   results → model.generate()                        │   │
│  │ 复杂度不在循环设计,在保护它的东西:                   │   │
│  │ 上下文管理 + 权限门卫 + 重试逻辑 + 子 Agent 协调      │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  工具系统(Tool System)                                   │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ ~40 个独立工具模块                                    │   │
│  │ BashTool, FileReadTool, GrepTool, WebFetchTool ...  │   │
│  │ 每个工具有自己的输入 schema、权限级别、执行逻辑        │   │
│  │ 工具之间没有共享可变状态                              │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  记忆架构(Memory Architecture)                            │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 三层设计                                              │   │
│  │ 短程:活跃上下文窗口                                 │   │
│  │ 中程:CLAUDE.md 文件                                 │   │
│  │ 长程:自动压缩 + 结构化摘要                           │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

2.2 工具设计哲学 ​

Claude Code 的工具有一个核心设计规则:不要为通用目的创建工具,专用的更好。

Bash 工具的描述明确警告不要用它执行 find、grep、cat、head、tail、sed、awk、echo——不是因为这些命令危险,而是因为为每个操作提供专用工具能产生结构化、可审计的日志。

Grep 调用 → 带类型参数的调用 → 观测简单
bash -c "grep -rn 'pattern' ." → 需要解析
1
2

每个工具都有独立的权限级别和验证逻辑。Edit 工具要求之前必须有 Read——防止盲目覆盖。


第3部分:记忆架构——索引优于整体 ​

3.1 单体记忆 vs 索引记忆 ​

┌─────────────────────────────────────────────────────────────┐
│                    两种记忆模式对比                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  单体记忆(常见模式):                                     │
│  • 把整个项目上下文加载到每次 prompt                       │
│  • 上下文窗口快速被过时信息填满                             │
│  • 不区分近期和历史数据                                    │
│  • Token 成本随项目规模线性增长                           │
│                                                             │
│  索引记忆(Claude Code 模式):                             │
│  • MEMORY.md 索引始终加载,每条最多 150 字符               │
│  • 主题文件按需加载                                       │
│  • 对话记录只通过 grep 访问                                │
│  • Token 成本随任务相关性增长,不随项目大小                  │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

3.2 三层详解 ​

第一层:MEMORY.md(永久索引)

每个条目最多 150 字符,始终加载到每次对话。想象成书的目录——短引用告诉系统它知道什么,但不消耗太多上下文空间。

第二层:主题文件(按需加载)

覆盖特定主题的较长文档。只在当前任务需要时加载到上下文。当 Agent 在处理前端样式时,不会加载关于数据库迁移的信息。

第三层:对话记录(最严格限制)

之前的对话记录完全不加载到上下文。只能通过 grep 风格搜索访问,意味着 Agent 必须主动查找过去信息,而不是被动接收。

3.3 关键设计:记忆是提示,不是真理 ​

Claude Code 最重要的设计决策:记忆是提示,不是真理。

在基于任何记忆条目行动之前,Claude Code 会验证它是否与代码库的实际当前状态相符。这个"验证后再行动"的模式防止了最常见的生产故障模式:基于过时或不正确信息做修改。


第4部分:上下文压缩——三档策略 ​

4.1 三档压缩 ​

Claude Code 使用三种不同的压缩策略,每种在会话生命周期的不同点触发:

┌─────────────────────────────────────────────────────────────┐
│                    Claude Code 三档压缩系统                     │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  MicroCompact(微压缩)                                      │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 零 API 调用的本地编辑                               │   │
│  │ 旧工具输出直接在对话状态中修剪                        │   │
│  │ 快速、便宜、对用户透明                               │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  AutoCompact(自动压缩)                                    │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 对话接近上下文窗口天花板时触发                        │   │
│  │ 保留 13,000 token 缓冲区                            │   │
│  │ 生成最多 20,000 token 的结构化摘要                   │   │
│  │ 内置熔断器:连续三次失败后停止重试                   │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  Full Compact(完全压缩)                                   │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 压缩整个对话                                          │   │
│  │ 重新注入最近访问文件(每文件最多 5,000 tokens)      │   │
│  │ 保留活跃计划 + 相关 skill schema                     │   │
│  │ 工作 token 预算重置为 50,000                        │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

4.2 背景故事:250,000 次 API 调用/天 ​

在泄露的代码中,工程师们发现了一个 bug:autocompaction 系统的自动重试在失败时无限循环。它每天燃烧约 250,000 次 API 调用——全球每个用户。直到一个工程师用三行代码修复。

三行代码。修复了一个无限循环的自动压缩逻辑。


第5部分:权限系统——四层 + 23 项 bash 安全检查 ​

5.1 四层权限模型 ​

┌─────────────────────────────────────────────────────────────┐
│                    Claude Code 四层权限模型                    │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  Plan(规划模式)                                          │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 只读分析                                             │   │
│  │ Agent 可以读文件、搜索代码、解释逻辑                   │   │
│  │ 禁止:任何写入、bash、网络请求                        │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  Standard(标准模式)                                      │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 高风险操作需要用户确认                               │   │
│  │ 允许:文件编辑、bash 执行、网络访问                   │   │
│  │ 危险操作前需要确认(如 rm、git push --force)        │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  Auto(自动模式)                                          │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 预批准的操作自动执行                                 │   │
│  │ Agent 自行判断风险等级                               │   │
│  │ 高风险仍需确认                                        │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  Bypass(旁路)                                           │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 内部系统调用,无任何检查                             │   │
│  │ 仅框架自身使用                                        │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

5.2 信任序列 ​

权限在 Claude Code 中是正确性问题,不是 UX 问题。安全约束在工具描述中直接嵌入——就在模型在调用时看到的位置。

这是一个架构决策,不只是文档风格。模型在治理其行为的指令出现在它所控制的动作的上下文中,比藏在 10,000 tokens 之前的地方更可靠。

5.3 bashSecurity.ts——23 项安全检查 ​

2,592 行,23 个编号的安全检查。每个检查背后都有一个真实事件。

特别值得注意的是 Zsh 特定的防御。Claude Code 在 macOS(Catalina 之后默认 Zsh)上运行,Anthropic 发现了 Zsh 扩展语义中独特的攻击向量。=cmd 扩展——=curl 被替换为 /usr/bin/curl——可以绕过 naive 命令黑名单。23 个检查。23 个事件。


第6部分:多 Agent 编排——提示,不是代码 ​

6.1 发现:编排是 prompt,不是代码 ​

泄露中最令人惊讶的发现之一:coordinatorMode.ts——处理多 Agent 协调的模块——完全作为系统提示指令实现。

不是代码级编排逻辑,不是单独的调度服务,不是消息总线。协调者收到一个 prompt,描述如何委托工作、从子 Agent 聚合什么、如何综合结果。

一个指令嵌入协调者的 prompt 中:"Never write 'based on your findings'——这些短语把理解委托给 workers 而不是自己做。"这是文本文件中的质量门禁。这个指令阻止协调者成为被动继电器——不综合结果,只是 rubber-stamp 子 Agent 返回的任何东西。

6.2 为什么重要 ​

因为它是 prompt 驱动的,Anthropic 可以在不重新部署的情况下更新编排行为。但代价是更难正式测试——但迭代速度是真实的。


第7部分:44 个功能标志——路线图泄漏 ​

7.1 最重要的未发布功能 ​

源码中有 44 个功能标志揭示了 Anthropic 的方向。

┌─────────────────────────────────────────────────────────────┐
│                    值得关注的未发布功能                        │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  KAIROS(最重要的发现)                                     │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 一种自主守护进程模式                                   │   │
│  │ 将 Claude Code 从请求-响应工具                       │   │
│  │ 转变为持续后台进程                                   │   │
│  │                                                     │   │
│  │ • 维护仅追加的每日日志文件                           │   │
│  │ • 接收定期心跳 prompts,决定是否主动行动              │   │
│  │ • 强制 15 秒阻塞预算(动作不超过 15 秒)            │   │
│  │ • 监视 GitHub webhooks 获取新 issue 和 PR            │   │
│  │                                                     │   │
│  │ 代码中有 150+ 处引用。功能完全构建。                 │   │
│  │ 藏在功能标志后面。                                   │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  COORDINATOR(多 Agent 协调)                              │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 多 Agent 编排,明确质量门禁                           │   │
│  │ 内部 prompt:"不要 rubber-stamp 弱工作"              │   │
│  │ 协调者 Agent 被设计为能拒绝子 Agent 的不合格输出     │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  ULTRAPLAN(云端深度规划)                                 │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 云端 Opus 4.6 模型,运行长达 30 分钟                │   │
│  │ 浏览器内成本批准流程                                │   │
│  │ 复杂多步任务的深度处理                               │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  BUDDY(最意外的功能)                                     │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ Tamagotchi 风格的 ASCII 虚拟宠物                    │   │
│  │ 18 种可能的物种                                     │   │
│  │ 动态属性包括 "Debugging" 和 "Snack"                 │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

7.2 autoDream ​

作为 KAIROS 的配套,services/autoDream/ 目录中有一个 fork 子 Agent 伴侣。在空闲期间,它综合 Agent 在活跃会话期间观察到的东西,移除记忆中的矛盾,把原始观察转化为结构化的长期事实。

夜间记忆提炼——系统回顾自己的一天,在下一次会话开始前给自己写连贯的笔记。没有主要开源 Agent 框架发布了类似的东西。


第8部分:反蒸馏——保护模型的三个层次 ​

8.1 泄露揭示的防御机制 ​

Anthropic 构建了三层保护来防止竞争对手通过 API 交互提取 Claude 的能力:

┌─────────────────────────────────────────────────────────────┐
│                    三层反蒸馏保护                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  第一层:假工具注入                                        │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ anti_distillation: ['fake_tools']                  │   │
│  │ 在 API 响应中注入不存在的假工具定义                 │   │
│  │ 如果竞争对手抓取 Claude 输出训练自己的模型,           │   │
│  │ 假工具会成为训练数据的一部分                         │   │
│  │ → 训练出的模型尝试调用不存在的工具                  │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  第二层:连接文本                                         │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 在推理步骤之间插入加密签名的摘要                    │   │
│  │ 摘要看起来像自然语言,但包含嵌入签名                 │   │
│  │ 从 API 输出中提取 Claude 的决策过程变得更难         │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  第三层:原生客户端证明                                    │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ Zig-based HTTP 栈作为 API 调用的 DRM              │   │
│  │ 验证请求来自真实的 Anthropic 客户端                   │   │
│  │ 而非自动化抓取工具                                   │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  安全研究者估计:所有三层都可以在大约一小时内绕过         │
│  → 这些是减速带,不是墙壁                                 │   │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

第9部分:构建启示 ​

9.1 从基础设施开始 ​

Claude Code 泄露揭示的核心洞察:构建可靠的生产 Agent 需要什么。

这些不是理论观察,是经过大规模验证的工程模式:

启发1:索引优于整体
用轻量索引(MEMORY.md)始终加载,详细主题文件按需加载。
Token 成本随任务相关性增长,不随项目大小。

启发2:记忆是提示,不是真理
永远不要让 Agent 仅凭记忆行动。
在基于记忆条目做修改前,验证它与代码库的实际当前状态是否相符。
这个单一模式防止了 AI 编码工具中最常见的故障模式。

启发3:功能标志是标准实践
Anthropic 的 44 个功能标志表明即使是距发布还有数月的功能
也在代码库中完全实现和测试。
这将部署与发布解耦。

启发4:构建配置是安全表面
一个缺失的 .npmignore 行暴露了 512,000 行代码。
审计构建管道中意外的 source map 包含。
用与应用安全同等的严谨对待构建配置。

启发5:挫败感作为反思触发
当用户在 prompt 中骂人时,说明交互中出了根本问题。
用便宜的正则模式匹配检测挫败感,触发模式改变:
放慢、提问、避免假设。
几乎不花任何成本,但能捕获真实问题。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

9.2 行动清单 ​

立即行动:审计构建管道中的 source map 泄露
本季度:实现功能标志作为标准实践
本季度:评估 Agent 的记忆架构
中期:评估自有 API 的反蒸馏需求
持续:监控 KAIROS 开发
1
2
3
4
5

第10部分:地板刚刚变了 ​

Claude Code 泄露之前,构建可靠的 Agent 需要数月的积累试错,而这些大厂没有分享。

那个限制不存在了。

泄露揭示的硬性部分是:构建生产 Agent 的难点从来不是模型。它一直是 Harness——上下文管理、权限架构、工具注册表、编排逻辑、在会出故障地方的断路器。

Anthropic 在这个 Harness 上花了数年和大量工程努力。蓝图现在是公开知识,被数千开发者在一个周末内分析。

在接下来 12 个月交付可靠 Agent 的团队不会是拥有更好模型的团队。他们是在模型质量成为商品之前认真对待架构的团队。

地板刚刚变了。大多数团队还没注意到。


相关笔记 ​

  • [[00-agent-overview]] - Agent 整体学习路线
  • [[10-权限与门卫]] - Claude Code 的四层权限模型详解
  • [[13-可观测性与调试]] - OpenTelemetry 集成实践
  • [[14-模型路由]] - Haiku/Sonnet/Opus 分级路由
  • [[09-安全沙箱]] - 沙箱与权限的配合

学习状态:🟡 开始学习

最后更新于:

Pager
上一篇26. OpenClaw 设计深度分析 - 为什么它让人觉得"活"了 / OpenClaw Design Analysis and the Illusion of Liveliness
下一篇28. LobeChat 设计深度分析 - 全栈 Agent Chat 应用工程实践 / LobeChat Design Analysis and Full-Stack Agent Chat Engineering

持续记录,持续成长

Copyright © Tidenflow