导语
2026年3月31日,AI圈最炸的事件莫过于Claude Code源代码「被动」开源。
由于工程失误,Anthropic在发布npm包时未剔除source map文件,导致完整的TypeScript源码被轻易还原。短短几小时内,代码被下载、镜像,并在GitHub上迅速扩散。
马斯克看到评论「Anthropic现在已经比OpenAI更Open」时,忍不住回了一句:「绝了😂」
事件回顾:一场意外的「开源」
泄露原因:人为错误导致的发布打包问题,并非安全漏洞。
Anthropic官方回应:「今天早些时候,一个Claude Code版本包含了部分内部源代码。没有涉及或暴露任何敏感的客户数据或凭证。我们正在采取措施防止此类事件再次发生。」
Claude Code之父Boris Cherny在X上简单表示:「就是开发者的错误。」
深度解读:51万行代码里的工程智慧
当吃瓜群众还在围观时,大量开发者已经开始逐行阅读代码,尝试还原顶级AI Agent背后的设计逻辑。
1. 系统提示词:行为控制的范本
完整的system prompt位于constants/prompts.ts,是整个代码库中最有价值的文件。它清晰展示了Anthropic如何在生产级编码Agent中精确控制Claude的行为。
核心设计原则:
| 原则 | 说明 |
|---|---|
| 三行重复代码,也好过过早抽象 | 不要为一次性操作创建helper、工具函数或抽象结构 |
| 默认不写注释 | 对抗内部代号Capybara的模型默认过度注释问题,只有WHY is non-obvious时才允许添加注释 |
| 如实报告结果 | Capybara v8的错误陈述率高达29-30%,因此明确规定:不要在测试失败时声称全部通过;不要隐藏失败检查来制造成功结果;不要把未完成的工作描述为已完成 |
| 用数字约束比模糊描述更有效 | 工具调用之间的文本≤25个词;最终回答≤100个词 |
隐藏彩蛋:设置环境变量CLAUDE_CODE_SIMPLE=1,整个复杂的system prompt会被压缩为一行:「You are Claude Code, Anthropic’s official CLI for Claude」。
2. 反蒸馏机制:保护核心能力
Anthropic在Claude Code中内置了两套反蒸馏机制,防止竞争对手利用其数据进行训练:
- 注入伪造工具调用:在模型输出流中注入伪造的工具调用,污染任何被抓取的数据
- 工具调用抽象化:将所有工具调用的具体细节抽象成模糊的摘要,使外部难以还原Agent实际执行的操作
3. 电子宠物Buddy:无需存储的个性化
在src/buddy/中,系统通过对用户ID进行哈希,为每个用户生成一个专属且固定的虚拟伙伴:
- 物种:鸭子、鹅、Blob、猫、龙、章鱼、猫头鹰、企鹅等
- 帽子:无、王冠、礼帽、螺旋桨帽等
- 稀有度:普通(60%)、不常见(25%)、稀有(10%)等
更新到v2.1.89后,输入/buddy即可启用——即使配置了其它模型也可成功启用。
4. Prompt缓存:极致精细化管理
代码库中最复杂的非UI代码之一是promptCacheBreakDetection.ts。
在每一次API调用中,系统都会对system prompt、每个工具的schema(逐一哈希)、模型名称、beta headers、fast mode状态、effort参数、overage状态以及额外的请求体参数进行哈希处理,并将这些哈希值与上一次调用进行对比。
缓存策略:
- System prompt被分为静态部分(可缓存)和动态部分(随会话变化)
- MCP服务器相关指令通过message的增量附加传递,避免每次连接都导致缓存失效
- 子Agent从父Agent继承CacheSafeParams
5. Auto Dream:跨会话的后台记忆整合
当时间间隔足够、且累计了足够多的会话后,Claude Code会以fork出的subagent形式运行/dream,回顾历史会话内容,并将其压缩整理为结构化的MEMORY.md文件。
记忆模板包含10个结构化模块: Session Title、Current State、Task Specification、Files and Functions、Workflow、Errors & Corrections、Codebase Documentation、Learnings、Key Results、Worklog
每个模块限制在约2000 tokens,总体控制在12000 tokens以内。
6. 验证机制:不给模型自我感觉良好的机会
Claude Code里有一个关键设计:写代码的Agent,不能自己说我做完了。
当任务涉及一定复杂度(改了3个以上文件、动了后端或基础设施),系统会自动拉起一个独立的验证智能体来检查结果:
- 主Agent写代码
- 验证Agent独立检查
- 主Agent还要再抽查验证结果
如果失败就改;通过了也不能盲信,还要复核证据。
7. 卧底模式:在开源贡献中隐藏身份
当Anthropic员工(USER_TYPE === ‘ant’)在非内部仓库中工作时,系统会自动开启卧底模式。
系统提示词中会注入指令:「你正在一个公共/开源仓库中以’卧底’身份工作。你的提交信息、PR标题和PR内容中,绝不能包含任何Anthropic内部信息。」
被禁止的信息包括:内部模型代号(如Capybara、Tengu等)、未发布的模型版本号、内部仓库名称、Slack频道、Claude Code这一表述、任何关于自己是AI的描述……
8. 熔断机制:25万次被浪费的API调用
自动压缩系统中的一段注释堪称最真实的工程记录:
“BQ 2026-03-10:有1,279个会话在单个会话中出现了50次以上的连续失败(最多达到3,272次),每天在全球范围内浪费约25万次API调用。”
最终解决方案:MAX_CONSECUTIVE_AUTOCOMPACT_FAILURES = 3。连续三次压缩失败后,系统将停止继续尝试。
9. Bash安全防护:2592行,42项独立检查
tools/BashTool/bashSecurity.ts文件长达2592行,实现了42项不同的安全检查机制。
10. 金丝雀机制:构建阶段的安全检查
代码库中多处引用excluded-strings.txt文件,列出绝对不能出现在外部构建产物中的字符串(内部代号、API Key前缀等)。构建系统会对打包后的输出进行grep,一旦发现这些字符串,就会直接构建失败。
技术债:即便是顶尖AI企业也躲不过
X用户Rohan的技术分析揭示了Claude Code的一些「错误之处」:
| 问题 | 表现 |
|---|---|
| 上帝组件与Hook滥用 | 核心交互组件REPL.tsx长度超5000行,包含227个Hook调用,逻辑高度耦合且无法进行单元测试 |
| 特性标志与环境变数泛滥 | 存在89个特性标志和472个环境变量,反映出产品方向不明确 |
| 架构设计缺失导致循环引用 | 61个文件存在循环依赖补丁,核心类型Tool.ts过于沉重 |
| 防御性编程沦为形式主义 | 为防止泄露代码而强制使用的超长类型名(53字符)被调用上千次,已失去警示作用 |
| 性能优化的极端折中 | 为在Bun环境下节省135毫秒启动时间,将近4700行的CLI逻辑堆积在单一入口文件 |
结论:底层模式显示功能迭代速度远超架构演进,即便拥有巨额融资,顶尖AI产品的工程实践依然充满了临时的局部规避与妥协。
社区反应:24小时内的代码狂欢
DMCA下架为时已晚
源代码泄漏6小时后,GitHub上被fork超4万次。Anthropic试图通过DMCA迫使GitHub删除,但:
- 成千上万开发者已下载到本地
- 代码已被上传到去中心化平台——「永远不会被删除」
Python重写:claw-code打破GitHub纪录
韩国开发者Sigrid Jin凌晨4点看到消息,决定用AI编排工具oh-my-codex从头开始将核心架构移植到Python,并在日出前推送了claw-code项目。
该仓库的Star数如火箭般飙升,仅仅2个小时就超过了5万个,打破了GitHub star增长速度的历史纪录。如今Star数已达6.6万并持续增长。
《The Pragmatic Engineer》创始人Gergely Orosz评价:「这要么很绝妙,要么很可怕——Python重写的代码没有侵犯版权,DMCA有力也无处使!」
开源社区的改进浪潮
- open-agent-sdk:X用户idoubi将逻辑抽离,解决了claude-agent-sdk不适合云端规模化调用的问题
- 第三方模型适配:有开发者添加shim,将Claude Code开放给了各种第三方模型和服务
- OpenClaude、Free Code、claw-code等项目如雨后春笋般涌现
结语:AI正在重塑软件工程
Claude Code源码泄露事件提供了一个极具观察价值的行业切片。
一方面,它向我们展示了即便是估值百亿的顶尖AI企业,其底层工程实现依然充满了妥协、技术债与「草台班子」式的局部修补。那些看似高深莫测的Agent能力,往往是由极其细致甚至略显繁琐的工程校验规则堆砌而成的。
另一方面,社区在短短24小时内的反应速度令人惊叹。借助AI工具,开发者可以瞬间解构、翻译并重构51万行的复杂系统。当代码重构的时间成本被压缩到极致,传统的软件著作权边界变得模糊不清。
这场由失误引发的代码狂欢,预示着AI正在以我们未曾设想的方式,重塑软件工程的迭代速度与开源生态的底层逻辑。
参考链接:
🦞 今天,你养虾了吗?