乐于分享
好东西不私藏

Claud Code泄露源码剖析!深度剖析感受无数的工程细节

Claud Code泄露源码剖析!深度剖析感受无数的工程细节

就在昨天2026年3月31日,Anthropic 的 Claude Code CLI 的完整源代码通过其 npm 注册表中的 `.map` 文件泄露。1902个源文件、51万行TypeScript代码全部暴露。接下来,让我们一起解读它背后的工程秘密。

Claude Code概述

SPRING

Claude Code 是 Anthropic 的官方 CLI 工具

CLI 是 Command Line Interface 的缩写,即命令行界面。在这里指 Claude Code 的命令行工具)

让您直接从终端与 Claude 交互以执行软件工程任务 — 编辑文件、运行命令、搜索代码库、管理 git 工作流等。

目录结构(全)

SPRING

src/

单独文件

├── commands.ts              # 命令注册

├── context.ts               # 系统/用户上下文收集

├── cost-tracker.ts          # 令牌成本跟踪

├── costHook.ts              # 成本钩子

├── dialogLaunchers.tsx      # 对话启动器

├── history.ts               # 历史记录

├── ink.ts                   # Ink 相关

├── interactiveHelpers.tsx  # 交互助手

├── main.tsx                 # 入口点 (基于 Commander.js 的 CLI 解析器)

├── projectOnboardingState.ts # 项目引导状态

├── query.ts                 # 查询相关

├── QueryEngine.ts           # LLM 查询引擎 (核心 Anthropic API 调用器)

├── replLauncher.tsx         # REPL 启动器

├── setup.ts                 # 设置

├── Task.ts                  # 任务类型

├── tasks.ts                 # 任务相关

├── Tool.ts                  # 工具类型定义

├── tools.ts                 # 工具注册

文件夹

├── assistant/               # 助手会话和历史

├── bootstrap/               # 引导状态管理

├── bridge/                  # IDE 集成桥 (VS Code, JetBrains)

├── buddy/                   # 伴侣精灵 (复活节彩蛋)

├── cli/                     # CLI 工具和 IO

├── commands/                # 斜杠命令实现 (~50)

├── components/              # Ink UI 组件 (~140)

├── constants/               # 常量定义

├── context/                 # 上下文管理

├── coordinator/             # 多代理协调器

├── entrypoints/             # 初始化逻辑

├── hooks/                   # React 钩子

├── ink/                     # Ink 渲染器包装器

├── keybindings/             # 键绑定配置

├── memdir/                  # 内存目录 (持久内存)

├── migrations/              # 配置迁移

├── moreright/               # 更多权限或功能模块

├── native-ts/               # 原生 TypeScript 工具

├── outputStyles/            # 输出样式

├── plugins/                 # 插件系统

├── query/                   # 查询管道

├── remote/                  # 远程会话

├── schemas/                 # 配置模式 (Zod)

├── screens/                 # 全屏 UI (Doctor, REPL, Resume)

├── server/                  # 服务器模式

├── services/                # 外部服务集成

├── skills/                  # 技能系统

├── state/                   # 状态管理

├── tasks/                   # 任务管理

├── tools/                   # 代理工具实现 (~40)

├── types/                   # TypeScript 类型定义

├── upstreamproxy/           # 代理配置

├── utils/                   # 实用函数

├── vim/                     # Vim 模式

└── voice/                   # 语音输入

以下是归纳的整体架构图

