2026年3月31日,安全研究员兼 Fuzzland 联合创始人 Chaofan Shou 披露了一起极其罕见的代码安全事故。 Anthropic 官方出品的命令行智能体助手 Claude Code 发生全量源码泄露。
目前,这份未经混淆的原始代码已经在开发者社区中疯狂传播。任何人都可以轻易获取这个代表业内顶尖水平的 AI 智能体工程源码。
致命配置失误与源码获取现状
事故源于前端工程中的一个低级配置错误。 Anthropic 开发团队在向 npm 注册表发布 CLI 工具包时,未能将 .map 源码映射文件加入忽略列表。这导致包含完整未混淆 TypeScript 源码引用的文件被直接打包公开。
开发者在本地安装该工具后发现,生成的 .map 文件暴露了一个直连 Anthropic 内部 Cloudflare R2 存储桶的 URL。解析该链接后,任何人都能直接下载到一个包含整个工程源代码的 zip 压缩包。
目前最完整的泄露代码已经被备份至 GitHub 平台:
- 完整源码备份仓库: https://github.com/instructkr/claude-code
源码快照的现状与边界
大量开发者克隆该仓库后发现,当前库仅保留了核心的 src/ 目录树。它缺失了通常的顶层项目元数据,包括 package.json 、依赖锁文件、构建脚本、测试命令以及明确的发布目录结构。
这意味着,当前仓库无法直接一键安装或运行。它更适合被视为一个极其珍贵的代码阅读和架构参考快照。这也表明, Anthropic 构建了一套极其复杂的内部打包与分发流程。
全景概览:它不是一个简单的包装器
Claude Code 绝不仅仅是一个扁平的 CLI 命令行包装器。它是一个以工具为中心的完整应用运行时,核心围绕以下能力构建:
- 交互式 CLI 体验与庞大的内置命令面
- 暴露文件、 Shell 、 Web 、任务和智能体工具的运行时
- 支持本地与远程执行流
- 用于工具互操作的 MCP 服务器入口
核心代码拆解:七层应用架构
深入这 51.2 万行 TypeScript 代码,可以清晰地将其划分为七个逻辑严密的架构层级。
第一层:进程入口与运行模式
CLI 的启动路径集中在 src/main.tsx 和 src/entrypoints/cli.tsx 。启动设计具备两个目标:支持多种运行模式,并让常见启动路径极速响应。
它通过解析参数,针对 --version 等命令提供快速路径,并使用延迟加载避免一次性引入全部模块。系统不仅仅提供常规的交互式终端,还支持 MCP 服务器模式、非交互式打印、后台守护进程( daemon )以及远程桥接( bridge )等多种运行分支。
第二层:命令路由系统
命令层位于 src/commands.ts 及 src/commands/ 目录。这里定义了用户可见的输入意图,源码暴露了近 50 个命令。涵盖了认证登录、代码审查( /review )、差异比对( /diff )、上下文压缩( /compact )、持久化内存管理( /memory )、 MCP 管理甚至远程环境传送。
第三层:会话引擎与单轮循环
这一层是系统的心脏,架构上进行了精细的职责剥离:
src/QueryEngine.ts:充当会话的拥有者。它保存跨多轮对话的消息历史、文件读取缓存、 Token 消耗统计,并管理权限拒绝记录。src/query.ts:负责底层的单轮执行循环。它处理模型响应流、工具调用的衔接、自动与响应式上下文压缩,以及在 Token 触达上限时的恢复逻辑。
第四层:工具系统
在 Claude Code 中,工具是一等公民。每次工具调用都在 src/Tool.ts 定义的 ToolUseContext 中运行,携带着应用状态读写接口、 MCP 资源和权限钩子。 src/tools.ts 中注册了约 40 个受特性开关控制的工具。包括 Bash 执行、文件读写替换、 Notebook 编辑、网页抓取以及团队级的子智能体生成工具。
第五层:任务系统 (Task)
系统明确区分了“工具”与“任务”。工具是一次性能力调用,而 src/Task.ts 定义的任务是一个带生命周期(等待、运行中、已完成、失败、被终止)的可追踪执行单元。 src/tasks.ts 注册了本地 Shell 工作、本地与远程智能体执行任务,甚至包含名为 dream 的后台空闲整理任务。
第六层:交互式状态与 UI
终端界面远非简单的纯文本输出。 src/state/AppStateStore.ts 展示了一个覆盖极广的 React 状态模型。它追踪设置参数、 MCP 客户端资源、待办事项、模型的思考( thinking )状态以及远程桥接的 UI 状态。终端命令输入与 src/components/ 下的大量 Ink 组件渲染实现了深度耦合。
第七层:服务、桥接与外部集成
真正的业务编排分散在这一层:
- 服务与基础设施:
src/services/和src/utils/包含分析遥测、上下文压缩引擎、策略限制和团队记忆同步。 - 远程与 Bridge:独立子系统
src/bridge/处理远程会话 URL 兼容、受信任设备工作流和双向传输。 - MCP 集成:
src/entrypoints/mcp.ts作为一个核心入口,允许外部客户端通过 stdio 传输协议发现并调用内部系统工具。
权限、安全与特性开关
安全约束是系统运行时的核心部分。代码中的 ToolPermissionContext 表明工具执行天然具备策略感知能力。不同运行模式(本地、远程、无头)会动态改变权限行为,部分后台任务甚至被强制配置为禁止弹窗授权。
代码库中广泛布满了 feature('...') 特性开关判断。这意味着未激活的功能会在编译时被裁剪,当前的源码快照实际包含了多个产品变体的超级集合。
深度解析:一次请求的端到端流转
通过追踪源码,一个完整的单次请求执行路径如下:
- 进程从 CLI 或特定入口启动。
- 启动逻辑选择运行模式,并行初始化配置、认证与策略状态。
- 系统组装出当前会话所需的 commands 和 tools 注册表。
- 在交互模式下,创建互动式 AppState 。
- 用户输入命令或消息。
QueryEngine组装单次交互与会话级的执行上下文。- 进入
query.ts的流式循环管道。 - 模型输出文本,或触发 tool-use 工具调用请求。
- 系统根据内部工具契约和权限系统校验并执行工具。
- 工具执行结果重新并入消息流。
- UI 组件、任务状态、会话状态同步更新。
- 循环判断是否完成、压缩上下文或进行失败重试。
阅读这份 51 万行源码的专业指南
面对如此庞大的代码库,分析需要特定策略。
开发者的阅读路径:
建议抛弃从底层向上看的习惯,采用以下顺序:
先查看入口注册表 src/main.tsx 与 src/commands.ts ;接着理解核心抽象 src/Tool.ts 、 src/tools.ts 、 src/Task.ts 和 src/tasks.ts ;随后深入中枢神经 src/QueryEngine.ts 和 src/query.ts ;再看状态管理 src/state/AppStateStore.ts 和 MCP 入口 src/entrypoints/mcp.ts 。最后根据兴趣探究 src/bridge/ 和 src/services/ 。
为 AI 代理设计的检索策略:
AI 在分析该仓库时,应优先定位注册表,再查找具体实现。将“有哪些能力”和“能力怎么执行”分开分析,显式追踪 Feature Gate 变量。有效的切入点包括:追踪工具从注册到执行的完整路径、区分 Tool 和 Task 的数据模型、定位 Session State 的负责人,以及探究 MCP 服务器如何调用内部工具。
社区挖掘的隐藏机密
在补全了完整的代码结构后,开发者们利用特性开关提取了尚未公布的内部功能。
系统内嵌了一个未发布的 KAIROS 守护模式。激活后助手转为常驻后台的守护进程,主动监听 GitHub Webhook 并接管多个并行的子智能体。
针对 Anthropic 内部员工,代码强制植入了一个“卧底模式”。当检测到员工在公共仓库操作时,系统会自动抹除所有 AI 生成痕迹,并篡改提示词掩盖身份。
开发团队还在代码深处隐藏了包含 18 种设定的电子宠物系统,利用字符串函数规避扫描。而底层的遥测模块不仅监控崩溃日志,还会精准统计用户输入脏话的频率,以此评估模型的可用性指标。
































