Claude Code agent 源码泄露事件分析

这篇文章是我作为开发者对 Claude Code 源码泄露事件的一次完整复盘。
目标不是“吃瓜”,而是回答三个工程问题:
- 这件事到底有没有发生、边界在哪?
- 从代码结构看,Claude Code 到底是个什么系统?
- 对我们做 Agent 产品的人,有哪些可落地的工程启发?
一、先说结论
我先给结论,再展开证据和代码分析:
- 泄露事件本身高度可信,有对应版本的源码 https://gitee.com/wisdomfriend/claude-code-source-2.1.88。
- 问题根因是发布/打包链路失误,不是“黑客攻破内网”这种叙事。
- Claude Code 的核心价值在 Agent Runtime 工程能力,不是单点模型能力。
二、事件证据链
- 公开媒体报道:
BleepingComputer
The Register
VentureBeat - DMCA 公开记录:
GitHub DMCA 原文
这不是“所有 Anthropic 内部系统源码都公开了”,更准确是 Claude Code 某次发布产物(含 source map)造成了大量源码可还原并扩散。
三、我的复现方式
我的代码复现仓库:
说明:请仅用于学习研究,遵守许可证与平台规则。
四、先跑起来:从“能执行”到“可调试”
我这边的最小验证链路很直接:
cd "claude\claude-code-source"
node .\cli.js --version
node .\cli.js
--version 返回 2.1.88 (Claude Code),这说明入口程序是可执行的。
后续 Unable to connect to Anthropic services,说明国内不能运行, 等我在服务器上运行起来后, 再更新博文吧
五、代码体量:它不是“一个脚本”
基于本地统计,我得到这组数据:
src下*.ts: 1332src下*.tsx: 552- 合计:1884 源码文件
cli.js.map 中:
sources: 4756sourcesContent: 4756
一级目录文件量(Top):
utils: 564components: 389commands: 207tools: 184services: 130
这已经是典型“产品级终端应用 + Agent 平台”规模,而不是简易 CLI。
六、技术栈:为什么说它是 Agent Runtime
从代码结构与依赖看,核心栈大致是:
- Node.js + TypeScript + ESM
- React + Ink(终端 UI 组件化)
- Anthropic SDK
- MCP SDK(多传输协议接入)
- bun:bundle feature gate(构建期能力裁剪)
src/entrypoints/cli.tsx 和 src/tools.ts 里大量 feature('...') 让我印象很深:
它不是在“运行时做 if-else”,而是在打包时就裁剪能力矩阵。
这类做法对多版本发布、内部能力隔离、性能优化都很有帮助。
七、启动链路:两段式设计很工程化
阶段 A:轻入口分流(src/entrypoints/cli.tsx)
这个文件做了非常多“快路径”:
--version几乎零负载daemon/bg/remote-control路由- MCP 特殊入口
核心目标是:减少不必要模块加载,提升冷启动体验。
阶段 B:系统初始化(src/entrypoints/init.ts)
init() 里能看到完整的工程初始化顺序:
- 配置加载与安全环境变量应用
- mTLS、代理、证书配置
- API preconnect 预热
- policy/remote settings 加载
- 清理器注册与退出流程治理
这块非常像“应用平台内核启动”。
八、运行中枢:QueryEngine 不是普通函数
src/QueryEngine.ts 里的 QueryEngine 更像会话状态机:
- 管理消息历史、工具调用、MCP 客户端、预算与中断
- 维持会话级状态(而非单次请求)
- 负责多轮执行中的一致性和恢复
这也是为什么我会把 Claude Code 看作 “Agent Runtime”,而不是“模型 shell”。
九、工具系统:能力“可组合”才是关键
src/tools.ts 提供了一个很清晰的事实:
- 基础工具固定存在(文件、搜索、命令、网络)
- 进阶工具由 feature/环境/权限动态裁剪
- 运行时会做工具可见性与权限前置过滤
这点很重要:
让模型“看到”一个工具并不等于可执行,中间还有策略层和权限层。
十、MCP 体系:从“能连”到“能生产”
src/services/mcp/client.ts 体现的是生产级设计,而不是 demo 级接入:
- 多传输(SSE / stdio / streamable HTTP / WebSocket)
- 认证错误与会话过期处理(重连、状态恢复)
- 大输出截断、二进制落盘、结果持久化
这意味着 Claude Code 的外部能力接入,不是“调用个 API”那么简单。
十一、权限与安全:这部分值得抄作业
src/utils/permissions/permissions.ts 的设计很像一个策略引擎:
- 规则来源分层(settings / cliArg / command / session)
- 决策行为分层(allow / deny / ask)
- 决策原因可解释(rule/hook/classifier/mode)
- Bash 子命令与重定向细粒度处理
我个人认为,这部分是 Agent 产品落地企业场景的关键能力之一。
更多推荐




所有评论(0)