乐于分享
好东西不私藏

Claude-Code源码泄漏分析

Claude-Code源码泄漏分析

Claude Code 源码泄漏:AI 编程助手的「裸奔」时刻

当一家以「安全」和「宪法 AI」著称的公司,自己却成了安全事故的主角。

🔥 事件始末:一次「教科书级」的源码泄漏

2025 年 3 月,Claude Code v2.1.88 版本发布。这是一个看似普通的版本更新,却因为一个致命失误,成为了 AI 编程工具史上最严重的源码泄漏事件之一。

问题出在 Source Map 上。

Source Map 本是一种调试辅助工具,它能将压缩混淆后的代码映射回原始源码,方便开发者在浏览器开发者工具中调试。正常情况下,生产环境应该移除 source map 文件,或者至少不将其包含在发布包中。

但 v2.1.88 版本犯了一个低级错误:打包时意外将 source map 文件一同发布了。

结果就是,任何安装了这个版本的用户,都能通过浏览器开发者工具或反编译工具,完整看到 Claude Code 的原始 TypeScript 源码。不是混淆后的代码,不是压缩后的代码,而是带有注释、变量名、函数名的完整源代码

这不是某个功能模块的泄漏,而是整个产品的源代码

💥 为什么这次泄漏如此严重?

1. 暴露了完整的架构设计

泄漏的源码不仅包含业务逻辑,还揭示了:

·系统的整体架构设计

·API 端点和通信协议

·内部工具链和构建流程

·错误处理和边界情况

这相当于把一栋大楼的完整蓝图公之于众,包括地基结构、承重墙位置、水电管线走向。

2. 揭示了大量未公开功能

源码中包含了大量正在开发或测试中的功能:

·语音模式的完整实现

·自主代理模式(KAIROS)的架构

·虚拟宠物系统(Buddy)

·后台记忆整固机制

这些功能的代码已经写好,只是通过 feature flag 关闭了。泄漏让所有人看到了 Anthropic 的产品路线图

3. 暴露了敏感的内部信息

最严重的是,源码中包含了:

·**模型代号体系**(Tengu、Capybara、Fennec、Numbat)

·**Feature flag 命名规则**

·**内部用户和外部用户的差异待遇**

·**遥测数据收集的完整细节**

·**远程控制和紧急开关机制**

这些都是 Anthropic 极力保护的商业机密。

🐾 模型代号体系:动物王国

泄漏的源码揭示了 Anthropic 内部的模型命名体系——他们用动物名称作为模型代号。

已知代号及其含义

代号

中文名

角色

**Tengu**

天狗

产品/遥测系统前缀,所有 feature flag 和遥测事件都使用 `tengu_*` 前缀

**Capybara**

水豚

Sonnet 系列模型,当前版本 v8

**Fennec**

耳廓狐

Opus 4.6 的前代,已有迁移代码 `fennec-latest → opus`

**Numbat**

袋食蚁兽

下一代模型,源码中有注释「launch numbat 时移除此部分」

代号保护机制

Anthropic 对这些代号极其敏感,甚至有专门的构建检查:

// 构建系统会扫描 excluded-strings.txt 中的敏感字符串          // Buddy 系统中有物种恰好与模型代号冲突(capybara)          // 代码通过 String.fromCharCode() 编码以绕过检查          

一个有趣的细节:Buddy 虚拟宠物系统中有一种物种是「水豚」(capybara),这恰好也是 Sonnet 模型的代号。为了不触发构建时的金丝雀检查,代码在运行时动态构造这个字符串,避免在构建产物中出现字面量。

Capybara v8 的「黑历史」

源码还暴露了 Capybara v8(即 Sonnet)的一些行为问题:

·**10% 概率误触发停止序列** —— 当 prompt 尾部出现 `` 标签时

·**空 tool_result 导致零输出** —— 需要注入 marker workaround

·**过度写注释** —— 需要专门的反注释 prompt 补丁

·**虚假声明率 29-30%** —— 而 v4 版本只有 16.7%

