在这里插入图片描述

这篇文章是我作为开发者对 Claude Code 源码泄露事件的一次完整复盘。
目标不是“吃瓜”,而是回答三个工程问题:

  1. 这件事到底有没有发生、边界在哪?
  2. 从代码结构看,Claude Code 到底是个什么系统?
  3. 对我们做 Agent 产品的人,有哪些可落地的工程启发?

一、先说结论

我先给结论,再展开证据和代码分析:

  1. 泄露事件本身高度可信,有对应版本的源码 https://gitee.com/wisdomfriend/claude-code-source-2.1.88
  2. 问题根因是发布/打包链路失误,不是“黑客攻破内网”这种叙事。
  3. Claude Code 的核心价值在 Agent Runtime 工程能力,不是单点模型能力。

二、事件证据链

这不是“所有 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: 1332
  • src*.tsx: 552
  • 合计:1884 源码文件

cli.js.map 中:

  • sources: 4756
  • sourcesContent: 4756

一级目录文件量(Top):

  • utils: 564
  • components: 389
  • commands: 207
  • tools: 184
  • services: 130

这已经是典型“产品级终端应用 + Agent 平台”规模,而不是简易 CLI。


六、技术栈:为什么说它是 Agent Runtime

从代码结构与依赖看,核心栈大致是:

  • Node.js + TypeScript + ESM
  • React + Ink(终端 UI 组件化)
  • Anthropic SDK
  • MCP SDK(多传输协议接入)
  • bun:bundle feature gate(构建期能力裁剪)

src/entrypoints/cli.tsxsrc/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 产品落地企业场景的关键能力之一。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