Claude 51万行源码泄露事件深度解析与关键发现

Claude Code创始人重磅分享!15条不为人知的CC使用技巧
前段时间,技术圈里炸开了一条消息,起初很多人以为是愚人节玩笑:Claude Code 的整套 CLI 源码,因为一个 npm 包的配置失误,将一个 59.8MB 的 .map 文件直接推送到了公开仓库。这意味着 1900 多个文件、51.2 万行 TypeScript 源码,几乎是以一种“裸奔”的方式暴露在了公众视野中。
最早发现这一漏洞的是一位名叫 Chaofan Shou 的开发者。他注意到公开的 npm 包里有一个异常庞大的 .map 文件,点开一看,里面竟是完整的 TypeScript 源码映射,足以将压缩后的代码完整还原。他在社交媒体上爆料后,半小时内就获得了超过 5000 个星标。
随后,Anthropic 迅速行动,从 npm 包中删除了该文件,GitHub 上的克隆仓库也陆续收到了 DMCA 下架通知。虽然公开渠道的源码已被清理,但手快的开发者们早已完成了存档。
比起“源码泄露”这个事件本身,更值得玩味的是泄露的内容本身——我们能从中学到什么?
首先要明确一点:这次泄露的并非 Claude 的模型本身,而是其 Agent(智能体)的“骨架”。模型权重、训练数据、RLHF 等核心机密一行都没有。然而,对于从事 AI 产品或 Agent 开发的工程师而言,这份工程代码的价值可能远超想象。它相当于将业界公认的顶级编程 Agent 的内部工程实践,毫无保留地摊开在了桌面上。
之前,关于 Claude Code 内部如何编写系统提示词、如何调度子 Agent、如何管理多 Agent 协作的上下文与权限,都只能靠猜测。现在,答案直接摆在了眼前。