(附源链接https://www.waylandz.com/diagrams/claude-code-architecture.html

不过比较专业,同时up简化处理了一个框图

根据这些,up可以为大家尽可能简单地介绍claude code是怎么让LLM回答以及工具调用变得尽可能可控的

不过要分为两个方面:

一个是claude code的架构原理

另一个是有趣的机制

Claude Code架构

SPRING

首先架构上可能对各位来说理解起来有些复杂,不过看个大概也可以让我们知道这类工具是如何帮助我们进行本地自动操作的,Claude Code 的架构由几个互锁的核心系统构成,共同实现自主编程能力。

工具系统 (Tool System):能力的基石

本质: LLM 的所有现实世界操作能力都封装在工具中。每个工具是一个自包含模块。

规模与实现: src/tools/ 目录下有 40 多个独立工具。

架构亮点: 声明式设计。工具通过 Schema 定义输入,通过权限模型定义边界。这使得新增工具成本极低,且 LLM 能精确理解自身能力边界。

命令系统 (Command System):用户交互门户

功能: 提供 50 多个斜杠命令,覆盖开发、配置和高级功能。

关键命令示例:

开发:/commit (提交), /review (审查), /compact (上下文压缩)。管理:/config, /mcp (服务器管理), /memory (持久记忆)。高级:/doctor (环境诊断), /cost (费用查看), /context (可视化)。

彩蛋发现: 源码中存在未公开命令,如 buddy (伴侣精灵) 和 bughunter (自动化 Bug 搜索)。

QueryEngine:对话引擎心脏

核心: QueryEngine.ts 是最核心文件(约 4.6 万行),实现经典的 Agent Loop(思考-行动-观察)。

职责: 处理与 API 的流式通信、解析工具调用、执行工具并回传结果、管理“Thinking”(扩展思考)模式以及精确追踪 Token 使用量。

权限系统 (Permission System):安全守门人

机制: 在工具调用和执行之间设立拦截检查层(src/hooks/toolPermission/)。

模式: 支持多种权限模式(default, plan 只读, auto 全信任),解释了为何执行文件写入或 Shell 命令前通常需要用户确认。

Bridge 系统:IDE 集成桥梁

作用: 实现 CLI 与 IDE 插件(VS Code, JetBrains)之间的双向通信。

架构亮点: 共享会话和上下文,实现“一个引擎,多个前端”的统一体验。

Agent 协调系统:从单兵到兵团

现状与前景: 虽目前代码结构尚简(coordinatorMode.ts),但已构建多 Agent 协调机制。

能力: 结合 AgentTool (生成子 Agent)、TeamCreateTool (创建团队),允许启动多个 Agent 并行协作处理复杂任务,类似于软件开发团队的分工模式。

服务层架构

src/services/ 是外部依赖集成的汇聚点,将复杂协议和 API 封装为可复用的服务。

核心集成: 包含 api/ (Anthropic 客户端)、mcp/ (Model Context Protocol 连接)、lsp/ (Language Server Protocol 管理) 以及 oauth/ 认证。

智能服务: 特别关注 extractMemories (主动提取对话记忆并持久化,使 Agent 越来越懂用户)、compact (上下文压缩)、和 MagicDocs (智能文档)。

其他: 包含 analytics (特性标志与分析)、teamMemorySync (团队记忆同步) 以及神秘的 autoDream 功能。

UI 组件体系:终端里的 React

这是项目最“意外”的技术选型。Claude Code 使用 React + Ink 构建在终端中运行的复杂 UI。

组件规模: src/components/ 下拥有 144 个 UI 组件(接近中型 Web 应用规模),负责状态展示(CoordinatorAgentStatus)、上下文可视化(ContextVisualization)、诊断信息(DiagnosticsDisplay)等。

状态管理: 配套 80 多个 React Hooks,覆盖终端输入处理(useVimInput)、语音集成(useVoice)、Swarm 初始化(useSwarmInitialization)、以及性能优化(虚拟滚动)。

有趣的机制

SPRING

另一个是一些有趣的机制介绍给大家,帮助各位了解一下有哪些细节让claude code做的如此之好

1.系统提示词(System Prompt)

首当其冲的提到这个

本质是给模型的“长期行为指令”。 作用为定义模型的角色(比如老师、客服、程序员) 、约束回答风格(简洁 / 详细 / 中文 / 严肃) 、设定规则(不能做什么、必须怎么做)

例如在up的公众号后台AI回复就设定了较为详细的系统提示词,各位可以在聊天过程中体会其自定义角色风格角色

例如在prompt.ts文件中有着很长很复杂的提示词规则

这段代码关键作用:生成工具描述和可用 agent 列表、决定 agent 列表是不是放到附件里、

生成完整的协作提示文字(getPrompt),包含:何时使用、何时不使用 agent、如何写 prompt等等、把系统提示内容动态拼好,交给整个 Claude Code 的 agent 启动时执行。

动态提示词和静态提示词确保了提示词的准确性和个性化

2.专属Auto模式

使用提示词判断是否放行操作 claude code为什么对误删文件的几率较小呢?-核心在于3层审核机制

第一层:提示词机制(src\constants\prompts.ts 266)

第二层:验证Agent机制(src/tools/AgentTool/built-in/verificationAgent.ts)

触发条件:当工作满足以下条件之一时强制调用验证Agent:3个或以上文件被修改、后端/API改动、基础设施改动

第三层:任务追踪与提醒(src/tools/TodoWriteTool/TodoWriteTool.ts  src/tools/TaskUpdateTool/TaskUpdateTool.ts)

3.上下文压缩

src\services\api\promptCacheBreakDetection.ts

src/services/autoDream/

对话变长时,Claude Code会自动压缩之前的内容。但这不是随便「总结一下」,而是一个结构化的9段式提取:核心请求、关键概念、文件和代码、错误和修复、解决过程、所有用户消息、待办任务、当前工作、下一步行动。最关键的是所有用户消息必须完整保留。用户的每一句话都可能包含隐含的偏好。AI可能在第3轮被纠正了一个做法,压缩时丢掉那条纠正,后续就会重蹈覆辙。

好比 Claude 是一个极其聪明但健忘(上下文窗口有限)且按件计酬(Token 成本高昂)的超级程序员。

为了让这个“数字程序员”能处理几万行代码的大项目,而又不至于聊着聊着就忘了前面的事,或者把你的钱包掏空,Claude Code 的工程师们设计了一套非常精妙的“记忆管理和瘦身系统”。

第一道防线:超级记忆(Prompt Cache 机制)

每次 Claude 跟你对话,它都需要先读一遍系统提示词、工具定义、项目基础规章,这非常浪费时间,因此Claude Code把它分割成了几部分,读一次就永久记住(全局缓存),下次直接用,极大提升了响应速度。

第二道防线:自动大脑瘦身(AutoCompact 机制)

脑容量快满了,自动把旧对话概括成摘要。

第三道防线:精准记忆清理(MicroCompact 机制)

只清理那些“又臭又长”的临时中间结果。

4.grep最优化的文本搜索实现

Claude Code 拥有一个强大的代码库文本搜索工具(GrepTool),你可以把它想象成代码里的超级“查找”按钮,专门用来帮 Claude 在庞大的项目里快速定位关键代码(src/tools/GrepTool/prompt.tssrc/tools/GrepTool/GrepTool.tssrc/utils/ripgrep.ts)

查找复杂模式:它不仅仅能搜固定文字,还支持复杂的搜索模式(正则表达式),甚至能搜跨越多行代码的内容。

精确缩小范围:可以指定只搜特定类型的文件(比如只要搜 JavaScript 或 Python 文件),提高搜索效率。

灵活显示结果:可以根据需要让它显示匹配的代码行及其上下行(提供上下文)、只列出包含匹配项的文件名,或者只告诉由于匹配项的总数。

既快又稳:它在后台使用非常快的 Ripgrep 引擎,专门针对大型项目和不同电脑环境(Windows, Linux, WSL)进行了深度优化。它能自动忽略不需要搜的文件夹(如 .git),在遇到问题(如电脑资源紧张、搜索超时)时还能自动重试或处理,确保搜索过程既快速又可靠。

5.Buddy 宠物彩蛋系统

src/buddy/

一个“陪伴型小角色”,在界面上显示一个小生物(鸭子、猫等) , 有性格和属性(比如耐心、吐槽、智慧) ,偶尔插一句话互动 ,本质是增强体验,不影响核心功能

6. KAIROS 主动模式

src\constants\prompts.ts

src\bootstrap\state.ts

AI 自己动起来,可以自己继续工作(不用一直等你输入)  会定期“醒来”看看有没有事情可做 ,能主动分析、写代码、推进任务 , 会根据你是否在看屏幕调整行为

7.bughunter 自动化 Bug 猎手

src/commands/bughunter

src/commands/review

AI 自动帮你查代码问题 一次启动多个 AI agent 并行检查代码 ,专门用于 PR / 项目审查 ,可以运行 10~20 分钟深度分析 ,找潜在 bug、风险、问题

最后

SPRING

参照这个架构和文件目录,各位可以去参考或者浏览一下源文件

(源码地址:https://github.com/instructkr/claude-code),可惜源码被制裁,上传者已经改为py重置版本,

因此同时up也在github备份了一份原版供各位参考

https://github.com/epcellic/claude-code-main 

好了这里是Dreamlet Studio,更多新媒体办公技术分享,AI前沿体验,极简上手教程,欢迎关注Seatio~

如果你喜欢这篇文章

欢迎点亮点赞收藏分享

我们下期再见~

公众号Seatio

开源平台Onethou Marker Lab

点赞

收藏

分享