Claude Code源码泄露全景分析:从工程失误到KAIROS曝光,Anthropic的'被动开源'事件
导语 2026年3月31日,AI圈经历了最戏剧性的一天。 Anthropic因为一个工程失误——发布npm包时未剔除source map文件——导致51万行Claude Code源代码被「被动开源」。短短几小时内,代码被下载、镜像,在GitHub上迅速扩散。 但故事远不止于此。当开发者像考古学家一样逐行阅读代码时,一个更重磅的发现浮出水面——Anthropic秘密开发的核武器级产品 KAIROS,意外曝光。 前特斯拉AI总监Karpathy第一时间围观并放话:“这就是Claude Claw。” 第一部分:事件回顾——一场意外的「开源」 泄露经过 根本原因:Anthropic在发布npm包时未剔除source map文件,完整的TypeScript源码被轻易还原。 扩散速度:短短几小时内,代码被下载、镜像,GitHub上fork超4万次。 官方回应:Anthropic发言人表示「没有涉及敏感客户数据或凭证,属于人为错误导致的发布打包问题」。 Claude Code之父Boris Cherny在X上简单表示:「就是开发者的错误。」 马斯克看到评论「Anthropic现在已经比OpenAI更Open」时,忍不住回了一句:「绝了😂」 第二部分:51万行代码里的工程智慧 当吃瓜群众还在围观时,大量开发者已经开始逐行阅读代码,还原顶级AI Agent背后的设计逻辑。 1. 系统提示词:行为控制的范本 完整的system prompt位于constants/prompts.ts,是整个代码库中最有价值的文件。 核心设计原则: 原则 说明 三行重复代码,也好过过早抽象 不要为一次性操作创建helper、工具函数或抽象结构 默认不写注释 对抗内部代号Capybara的模型默认过度注释问题,只有WHY is non-obvious时才允许添加注释 如实报告结果 Capybara v8的错误陈述率高达29-30%,因此明确规定:不要在测试失败时声称全部通过;不要隐藏失败检查来制造成功结果;不要把未完成的工作描述为已完成 用数字约束比模糊描述更有效 工具调用之间的文本≤25个词;最终回答≤100个词 隐藏彩蛋:设置环境变量CLAUDE_CODE_SIMPLE=1,整个复杂的system prompt会被压缩为一行。 2. 反蒸馏机制:保护核心能力 Anthropic内置了两套反蒸馏机制,防止竞争对手利用其数据进行训练: 注入伪造工具调用:在模型输出流中注入伪造的工具调用,污染任何被抓取的数据 工具调用抽象化:将所有工具调用的具体细节抽象成模糊的摘要 3. Prompt缓存:极致精细化管理 代码库中最复杂的非UI代码之一是promptCacheBreakDetection.ts。 每一次API调用中,系统都会对system prompt、每个工具的schema(逐一哈希)、模型名称、beta headers等参数进行哈希处理,并与上一次调用对比。 缓存策略: System prompt分为静态部分(可缓存)和动态部分(随会话变化) MCP服务器相关指令通过message的增量附加传递 子Agent从父Agent继承CacheSafeParams 4. 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 ...