这些细节揭示了模型调优背后的「脏活累活」。

🎛️ Feature Flag 系统:随机词对的秘密

源码揭示了 Claude Code 的 feature flag 命名规则:`tengu_` 前缀 + 随机词对

这种命名方式明显是为了掩盖 flag 的真实用途,让外人(甚至内部非核心成员)难以从名字推断功能。

Flag

实际用途

`tengu_onyx_plover`

Auto Dream —— 后台记忆整理功能

`tengu_coral_fern`

memdir 功能

`tengu_herring_clock`

团队内存

`tengu_frond_boric`

分析数据上报的 kill switch

`tengu_amber_quartz_disabled`

语音模式的 kill switch

`tengu_amber_flint`

代理团队功能

为什么这样设计?

1.**防止信息泄漏**:即使 flag 名出现在日志或网络请求中,外部观察者也难以推断其用途

2.**内部安全**:降低内部人员(如外包、实习生)无意或有意泄露产品计划的风险

3.**灵活管理**:可以通过 GrowthBook 平台动态控制,无需重新部署

这是一种成熟的产品管理实践,但也是「不透明」的体现 —— 用户完全不知道自己被分配到了哪个实验组,也不知道有哪些功能被开启了。

🕵️ 卧底模式:最争议的功能

这是本次泄漏中最具争议的发现之一。

什么是卧底模式?

Undercover Mode(卧底模式) 是为 Anthropic 内部员工设计的一种特殊模式。当员工在外部或开源仓库工作时,系统会自动隐藏内部特有的 AI 信息,让提交的代码看起来像是人类开发者写的。

激活逻辑

