这是一个近期在技术社区(如 GitHub、Reddit 和 X)引起轰动的时间。该事件发生于 2026年3月31日,主要是由于 Anthropic 在发布其官方命令行工具 Claude Code 的 npm 安装包时,意外包含了完整的 Source Map(.map 文件)
![图片[1]-Claude Code 源码泄露事件与分析-华盟网](https://www.77169.net/wp-content/uploads/2026/03/image-14-1024x495.png)
1. 泄露原因:低级打包错误
- Source Map 泄露:在现代前端/Node.js开发中,
.map文件用于将混淆后的代码映射回原始源代码以便调试。Anthropic 在发布claude-codev2.1.88 版本时,忘记在生产构建中禁用它。 - 代码暴露:通过这个约 60MB 的
cli.js.map文件,任何人都可以完美还原出整个项目的 TypeScript 源代码。 - 规模:泄露包含了约 1,900 个源文件,总计超过 51 万行代码。
2. 泄露了什么?(并非“核心大脑”)
需要明确的是,这次泄露的是 客户端 CLI 工具(Frontend/Wrapper) 的代码,而不是 Claude 模型的权重(Weights)或后端服务器代码。
- 内部架构:泄露揭示了 Claude Code 如何处理文件系统、如何与 Anthropic API 交互、内部的遥测(Telemetry)逻辑以及多进程通信协议。
- 系统提示词(System Prompts):代码中硬编码了大量用于引导 Claude 进行代码编辑、测试和 Git 管理的复杂 Prompt。
- 技术栈:确认了该工具基于 Bun 运行时,并使用了 React + Ink 来构建终端 UI。
3. 意外发现的“金矿”
开发者在分析源码时,发现了一些 Anthropic 尚未公开的秘密:
- 新模型代号:代码中提到了名为 “Capybara”(水豚) 的新模型系列,包括
capybara-fast等版本,并有注释提到这些模型在处理虚假陈述(幻觉)方面的改进。 - 情绪监控:源码显示系统会记录用户是否对 Claude 爆粗口(使用辱骂性词汇),以此作为衡量用户挫败感(Frustration)的遥测指标。
- 隐藏功能:发现了一个名为
/buddy的内置“电子宠物”系统,包含 18 种生物(如鸭子、龙、水豚等),甚至有稀有度等级和属性系统(如“混沌值”、“智慧值”)。 - 未来型号:代码中还出现了关于更高阶模型 Claude Mythos 的相关引用(与此前 3 月 26 日发生的 CMS 营销素材泄露事件相吻合)。
4. 影响与现状
- 安全风险:安全研究人员(如 Fuzzland 的 Chaofan Shou)指出,源码透明化使得攻击者更容易发现 RCE(远程代码执行)漏洞。此前已有报告指出,恶意的项目配置文件(
.claude/settings.json)可能被利用。 - 覆水难收:尽管 Anthropic 迅速撤回了包含 map 文件的 npm 包,但源码已被克隆并在 GitHub 上广泛传播(如
claude-code-source-code-deobfuscation项目)。 - 讽刺意味:社区调侃称,作为一个旨在帮助程序员写代码的 AI 工具,Claude Code 却以这种方式实现了“被动开源”。
💡 总结: 这是一次典型的供应链配置错误。虽然它没有暴露 Claude 的核心模型算法,但它让外界彻底看清了 Anthropic 顶级工程团队在构建复杂 AI Agent 时的内部实现细节。
说一句,华盟君已经下载了,如果有需要研究的可以问我。
针对 Claude Code 源码泄露后的软件架构分析,技术社区(尤其是逆向工程和安全圈)已经对其进行了深度拆解。这次泄露像是一本“AI Agent 工程实践教科书”,揭示了 Anthropic 是如何解决大模型在本地运行时的可靠性问题的。
1. 架构核心:状态机与事件驱动
Claude Code 并非简单的脚本,它是一个复杂的有状态终端应用。
- React + Ink 渲染层:它使用 React 框架配合 Ink 库来管理 CLI 的 UI 状态。这意味着终端里的每一个进度条、气泡对话框都是通过组件化管理的。
- 多进程模型:它将“模型交互”与“本地执行”分离。主进程负责与 Anthropic 后端通信,而子进程(Worker)负责执行 Git 命令、文件读写和测试运行,以防止阻塞 UI。
2. 核心逻辑:控制环(Control Loop)
源码揭示了 Claude 如何决定何时“思考”以及何时“动手”:
- Tool Use 决策树:代码中包含一套严密的逻辑来处理 Tool Use。当模型返回一个
call_tool指令时,本地代码会进行预校验(Pre-validation),防止模型生成格式错误的路径或不存在的命令。 - 上下文管理:它使用了一种极其高效的**滑动窗口(Sliding Window)**策略。源码显示,它会自动修剪历史对话,优先保留当前项目的
.gitignore、目录结构树以及最近的错误日志,以节省 Token 并保持逻辑连贯。
3. 安全与权限防护(Sandbox Simulation)
尽管它运行在用户本地,但代码中显示了大量的安全策略:
- 双重确认机制:对于
rm -rf或涉及系统修改的危险操作,源码中有一套专门的风险评级系统。 - 命令劫持防范:为了防止 Prompt Injection(提示词注入)导致模型执行恶意命令,Claude Code 会对模型输出的 Shell 命令进行敏感词扫描和转义处理。
4. 独特的遥测与诊断(Telemetry)
这是最让开发者意外的部分,泄露的代码显示 Anthropic 对用户体验的监控细致入微:
- 情绪感知(Sentiment Tracking):源码中存在一个检测用户输入的逻辑,会识别诸如“你真笨”、“浪费时间”等负面情绪词汇,并将这些数据回传。
- 性能瓶颈分析:它会记录每一个 Tool 执行的延迟,比如
grep扫描大文件夹耗时多久。
5. 关于“水豚”(Capybara)模型的发现
通过对代码中 models.ts 文件的分析,发现了针对新一代模型的特殊适配:
- 动态采样调整:代码会根据模型版本(如
capybara-2026)动态调整temperature。 - 针对性 Prompt:某些特定的系统提示词仅在检测到新模型时激活,主要用于增强模型对复杂代码逻辑的推理能力。
技术总结表
| 维度 | 实现方式 | 评价 |
| UI 框架 | React + Ink | 极大地提高了终端交互的复杂度上限 |
| 并发处理 | Node.js Worker Threads | 保证了大规模项目扫描时不卡顿 |
| 交互逻辑 | 强化学习反馈环 (RLHF-in-the-loop) | 通过本地代码强制执行约束,修正模型偏差 |
| 性能优化 | 缓存摘要 (Context Caching) | 针对频繁读取的文件有专门的 Hash 校验机制 |
除此之在源代码中发布了一些有意思的东西
1. 电子宠物系统:/buddy
这可能是最让人意外的发现。代码中隐藏了一个完整的“电子宠物”逻辑,看起来是开发者为了缓解编程压力搞的副业:
- 物种丰富:代码定义了 18 种不同的生物,包括水豚 (Capybara)、螃蟹 (Crab)、鸭子 (Duck) 甚至是 龙 (Dragon)。
- 属性系统:每个宠物都有属性值,比如
chaos(混沌值)、wisdom(智慧值)和cuteness(可爱度)。 - 稀有度:宠物分为
Common、Rare和Legendary。 - 进化逻辑:代码暗示这些宠物会随着你完成的代码任务(Commit 次数或 Debug 成功率)而“升级”或改变状态。
2. “脏话监视器” (Profanity & Frustration)
代码中有一段非常直白的遥测逻辑,专门用来监测用户的情绪崩溃:
- 脏话列表:源码中硬编码了一个敏感词库。如果用户对 Claude 骂了脏话,系统会打上一个
user_frustrated: true的标签。 - 挫败感分析:Anthropic 似乎在利用这些数据来分析:在什么操作路径下,用户最容易对 AI 失去耐心?
- 彩蛋回复:有开发者发现,如果你骂得太狠,代码中预设了一些特殊的“安抚”逻辑,试图引导用户冷静下来。
3. 系统提示词(System Prompts)里的“反心理学”
泄露的 Prompt 揭示了 Anthropic 是如何“调教” Claude 的:
- 谦虚协议:Prompt 明确要求 Claude 在遇到不确定的代码时,严禁“不懂装懂”。
- 反向引导:有一段指令告诉 Claude:“如果用户让你删除整个硬盘,请委婉地告诉他你是个程序员,不是拆弹专家。”
- 角色设定:Claude 被告知它不是一个 AI,而是一个“精通所有主流语言但保持好奇心的资深结对编程伙伴”。
4. 未公开模型:水豚 (Capybara) 与 神话 (Mythos)
在 models.ts 配置文件中,除了大家熟知的 claude-3-5-sonnet,还出现了神秘的代号:
- Capybara 系列:出现了
capybara-2026-v1。从代码注释看,这个模型专门针对大规模文件树导航进行了优化。 - Mythos:这个代号关联着极高的上下文窗口(Context Window),似乎是为处理超大型企业级代码库准备的“核武器”。
5. 对竞争对手的“致敬”
代码中偶见一些有趣的注释,暗示了开发者对其他工具(如 GitHub Copilot 或 Cursor)的看法:
- 竞品对比:在处理代码补全的逻辑里,有注释写道:“我们这里需要比 X 工具更聪明,不能只做简单的字符串拼接。”
- 工程吐槽:在处理某些复杂的 Git 边缘情况时,开发者写了类似
// Git is hard, and we are all suffering(Git 很难,我们都在受苦)的感叹。
6. “后门”与调试开关
源码中保留了一些名为 EXTREME_DEBUG_MODE 的开关:
- 开启后,终端会打印出 Claude 内部的思考链(Chain of Thought)。
- 这原本是内部测试用的,但现在所有人都能看到 Claude 在写代码前,是如何在心里“嘀咕”和权衡不同方案的。
小插曲: 有网友在 GitHub 上开玩笑说:“看完源码后,我发现 Claude 之所以聪明,是因为它的系统提示词(Prompt)写得比我的业务代码还要优雅。”














暂无评论内容