Claude Code 源码泄露:51.2 万行 TypeScript 揭示的 Agent 架构真相
> 来源: Sebastian Raschka (@rasbt)
> 分析: Latent.Space / David Borish
> 泄露日期: 2026-03-31
> 代码量: ~512,000 行 TypeScript, ~1,900 文件
> 研究时间: 2026-04-01
🎯 一句话版本
Claude Code 的完整 TypeScript 源码因 npm 包意外包含 source map 文件泄露。51.2 万行代码揭示了一个关键事实——Claude Code 比 web UI 强不是因为更好的模型或 prompt,而是因为围绕模型的工程 harness:仓库上下文注入、KV cache 复用的免费并行子 Agent、三层记忆系统、五种 Compaction 策略。
💥 怎么泄露的
不是黑客,是配置错误。
Bun runtime 默认生成 .map source map 文件(调试用),团队忘了在 .npmignore 中排除。任何人从 npm 包里就能下载完整未混淆源码——直接从 Anthropic 的 R2 存储桶获取。
讽刺的是,代码里有一个 "Undercover Mode"——专门防止 Claude Code 在公开仓库的 commit 里泄露内部代号(Capybara、Tengu 等)。防住了模型泄密,没防住工程师忘记 .npmignore。
这是第二次了。 2025 年初有过同样的泄露,修过了,然后又犯了。
🏗️ 架构六大发现(rasbt 总结)
1. 仓库状态注入上下文
Claude Code 把 recent commits、git branch info、项目结构 自动注入到每次对话的上下文里。这就是为什么它"理解你的项目"——不是魔法,是工程。
2. 激进的 KV Cache 复用
这是最大的成本秘密。API 的 prompt cache 被充分利用——重复内容不重新计算。
3. 自定义 Grep/Glob/LSP
内建的代码搜索和语言服务协议集成——不是让模型自己用 bash grep,而是有专门的高效工具。
4. 文件读取去重 + 工具结果采样
同一文件不会被重复读取;工具输出被采样而不是全部塞入 context。
5. 三层记忆系统
Layer 1: MEMORY.md — 索引,指向其他知识文件
Layer 2: Topic files — 按需加载的主题知识
Layer 3: Session transcripts — 可搜索的完整会话记录
还有 "autoDream" 模式——agent "睡眠"时合并记忆、去重、修剪、去除矛盾。
6. 子 Agent 三种模式 ⭐
| 模式 | 机制 | 特点 |
|---|---|---|
| **Fork** | 字节级复制父 context,命中 KV cache | **并行几乎免费** |
| **Teammate** | 文件 mailbox 跨终端通信 | 独立工作空间 |
| **Worktree** | 每个 agent 独立 git branch | 代码隔离 |
Fork 模式是杀手锏——因为子 agent 共享父 context 的 KV cache,跑 5 个子 agent 的 API 成本和跑 1 个差不多。
📊 代码内部细节
工具系统(~40 个工具,默认开启 <20 个)
AgentTool, BashTool, FileReadTool, FileEditTool, FileWriteTool,
NotebookEditTool, WebFetchTool, WebSearchTool, TodoWriteTool,
TaskStopTool, TaskOutputTool, AskUserQuestionTool, SkillTool,
EnterPlanModeTool, ExitPlanModeV2Tool, SendMessageTool, BriefTool,
ListMcpResourcesTool, ReadMcpResourceTool
只读操作并发执行,变更操作串行执行——简单但有效的并发控制。
CLAUDE.md 处理
- 每次查询迭代都重读(不只是 session 启动时)
- 层级:全局
~/.claude/CLAUDE.md→ 项目级 →.claude/rules/*.md→ gitignored 本地笔记 - 字符上限:40,000
Hook 系统
25+ 生命周期事件,5 种 hook 类型(shell / LLM 注入 / agent 验证 / HTTP webhook / JS 函数)。这是一个 Anthropic 没有大力宣传的扩展 API。
五种 Compaction 策略
| 策略 | 说明 |
|---|---|
| 时间清理 | 清除旧的工具结果 |
| 对话摘要 | 压缩对话历史 |
| Memory 提取 | 提取任务规格、文件列表、错误、工作流状态 |
| 全历史摘要 | 整体压缩 |
| 最旧截断 | 丢弃最早的消息 |
权限系统
5 级设置级联 + "auto" 模式:LLM 分类器判断每个操作,多个 resolver 并行竞赛审批。
🐣 有趣发现
| 内容 | 说明 |
|---|---|
| **Buddy 系统** | Tamagotchi 风格的电子宠物——物种稀有度、闪光变体、程序生成属性、模型写的"灵魂描述" |
| **ULTRAPLAN** | 未发布的内部规划系统 |
| **KAIROS** | 未发布的内部项目 |
| **MAGIC DOCS** | 内部文档系统 |
| **Claude Mythos** | 未发布模型——计算密集型推理,面向企业安全 |
| **员工 TUI** | 员工专用终端界面 |
| **/buddy** | 4月1日愚人节彩蛋 |
⚠️ 安全后果
- 攻击者注册了恶意 npm 包(
color-diff-napi、modifiers-napi)针对尝试编译泄露代码的人 - Anthropic 通过 DMCA 删除请求清理 GitHub fork
- 泄露前已有 fork 获得 32.6k stars / 44.3k forks
- 有人用 Codex 把 TypeScript 转成了 Python 版
💡 与我们的关联
1. 验证了我们一直在做的事
Claude Code 的记忆系统(MEMORY.md + topic files)、CLAUDE.md 的层级设计——和 OpenClaw 的 AGENTS.md / SOUL.md / MEMORY.md 模式几乎一模一样。我们的 workspace-based 方法被 Anthropic 自己的旗舰产品验证了。
2. Fork 子 Agent 模式值得学习
OpenClaw 的 sessions_spawn 对应 Claude Code 的子 agent 系统。但 Claude Code 的 fork 模式利用 KV cache 做到了"并行免费"——这是架构层面的优势。
3. Compaction 策略
我们之前研究的 ACON / SUPO 都在做上下文压缩——Claude Code 内部用了 5 种策略的组合。这是工程化而非学术化的解法。
4. 40,000 字符的 CLAUDE.md
大多数用户只用了很小一部分——这和我们的 AGENTS.md 使用情况类似。空间足够但内容密度是关键。
5. "不是模型,是 harness"
rasbt 的核心结论和 Meta-Harness 论文的观点完全一致——模型性能的差异更多来自编排代码而非模型本身。Anthropic 自己的产品证明了这一点。
📊 评分
| 维度 | 评分(/10) |
|---|---|
| 信息价值 | 10.0 — 51.2 万行源码的直接分析,无比真实 |
| 技术深度 | 9.5 — 完整的 agent 架构、记忆系统、并发模型 |
| 影响力 | 9.5 — AI 行业年度事件级别的泄露 |
| 实用性 | 9.0 — 直接可以借鉴的架构模式和工程实践 |
| 与我们的相关度 | 9.5 — 验证了 OpenClaw 的方法论,子 agent 和记忆系统直接相关 |
| **综合** | **9.5** |
报告由深度研究助手自动生成 | 2026-04-01
来源: rasbt 推文 / Latent.Space / David Borish 分析