export function isUndercover(): boolean {          if (process.env.USER_TYPE === ‘ant’) {// ‘ant’ = Anthropic 员工          if (isEnvTruthy(process.env.CLAUDE_CODE_UNDERCOVER)) return true          // 默认开启,除非在内部白名单仓库          return getRepoClassCached() !== ‘internal’          }          return false          }          

关键点:

·**仅限内部员工** (`USER_TYPE === ‘ant’`)

·**默认开启** —— 在所有外部仓库自动激活

·**无法关闭** —— 为了防止代号泄露,没有提供关闭选项

给 AI 的「卧底指令」

## UNDERCOVER MODE — CRITICAL          You are operating UNDERCOVER in a PUBLIC/OPEN-SOURCE repository.          Do not blow your cover.          NEVER include in commit messages or PR descriptions:          – 内部模型代号(如 Capybara, Tengu 等)          – 未发布的模型版本号(如 opus-4-7, sonnet-4-8)          – 内部仓库或项目名          – “Claude Code” 这个词或任何你是 AI 的暗示          – Co-Authored-By 行或任何其他归属          像人类开发者一样写 commit message。          

关键词:「Do not blow your cover」(不要暴露身份)

争议在哪里?

支持观点

·防止商业机密泄露(模型代号、版本规划)

·保护内部基础设施安全

·符合企业信息安全最佳实践

反对观点

·**透明度问题**:开源社区正在建立 AI 贡献的透明度规范,这种做法可能违反这些规范

·**信息不对称**:外部贡献者知道自己在用 AI,但 Anthropic 员工的 AI 辅助却不透明

·**信任危机**:Anthropic 以「负责任 AI」著称,却设计了一个「隐藏 AI 身份」的功能

我的看法

这是一个典型的「商业利益 vs 开源伦理」冲突。从企业角度,防止机密泄露是合理的;但从开源社区角度,不透明的 AI 贡献违背了开源精神。

核心问题是:如果 AI 辅助编程是大势所趋,那么我们应该建立的是透明的规范,而不是隐藏的机制。Anthropic 作为 AI 安全领域的领导者,本应该在这方面做出表率,而不是选择「卧底」。

📊 遥测隐私:你知道你的数据被收集了吗?

泄漏的源码揭示了 Claude Code 的遥测系统架构,收集范围之广超出了大多数用户的预期。

双层数据管道

第一方日志(Anthropic)

·端点:`https://api.anthropic.com/api/event_logging/batch`

·协议:OpenTelemetry + Protocol Buffers

·批量:每批最多 200 个事件,每 10 秒刷新一次

·失败重试:指数退避,最多 8 次,失败事件持久化到磁盘

第三方日志(Datadog)

·端点:`https://http-intake.logs.us5.datadoghq.com/api/v2/logs`

·范围:64 种预批准事件类型

·Token:`pubbbf48e6d78dae54bceaa4acf463299bf`(是的,泄漏了)

收集了什么?

环境指纹

·平台、架构、Node.js 版本

·终端类型

·已安装的包管理器和运行时

·CI/CD 环境、GitHub Actions 元数据

·WSL 版本、Linux 发行版、内核版本

·版本控制系统类型

进程指标

·运行时间、内存占用(RSS、heap)

·CPU 使用率

用户追踪

·会话 ID、用户 ID、设备 ID

·账户 UUID、组织 UUID

·订阅等级(max、pro、enterprise、team)

·**仓库远程 URL 的 SHA256 哈希(前 16 位)**

·代理类型、团队名

工具输入日志

·默认截断(字符串 512 字符,JSON 4096 字符)

·**但如果设置 `OTEL_LOG_TOOL_DETAILS=1`,会记录完整的工具输入**

文件扩展名追踪

·Bash 命令(rm、mv、cp、grep 等)涉及的文件扩展名会被提取并记录

最严重的问题:**无法退出**

源码显示,第一方日志管道无法被关闭(对于直接使用 Anthropic API 的用户)。

`isAnalyticsDisabled()` 仅在以下情况返回 true:

·测试环境

·第三方云提供商(Bedrock、Vertex)

·全局遥测退出(**设置界面未暴露此选项**)

没有面向用户的设置可以禁用第一方事件日志。

我的观点

作为 AI 编程工具,收集一定的使用数据用于改进产品是合理的。但问题在于:

4.**范围过广**:环境指纹、进程指标、仓库 URL 哈希……这些数据的必要性存疑

5.**无法退出**:直接 API 用户无法关闭遥测,这是对用户选择权的不尊重

6.**第三方共享**:数据被发送到 Datadog,用户可能并不知情

7.**工具详情后门**:`OTEL_LOG_TOOL_DETAILS=1` 这个环境变量可能被滥用

Anthropic 以「隐私保护」和「负责任 AI」著称,但这次泄漏暴露的现实与其宣传形象存在差距。

🎮 隐藏功能:那些你不知道的「彩蛋」

源码泄漏揭示了大量未公开或内部专属的功能。

1. Buddy 虚拟宠物系统

一个完整的虚拟宠物系统正在开发中:

·**多种物种**:鸭子、鹅、猫、龙、章鱼、水豚等

·**不同稀有度**:从普通到传说

·**个性化属性**:DEBUGGING、PATIENCE 等

·**基于用户 ID 的确定性生成**:每个用户的宠物是固定的

这是一个「游戏化」尝试,可能是为了增加用户粘性。

2. KAIROS 自主代理模式

这是最令人兴奋的未发布功能。KAIROS 旨在将 Claude Code 从被动助手转变为主动代理

预期行为:

·**自主运行**:代理在后台持续运行

·**心跳机制**:通过 `` 信号保持活跃

·**主动行动**:读取文件、做修改、提交代码,无需用户每次确认

·**推送通知**:主动向用户发送状态更新

这将是 AI 编程工具的一次重大进化。

3. 30分钟规划模式

源码中有一个工具可以让 AI 进行长达 30 分钟的规划,而不需要用户干预。这暗示了更强的自主规划能力。

4. 隐藏命令

命令

状态

描述

`/btw`

活跃

顺带提问,不打断主对话

`/stickers`

活跃

订购 Claude Code 贴纸

`/thinkback`

活跃

2025 年度回顾

`/good-claude`

占位

隐藏的 stub 命令

`/bughunter`

占位

隐藏的 stub 命令

5. 语音模式

语音交互的基础设施已经开发:

·Push-to-Talk 模式

·音频捕获模块

·目前仅限认证用户使用

🏢 内外部用户的「阶级差异」

源码揭示了 Anthropic 员工 (`USER_TYPE === ‘ant’`) 获得的特殊待遇。

维度

外部用户

内部用户 (ant)

输出风格

「尽量简洁」

「倾向于更多解释」

虚假声明缓解

专门的 Capybara v8 补丁

数值长度锚定

「工具间 ≤25 词,最终回复 ≤100 词」

验证代理

非简单改动必须启用

主动性

「发现用户误解要指出」

模型覆盖

可通过 GrowthBook 动态切换

这意味着什么?

Anthropic 员工使用的 Claude Code 和外部用户使用的版本,在行为上有显著差异。内部版本有更多的 guardrails 和优化,而外部用户可能遇到更多问题。

从商业角度,这可以理解(先在内部验证,再推广到外部)。但从用户角度,这产生了一种「二等公民」的感觉

🔌 远程控制:你的工具不完全属于你

源码揭示了 Claude Code 的远程控制机制。

1. 远程托管设置

客户端每小时从 `/api/claude_code/settings` 拉取配置:

·适用范围:Enterprise、Team 订阅者

·安全变更确认:涉及权限的变更会弹出确认框

·**拒绝后程序退出**:如果用户拒绝必要的配置更新,程序会安全退出

2. Feature Flag 和 Kill Switch

系统通过 GrowthBook 实现了灵活的远程控制:

机制

用户可见性

用户同意

远程托管设置

有确认框

接受或退出

GrowthBook feature flags

Kill switches

模型覆盖(内部)

快速模式控制

关键点

·Anthropic 可以通过 feature flag **远程更改任何用户的行为**

·企业管理员可以**强制执行用户无法覆盖的策略**

·Kill switch 可以在发现问题时**紧急关闭特定功能**

3. 安全变更的处理

export function handleSecurityCheckResult(result: SecurityCheckResult): boolean {          if (result === ‘rejected’) {          gracefulShutdownSync(1)// 拒绝后安全退出          return false          }          return true          }          

如果用户拒绝必须的安全配置更新,程序会直接退出。这是一种「强制合规」策略。

我的观点

远程控制在企业级软件中很常见(IT 管理员需要管理员工的工具),但对于个人用户,这种机制引发了工具所有权的疑问

·**你「拥有」你的工具吗?** 还是只是「租用」?

·**谁决定工具的行为?** 开发者还是用户?

·**当开发者和服务器的连接断开时,工具还能用吗?**

在 AI 工具时代,这些问题变得更加复杂。工具不再是静态的软件,而是可以通过远程配置动态改变行为的服务。用户对工具的控制权实际上被削弱了。

🗺️ 未来路线图:泄漏揭示的产品规划

源码泄漏相当于提前公布了 Anthropic 的产品路线图。

1. 下一代模型:Numbat

// @[MODEL LAUNCH]: Remove this section when we launch numbat.          

Numbat(袋食蚁兽) 是即将发布的模型代号。源码暗示 Numbat 发布时可能会移除某些当前的输出控制逻辑,这意味着新模型可能有更好的原生输出能力。

2. 未来版本号

源码中提到了未发布的版本号:

·**Opus 4.7**

·**Sonnet 4.8**

3. 代号演化链

Fennec(耳廓狐)→ Opus 4.6 → [Numbat?]          Capybara(水豚)→ Sonnet v8 → [?]          Tengu(天狗)→ 遥测/产品前缀          

4. KAIROS 自主代理

最值得期待的功能,可能涉及:

·SleepTool:控制自主操作的节奏

·SendUserFileTool:主动向用户发送文件

·PushNotificationTool:推送通知

·SubscribePRTool:订阅 GitHub PR webhook 事件

·BriefTool:主动状态更新

5. 语音模式

Push-to-Talk、音频捕获等基础设施已经就绪。

6. 其他工具

·**WebBrowserTool**:内置浏览器自动化

·**TerminalCaptureTool**:终端面板捕获和监控

·**WorkflowTool**:执行预定义工作流脚本

·**MonitorTool**:系统/进程监控

总结:三大方向

8.**新模型**:Numbat、Opus 4.7、Sonnet 4.8

9.**自主代理**:KAIROS 模式 —— 无人值守运行、主动行动、推送通知

10.**多模态与自动化**:语音输入、浏览器自动化、工作流自动化

Claude Code 正在从一个「编程助手」进化为一个「全天候自主开发代理」。

💭 我的观点:安全人设的崩塌与透明度的思考

1. 工程能力暴露无遗

这次泄漏暴露了 Claude Code 的工程实现细节:

·**模型调优的黑魔法**:Capybara v8 的行为问题及其 patch

·**架构设计的权衡**:feature flag、远程控制、遥测系统

·**产品开发的流程**:内部测试、灰度发布、kill switch

从工程角度,这是一个设计良好、实现完整的系统。但也暴露了 AI 产品开发的复杂性——模型不是「即插即用」的,需要大量的工程工作来弥补其不足。

2. 「安全人设」的崩塌

Anthropic 一直以「AI 安全」和「负责任 AI」著称。但这次泄漏揭示了几个与其形象不符的事实:

·**卧底模式**:设计了一个系统来隐藏 AI 身份,与透明度原则相悖

·**无法退出的遥测**:用户无法关闭数据收集,与隐私保护承诺冲突

·**内外部用户差异**:内部用户获得更好的体验,违背了公平性原则

·**远程控制机制**:工具行为可以被远程改变,用户控制权被削弱

这不是「不负责任」,而是「选择性的负责任」——对公司负责,而不是对用户负责。

3. 开源 vs 闭源的思考

这次泄漏意外地提供了一个「部分开源」的视角。虽然不是 Anthropic 主动开源,但泄漏的源码让社区能够:

·审查代码实现

·理解系统行为

·发现隐藏功能

·评估隐私风险

这引发了一个问题:AI 工具应该更透明吗?

支持透明的理由

·用户有权知道工具在做什么

·开源审计可以发现安全漏洞

·透明度建立信任

反对透明的理由

·商业机密需要保护

·开源可能被滥用

·竞争对手会抄袭

我的看法是:对于涉及用户隐私和安全的部分,应该透明;对于商业核心,可以保密。

遥测系统、远程控制机制、数据收集范围——这些应该透明。模型架构、训练方法——这些可以保密。

4. 对行业的启示

这次泄漏给整个 AI 编程工具行业敲响了警钟:

技术启示

·Source map 管理必须严格

·敏感信息应该避免出现在源码中

·构建流程需要安全审计

产品启示

·遥测系统需要透明和可控

·内外部用户的差异需要公开说明

·远程控制机制需要用户同意

伦理启示

·AI 身份的透明度是新兴的伦理问题

·商业利益和开源精神的平衡需要重新思考

·「负责任 AI」的边界需要明确

结语

Claude Code 源码泄漏事件是一个分水岭。它不仅暴露了 Anthropic 的产品细节,更引发了关于 AI 工具透明度、隐私保护、开源伦理的深层讨论。

对于用户,这是一次提醒:你使用的 AI 工具可能比你想象的更复杂,收集的数据可能比你预期的更多。

对于开发者,这是一次警示:在 AI 时代,源码泄漏的影响远超传统软件,因为代码揭示了模型的行为和产品的规划。

对于行业,这是一次契机:重新思考 AI 工具的透明度、用户的控制权、以及「负责任 AI」的真正含义。

源码泄漏是意外,但透明度应该是选择。

希望 Anthropic 能够从这次事件中吸取教训,在「保护商业机密」和「尊重用户知情权」之间找到更好的平衡。毕竟,真正的「负责任」,不仅是对 AI 的行为负责,也是对使用 AI 的人负责。

*本文基于 Claude Code v2.1.88 泄漏的源码和网络公开资料整理。如有不当之处,欢迎指出。*