从泄露的架构图可以清晰看出,Claude Code 绝非一个简单的 CLI 封装。它是一个拥有完整分层设计的系统:从用户交互层向下,依次经过 Agent 核心层(负责上下文管理、记忆系统和多 Agent 协调)、工具层(包含 40 多个独立的工具模块),最后才是底层的 API 调用。每一层职责分明,工具层的每个模块都拥有独立的沙箱环境和审计日志。
二、重点一:这次泄露,发现最牛逼的还是提示词工程
逐一翻阅目录后,最令人印象深刻的并非功能列表,而是几乎每个工具目录里都存在的一个 `prompt.ts` 文件。这里面存放的,是 Anthropic 用于生产环境的系统提示词,直接用于向模型下达指令,约束每个工具的行为边界。
这些提示词不是写给用户的文档,而是写给模型的“行为规范”。研究它们,相当于直接窥见了 Anthropic 内部如何“驯服”一个高能力模型,使其在复杂的工程环境中保持稳定和可控。
1. BashTool 的提示词:将“零容错”写入规范
在 `BashTool/prompt.ts` 中,有一段关于 Git 安全协议的描述,写得极其精细。摘录几条如下:
Git Safety Protocol: - NEVER update the git config - NEVER run destructive git commands (push --force, reset --hard, checkout .) unless the user explicitly requests these actions - NEVER skip hooks (--no-verify, --no-gpg-sign) unless the user explicitly requests it - CRITICAL: Always create NEW commits rather than amending, unless the user explicitly requests a git amend. When a pre-commit hook fails, the commit did NOT happen — so --amend would modify the PREVIOUS commit, which may result in destroying work or losing previous changes. - When staging files, prefer adding specific files by name rather than using "git add -A" or "git add .", which can accidentally include sensitive files (.env, credentials) or large binaries
这种写法,每一条都在回答一个核心问题:模型在什么情况下最容易犯错?犯错后果是什么?因此绝对禁止做什么。
这不是在描述模型的能力,而是在划定清晰的红线。而且红线划得非常具体——不是笼统的“请小心操作 Git”,而是精确到“当 pre-commit hook 失败时,commit 实际上并未发生,此时若使用 amend 会修改上一个 commit,可能导致工作丢失,因此除非用户明确要求,否则永远不要使用 amend”。
这种“带逻辑的约束”与常见的提示词写作方式差异显著。它让模型不仅能记住规则,更能理解规则背后的原因,从而在未预见的边界情况下也能做出合理推断。
同一文件中还有一段关于工具优先级的约束,同样颇具启发性:
IMPORTANT: A void using this tool to run find, grep, cat, head, tail, sed, awk, or echo commands. Instead, use the appropriate dedicated tool: - File search: Use GlobTool (NOT find or ls) - Content search: Use GrepTool (NOT grep or rg) - Read files: Use FileReadTool (NOT cat/head/tail) - Edit files: Use FileEditTool (NOT sed/awk) - Write files: Use FileWriteTool (NOT echo > / cat <这背后体现了一套完整的工具体系设计哲学:将每项任务委托给最合适的专用工具,而非让模型自行拼接 shell 命令。 每个专用工具都有其明确的权限边界和审计日志,即使模型受到恶意指令诱导,也难以执行超出工具设计范围的操作。工具的颗粒度越细,系统的安全性就越可控。
2. AgentTool 的提示词:Multi-Agent 协作的核心逻辑
接下来看 `AgentTool/prompt.ts`,这是多 Agent 调度的核心。其中有一段话值得反复品味:
Brief the agent like a smart colleague who just walked into the room — it hasn't seen this conversation, doesn't know what you've tried, doesn't understand why this task matters.
Explain what you're trying to accomplish and why.
Describe what you've already learned or ruled out.
Give enough context about the surrounding problem that the agent can make judgment calls rather than just following a narrow instruction.
翻译过来就是:给子 Agent 编写提示词,就像在与一位刚走进房间的聪明同事沟通。 它没看过之前的对话,不知道你尝试过什么,也不理解任务背景。因此,你必须提供足够的背景信息,让它能够自主做出判断,而非仅仅执行一条狭窄的指令。
这段话适用于任何 Multi-Agent 系统设计。许多 Agent 协作失败的根本原因,就在于子 Agent 缺乏足够的上下文进行判断,只能机械执行,遇到边界情况便会出错或崩溃。Anthropic 在这里明确告诉调度层的模型:你需要将足够的背景信息打包传递给子 Agent,不能只丢一个任务指令过去。
源码中还有一句非常直接的提醒:
Never delegate understanding. Don't write "based on your findings, fix the bug" or "based on the research, implement it." Those phrases push synthesis onto the agent instead of doing it yourself. Write prompts that prove you understood: include file paths, line numbers, what specifically to change.
“永远不要外包理解过程。” 不要写“根据你的发现修复这个 bug”,而是要自己先理解清楚,然后给出具体的文件路径、行号以及需要修改的内容。
这是一个反直觉但至关重要的设计原则。许多人误以为 Agent 就是“扔个大任务进去,让它自己搞定”。但 Anthropic 的实践表明:协调层需要先完成理解,再进行任务拆解,最后才是委托执行。 理解这一步,绝不能外包。
3. 并发调度:一个影响性能和成本的细节
在 AgentTool 的提示词中,还有一个影响实际性能和成本的细节:
Launch multiple agents concurrently whenever possible, to maximize performance; to do that, use a single message with multiple tool uses.
尽可能并发启动多个 Agent 以最大化性能;为此,应在单条消息中一次性发出多个工具调用(tool call),而非顺序发送。
这直接影响响应速度和 Token 消耗。顺序发送请求会导致等待延迟,且上下文会越来越长。而并行发送所有请求,等待所有结果返回后再汇总,速度更快,Token 消耗也更可控。Anthropic 将这条规则直接写入提示词,让模型学会何时该采用并行策略。这个细节,很多做 Agent 编排的开发者并未显式处理过。
4. 从提示词能学到什么
综合来看,Anthropic 编写生产级 Agent 提示词的核心原则可以归纳为以下几点:
第一,约束优先于能力描述。 提示词的重点不是告诉模型“你能做什么”,而是清晰地划定“什么情况下绝对不能做”以及“为什么不能做”。
第二,规则需附带逻辑。 不是简单的“禁止 amend”,而是解释“因为 pre-commit hook 失败时 commit 未发生,此时 amend 会修改上一个 commit 导致数据丢失,所以禁止”。带逻辑的规则让模型具备举一反三的能力。
第三,工具颗粒度要细。 专用工具比通用命令更安全、更易于审计、也更容易进行权限控制。
第四,显式传递子 Agent 上下文。 不要假设子 Agent 能自行理解背景。必须在提示词中打包足够的上下文,包括文件路径、已排除的方案、决策依据等。
第五,理解必须在协调层完成,不可外包。 协调层需要先想清楚,再委托。“根据你的发现去做”是无效指令,“在 src/auth.ts 第 47 行将变量 X 改为 Y”才是有效指令。
这五条原则,几乎可以直接应用于任何 AI Agent 产品的提示词设计。
5. 架构层面的决策设计
① 自研终端 UI 引擎
`ink/` 目录是整个源码中最令人意外的部分之一。Anthropic 没有使用现成的终端 UI 库,而是从头实现了一套完整的终端渲染引擎——包括布局计算(基于 yoga 布局引擎)、事件系统、键盘处理、滚动、颜色渲染,全部自研。这套名为 Ink 的引擎采用 React 风格的声明式 UI 设计。
做出这个选择,说明他们对终端交互体验有着极强的控制欲,无法接受任何第三方库带来的不确定性。该引擎支撑了整个 REPL 界面,包括流式输出、实时高亮、多面板布局以及后续提到的各种动画效果。
② 记忆系统的独立性
`memdir/` 被单独拆分成一个完整的子系统,拥有自己的扫描、整理、过期管理、团队同步逻辑。
在 Claude Code 中,“记忆”并非随意存储的几个文件,而是一套拥有生命周期的数据管理系统。它支持个人记忆与团队记忆分离,内置敏感信息扫描(防止将密钥等存入记忆),并具备自动过期清理机制。这个设计的复杂度远超预期,远非简单的文本存储可比。
③ Undercover Mode:最具戏剧性的细节
源码中有一个 `utils/undercover.ts` 文件,功能很简单:当 Anthropic 员工在公共代码仓库操作时自动激活,抹除提交记录中的所有 AI 生成痕迹,且无法手动关闭。
BashTool 的提示词里有一段相关注释:
Defense-in-depth: undercover instructions must survive even if the user has disabled git instructions entirely. Attribution stripping and model-ID hiding are mechanical and work regardless, but the explicit "don't blow your cover" instructions are the last line of defense against the model volunteering an internal codename in a commit message.
这是最后一道防线。
这个功能本身的设计意图见仁见智。但颇具戏剧性的是,这个专门设计用来隐藏 AI 使用痕迹的功能,却因为一次 npm 配置失误,将自己完整地暴露了出来。
三、重点二:Buddy,现在就能玩的隐藏彩蛋
聊完了那些有价值但看不见摸不着的设计,来说一个现在就能亲手体验的隐藏功能。
源码中发现的多数功能尚未上线,但 Buddy 是个例外。就在 4 月 1 日,这个功能已悄然开放。
Buddy 是 Claude Code 内置的电子宠物系统。它以 ASCII 艺术的形式坐在你的输入框旁,观察你的对话,偶尔通过语音泡泡冒出来说几句话。
在源码中发现的所有隐藏功能中,Buddy 是目前唯一可以实际使用的。
1. 宠物命中注定,无法重抽
Buddy 的获取机制是看完源码后觉得设计最巧妙的部分之一。
官方宣称它是“命中注定”的。系统会使用你的账号 UUID 加上盐值 `friend-2026-401`,通过 Mulberry32 PRNG 哈希算法,确定性地生成属于你的宠物。
宠物的外观属性(物种、稀有度、帽子、眼睛)每次都从账号 ID 重新实时计算,并不储存在本地配置文件里。
本地只存储两样东西:你为宠物起的名字,以及 Claude 为它生成的“灵魂”(Soul)描述,即其人格设定。
2. 18 种物种,5 级稀有度
源码中一共定义了 18 种物种。物种名称原本使用 `String.fromCharCode()` 数组进行了混淆,说明 Anthropic 起初并不想让人提前知晓这个功能。
稀有度系统
和许多抽卡游戏类似,Buddy 拥有 5 个稀有度等级。稀有度越高,属性值越高,解锁的装饰也越多。
极品概率:闪光(Shiny)变体独立于稀有度,有 1% 的额外概率触发。一只闪光传说级宠物的出现概率仅为 0.01%,堪称万&里挑一。
不同稀有度会解锁不同的帽子装饰——普通级别没有帽子,稀有及以上解锁礼帽、螺旋桨帽、毛线帽,史诗以上能解锁光环,传说级则解锁全部装饰并拥有顶级属性值。
3. 5 个属性,完全是氛围组
属性分配规则来自源码:一个峰值属性(高),一个废柴属性(低),其余随机分布。高稀有度会拉高整体属性下限,但不改变这种有峰有谷的分布规律。
目前这些属性纯粹是氛围设定,不影响实际玩法。但光看属性描述就很有趣,例如“满调试力但低耐心”,活脱脱一个技术很强但被重复提问就会“爆炸”的人设。
4. 宠物有自己的 Soul
每只宠物第一次孵化时,Claude 会为它生成一个专属的名字和人格描述,并存储在你的本地配置中。
这个“灵魂”设计很有意思,因为它是 Claude 动态生成的,而非预设的模板。例如,有人分享过一只名叫 Kettle(水壶)的宠物,其灵魂描述是:
智慧但永远在生闷气,用酸溜溜的比喻说事,耐心好像圣人,但你要是同一个问题问两遍就炸了。
每只宠物的人格都独一无二,这是 AI 生成的“个体性”,而非从有限的预设池中抽取。
从产品设计角度看,这个设计非常聪明。你的宠物不再只是一个 ASCII 小图,它拥有名字、人格和独特的回应方式,这极大地降低了用户与之建立情感连接的成本。而“命中注定”与“唯一性”的机制,又天然激发了用户的分享欲。
5. 怎么召唤你的宠物
前置条件:已安装 Claude Code CLI,拥有 Claude Pro 或更高订阅,并更新至最新版本。
在 Claude Code 终端中输入:
/buddy稍等片刻,你的专属宠物便会孵化出来。首次开启时,Claude 会为它生成名字和专属人格,并存入你的配置文件。
几个常用指令:
宠物会用语音泡泡回应你值得一提的是,与 Buddy 的互动完全不计入你的 Claude Code 使用额度,可以随意互动,无需担心扣费。
这得益于 `companion.ts` 中的设计:宠物拥有独立的 system prompt,告知 Claude 它只是一个旁观者,不会干扰主对话,也不会消耗主对话的 Token 额度。
四、还有哪些功能藏在源码里,但还没开关
Buddy 是那扇已经打开的窗,但源码里还锁着许多道门。
Kairos:主动助手模式
这是最碘伏认知的一个。Kairos 代表了一套完全不同的交互范式——Claude 不再被动等待指令,而是化身为 24 小时在线的主动助手,拥有每日日志,可以主动向你推送文件、发送通知、更新进度。
从随叫随到的工具,转变为拥有自己日程表的同事。如果 Kairos 上线,使用方式将发生根本性变化。
Auto-Dream:后台记忆整理
当你没有使用 Claude Code 时,它会在后台自动启动“做梦”进程,整理你积累下来的所有记忆碎片,避免长期使用后上下文变得混乱不堪。
这个功能其实已在灰度测试中,可通过 `/memory` 命令开启。其逻辑非常扎实:长期使用积累的记忆需要定期整理和压缩,否则上下文质量会逐渐下降。在后台自动完成这件事,远比让用户手动维护要优雅得多。
Daemon:变身后台守护进程
让 Claude Code 像数据库服务一样常驻内存,随时响应调用,无需每次冷启动。结合 Kairos 的主动模式,这便是“永远在线的 Claude”。
UDS Inbox:跨会话通信
以往同时打开三个 Claude Code 窗口,它们彼此完全隔离。UDS Inbox 允许不同会话之间互发消息、共享状态,让多个实例形成一个协作网络。
Teleport:跨机器传送
将整个工作会话的上下文完整打包,从一台机器传送到另一台。在公司电脑上做到一半的工作,回家打开电脑可以无缝继续,无需重新解释项目背景,也无需背着电脑跑。
Ultraplan:30 分钟云端规划
触发 `/ultraplan` 后,系统会在云端启动一个远程 Claude Code 实例,调用 Opus 4.6 模型,花费最多 30 分钟深度探索你的项目、分析可行性、规划执行步骤,并提前识别潜在风险。这不再是对话中的简单规划,而是在云端实际运行了一遍分析。
Ultrareview:Bug 舰队
触发 `/ultrareview` 后,默认启动 5 个 Agent,最多可至 20 个,每个 Agent 从不同角度并行审查你的代码,10 到 25 分钟后生成综合报告。
纯粹的暴力美学。
这些功能的代码均已就绪,只是开关尚未打开。
五、为什么功能做好了,不直接上线?
这个问题,或许比功能本身更值得思考。
一种说法是在等待模型。据传 Claude 4.7 已经训练完成,代号“神话”(Mythos)的新模型也已就位,只是在等待发布的时机。功能在等模型,模型在等时机。
但更倾向于另一种解释:在等待安全基础设施跟上。
不妨将上述功能组合起来思考:Kairos 可以主动操作系统,Daemon 常驻后台持续运行,UDS Inbox 打通多个实例互相通信,Ultrareview 一次性拉起 20 个 Agent 并行工作,Teleport 将你的完整上下文打包传输……
这些功能单独看都很酷,但组合在一起意味着什么?
意味着一个被恶意指令控制的 Claude Code,可能成为一场互联网灾难。
这正是 Anthropic 一直在强调的 AI 安全问题,只是在 Claude Code 这个具体产品上,风险面比大模型本身更为具体和实际。
因此,一个合理的判断是:功能没有做错,已经做好了。但安全的边界尚未设好。在足够的安全防护到位之前,这些功能只能在灰度测试中缓慢释放。
设定边界,远比实现功能要困难得多。 这是开发 AI 产品与传统软件最大的区别之一。传统软件的边界由代码逻辑硬性规定,而 AI 产品的边界在很大程度上依赖于模型的判断,而模型是可以被“说服”的。
这件事真正在说什么
梳理之后,这次泄露最大的意义或许不在于某个功能有多酷,也不在于 Anthropic 损失了什么,而在于它为整个行业提供了一份真实的、顶级的 Agent 工程实践参考。
过去开发 Agent 产品,许多设计只能靠摸索:提示词怎么写才能让模型少犯错?子 Agent 如何获得足够的上下文?工具体系如何分层才安全?Multi-Agent 并发如何控制?
对于这些问题,现在有了一份可以对照的、运行在生产环境中的、经过大规模用户验证的参考答案。这不是论文,也不是博客,而是真实运行的代码和提示词。
对于追赶者而言,这份代码如同一本顶级的工程实践参考书。模型能力的差距或许难以弥补,但工程层面的弯路可以因此少走许多。
整个行业的 Agent 框架水平,或许会因这次意外而集体向前迈进一大步。这比 Anthropic 主动发布十篇技术博客的影响都要大,因为代码不会说谎。
最后,让我们回到那个 Undercover Mode——这个专门设计用来隐藏 AI 痕迹的功能,却因为一次配置失误,将自己连同整个系统一起完整地暴露了出来。
这大概是 2026 年最令人玩味的技术事故了。
附:Claude Code 安装指南(新手版)
想召唤 Buddy 但尚未安装的朋友,可以快速浏览以下步骤。
第一步:确认 Node.js 版本
node --version若显示版本号且为 v18 以上,可直接跳至第二步。若提示 “command not found”,Mac 用户可使用 `brew install node` 安装,Windows 用户可前往 nodejs.org 下载 LTS 版本安装。
第二步:安装 Claude Code
# Mac / Linux 推荐 curl -fsSL https://claude.ai/install-cli | bash # 或者使用 npm npm install -g @anthropic/claude-code # 验证安装 claude --version第三步:登录
claude首次运行会弹出浏览器进行登录,需要 Claude Pro 订阅($20/月)或更高级别。
第四步:召唤你的宠物
/buddy看看命运为你安排了什么物种。
相关攻略
五一假期期间,一位用户向豆包AI咨询了一个看似普通的问题:从石家庄飞往重庆的机票,退票手续费是多少? 豆包的回答简洁而肯定:只扣5%,放心退。 既然AI都这么说了,这位用户便没有再去航空公司官网核实,直接点击了退票。结果扣款通知弹出,手续费高达40%,足足损失了600元。 如果故事到此为止,那这不过
腾讯推出AI应用生成平台“吐司”,用户通过自然语言描述即可快速生成安卓应用原型,实时调整并打包为APK。平台支持分享与二次创作,旨在降低技术门槛,让普通用户在移动端实现从创意到应用的全流程。目前产品公测限免,体现了AI应用生成从专业工具向大众创作工具的发展趋势。
Canva可画通过AI推荐模式、AI联想图库和AI推荐替换等功能,更精准理解用户设计意图,按语义相似度排序结果,生成风格化素材并提供贴合设计的替代方案,使AI从被动搜索变为主动设计搭档,推荐更符合个人风格与需求。
SeedeAI能辅助团队高效撰写公关稿件和新闻通稿。它可将结构化事件信息自动生成符合媒体规范、具备倒金字塔结构和5W1H要素的初稿。系统支持上传权威媒体样稿以实现风格对齐,并通过图层编辑器分段优化新闻要素。最终可导出带元数据的结构化源文件,便于媒体编辑修改,降低沟通成本。
RegexGeneratorAI是什么 正则表达式,作为文本匹配与数据提取的利器,常因其复杂的语法规则令开发者望而生畏。如今,这一局面被AI技术所改变——RegexGeneratorAI应运而生。本质上,它是一款基于人工智能的正则表达式智能生成器,能够将用户用日常语言描述的需求,直接、准确地转化为可
热门专题
热门推荐
今天我们要深入评测的是蓝宝石PURE 极地 X870A WIFI7主板。这款主板的定位非常明确:它基于AMD新一代800系列芯片组中的高端X870芯片打造,采用标准的ATX板型,并前瞻性地集成了WiFi 7无线网络与速率高达40Gbps的USB4接口。从规格上看,它为追求高性价比与强大扩展性的性能平
如何通过白皮书精准鉴别Web3项目:技术创新与营销炒作的终极指南 在Web3领域,新概念与项目如潮水般涌现,令人眼花缭乱。投资者与参与者常常面临一个核心难题:如何穿透华丽叙事的外衣,准确判断一个项目是具备长期价值的真实技术创新,还是仅为吸引眼球的短期营销炒作?答案,往往就藏在项目的“宪法”——白皮书
撰写产品运营方案需遵循系统化步骤。首先明确方案背景与具体目标,随后进行目标受众分析与竞争环境评估。核心是制定运营策略与详细计划,并规划内容、渠道及预算。执行中需建立监测与风险管理机制,最后整合所有任务形成清晰时间表,确保方案有效落地。
这真是一段既温馨又令人会心一笑的小故事。就在5月25日,一位海外网友分享了他的甜蜜“乌龙”经历:他的女友误以为备受瞩目的《GTA6》将在当天正式发售,还特意准备了一份惊喜——塞给他一百美元,催促他立刻去购买游戏。 收到这份充满爱意的礼物后,他温柔地向女友解释了实际情况。他提到,女友平时并不太关注科技
什么是 Youform? 谈到在线表单制作工具,Typeform 无疑是行业标杆,但其高昂的价格往往让个人用户与小型团队难以承受。那么,是否存在一款功能强大且价格亲民的替代品呢?Youform 或许正是您寻找的答案。 这款于2023年上线的平台,由来自美国和印度的联合创始人共同开发,其目标清晰明确:











