
阿里云深度拆解 Claude Code:一个顶级 AI 编程工具的核心架构

Claude Code 是由 Anthropic 开发的 AI 编程工具,旨在通过自然语言指令帮助开发者高效完成代码编写、调试和项目管理。它集成在开发者的工作环境中,无需额外服务器或复杂配置。文章详细介绍了 Claude Code 的设计模式、系统架构和交互层,包括 REPL 界面、输入处理器和输出渲染器等组件。
一、Claude Code 介绍
ClaudeCode 是由 Anthropic 开发的全新终端 AI 编程工具,旨在通过自然语言指令帮助开发者高效率地完成代码编写、调试和项目管理任务。它直接集成在开发者的工作环境(如终端)中,无需依赖额外服务器或复杂配置即可运行。
在实际的使用过程中,Claude Code 是一个比较通用的智能体,他输出的代码也比 cursor 简练很多,更像是一个熟悉整个项目的高级程序员,研究和学习这个框架对于开发自己的 Agent 至关重要,本篇文章会详细介绍 Claude Code 的设计模式和核心代码。
二、详细介绍
2.1 系统架构

2.2 执行流程

2.3 交互层
交互层是用户与 Claude Code 的接触点,通常包括:
- REPL 界面:提供命令行交互体验;
- 输入处理器:解析用户指令,支持多种输入模式(自然语言、命令、代码等);
- 输出渲染器:格式化并展示 AI 响应和工具执行结果;
在 ClaudeX 中,这一层主要由 REPL.tsx 和 PromptInput.tsx 等组件实现,它们负责接收用户输入并展示结果。
2.3.1 输入逻辑处理
输入逻辑处理

2.3.2 渲染
- 阶段
- 工具调用阶段(Assistant 侧):显示工具名称、参数和执行状态;
- 工具结果阶段(User 侧):显示执行结果;
- 组件
- AssistantToolUseMessage:渲染助手调用工具时的消息;
- 显示工具名称(通过 tool.userFacingName());
- 显示参数(通过 tool.renderToolUseMessage());
- 使用 ToolUseLoader 显示执行状态动画;
- UserToolSuccessMessage:
- 渲染工具执行成功后的结果;
- 调用 tool.renderToolResultMessage() 渲染具体内容;
- 工具接口定义
- userFacingName() 显示给用户的工具名称;
- renderToolUseMessage(input, options) 渲染工具参数;
- renderToolResultMessage(output, options) 渲染工具结果;
- renderToolUseRejectedMessage() 渲染拒绝消息;
- UI 渲染特性
- 使用 Ink 框架的 Box 和 Text 组件构建终端 UI;
- 支持主题系统(通过 getTheme());
- 响应式布局(flexDirection, justifyContent);
- 详细/简洁模式切换(verbose 参数);
- 执行成本和时间显示(Cost 组件);
2.4 核心引擎
核心引擎是 Claude Code 的"大脑",负责协调各个组件的工作:
- 消息系统:管理用户输入、AI 响应和工具结果的消息流;
- 查询引擎:与 AI 模型交互,发送请求并处理响应;
- 工具调度器:协调工具的调用和结果处理;
在 ClaudeX 中,query.ts 是核心引擎的关键组件,它实现了与 AI 模型交互的逻辑:
query.ts


2.5 工具
工具系统是 Claude Code 的"手脚",使其能够与外部环境交互:
- 文件工具:读取、写入、搜索文件;
- 执行工具:运行 shell 命令、执行代码;
- 分析工具:代码分析、依赖检查等;
- 元工具:复合工具,可以执行更复杂的任务;
每个工具都遵循统一的接口,包括名称、描述、参数模式和执行逻辑:

工具也是整个 Claude Code 的核心资产,他这个 cli 效果这么好除了是因为强大的模型,也是因为有很强大的工具,例如有一个特别强大的 bash tool 的工具,可以调用 shell 里面的所有命令,也包含 agent tool,可以发挥更强大的能力。我们会在后续的文章中对工具进行单独的分析。
2.6 上下文管理
上下文管理是 Claude Code 的"记忆",负责收集和组织代码相关信息:
- 项目结构:目录和文件结构
- 代码内容:关键文件的内容
- 版本控制:Git 历史和状态
- 配置信息:项目配置和依赖
上下文管理的挑战在于如何在有限的上下文窗口内提供最相关的信息:
- LRU 缓存机制:对文件编码、行尾类型等信息实现缓存,减少重复操作。
文件缓存

- 按需加载策略:不会一次性加载整个代码库,而是根据查询需要智能加载相关文件 。
GlobTool.tsx

- 结果截断处理:对大量搜索结果实现智能截断,避免上下文溢出,同时提供清晰的截断提示 。
lsTool.tsx

- 拼装上下文
上下文拼装

2.7 安全
安全与权限是 Claude Code 的"护栏",确保工具使用的安全性:
- 权限验证:工具执行前的权限检查;
- 用户确认:关键操作的用户确认机制。使用最小权限原则,只向用户索要完成任务的最小权限;
- 安全边界:文件操作和命令执行的限制;
permission.ts

三、一些启发
3.1 用于程序员测试 prompt 的 Binary Feedback 机制
query.ts

使用完全一模一样的请求两次,可能是为了观察同样的输入模型会不会给出两个输出,如果 ai 返回了两个答案,就说明模型对于这次请求是犹豫的,考虑不清楚的,需要让用户去做选择。
这里对于输出的检测不是检测文本,而是去检测生成的 tool use 是不是相同的。结构化数据输出的稳定性要远远大于文本输出的稳定性。如果没有 tool use 才会去比较文本。
同时看到这个代码只在程序员自己测试的时候才会生效,说明这样的测试逻辑对于开发自己的 agent 还是比较有用的。出现这种情况就说明你需要去提高自己的 prompt 质量了。
3.2MCP 工具
整个 Claude Code 自身只维护了一个 tengu_mcp_server,同时支持用户添加 MCP Server,Claude Code 通过三级分层的结构,来管理用户的 MCP 工具:
- global:全局配置的通用的 MCP
- MCPrc:配置文件,可以共享
- project:项目级别,就是当前的代码库可以单独配置
下层结构的 MCP 配置的可以覆盖上层的 MCP 配置。
添加 MCP Server



如何获取到多个 MCP Server 的工具,请求所有的 MCP Server,获取到所有的 tools,将 tools 聚合,发送给大模型。
getMCPTools

3.3 通过 AI 来检测安全
利用 AI 做安全辅助。例如判断命令是否有被注入的可能性。
判断命令是否有被注入

3.4 上下文压缩处理
核心功能:清空对话历史但保留上下文摘要,解决了长对话导致的上下文窗口问题。
技术亮点:
1.智能摘要生成:使用 Sonnet 模型生成对话摘要,保留关键信息供后续使用;
2.Fork 机制应用:利用 setForkConvoWithMessagesOnTheNextRender 创建新的对话分支,摘要作为新对话的起点;
3.Token 使用优化:将摘要的 token 使用量设为 0,避免触发上下文窗口警告;
4.缓存清理:清理 getContext 和 getCodeStyle 缓存,确保新对话环境干净;
核心代码流程:
1.获取当前对话历史
2.构造摘要请求并调用 Sonnet 模型
3.提取并验证摘要内容
4.清屏、清空消息历史
5.创建包含摘要的新对话分支
3.5 简单任务交给小模型
Claude 内部会有好几个模型实例,如果是只判断对错或者是一些简单的任务,会交给 haiku 模型。
queryHaiku


3.6 高效的文件系统策略
- 分层的代码项目拉取,先获取高层次项目结构,再根据需要深入特定目录,避免一次性加载过多内容;
- Ripgrep 集成:利用 Rust 编写的高性能搜索工具 ripgrep,实现毫秒级的代码库搜索;
- 内置二进制支持:包含预编译的 ripgrep 二进制文件,确保跨平台一致性和性能;
- 智能结果排序:搜索结果按修改时间排序,优先展示最近更改的文件,提高相关性;
- 并发搜索能力:支持同时发起多个搜索请求,大幅提高大型代码库的分析效率;
- LRU 缓存机制:对文件编码、行尾类型等信息实现缓存,减少重复操作;
3.7 精妙的工具
Claude Code 中内置的 15 个工具的实现和提示词都值得反复学习,就是因为这些极致的工具才使得任务执行的高效。
四、彩蛋

五、iFlow CLI
随着 Claude Code 的爆火出圈,我们发现这个产品是真实地提高程序员的开发效率。我们也持续追踪了两个月 Claude Code 的升级进展,帮助了很多同学在国内环境使用 Claude Code。随着 Cursor、Claude Code 对国内 ip 加大力度管控,使用这类前沿工具变得十分困难,但最近一个月也迎来了很多惊喜:Kimi K2、Qwen3-Coder、GLM-4.5 等国产大模型相继涌现,Gemini CLI 也宣布开源。国产编程工具正不断突破创新,致力于为国内开发者打造更智能、更高效的极致开发体验。
心流团队一直在探索 AGI 的路上,我们也一直在找寻最通用 AI 助手的技术架构和产品形态,CLI + MCP 的出现让我们觉得这可能就是我们实现 AGI 的路径。所以我们向大家隆重介绍我们最新研发的 CLI 工具,iFlow CLI 2.0。

它基于 Gemini CLI 改造,我们花了一些时间打磨它,融合了一些 Claude Code 的特性。

- 支持 4 种运行模式。yolo(模型最大权限,可以执行任何操作),accepting edits(模型只有修改文件权限), plan mode(先规划后执行), default(模型无任何权限);
- 升级 subAgent 功能。让 CLI 从通用助手向专家团队进化,为你提供更加专业、更加准确的建议,使用/agent 可以看到更多预先配置好的 agent;
- 升级 task 工具。有效压缩上下文长度,让 CLI 能够更加深入完成你的任务,上下文达到 70% 的时候会自动压缩;
- 接入心流开放市场。快速安装好用的 MCP 工具、Subagent 和自定义指令,可以通过/mcp 了解更多;
- 免费使用多模态模型,也可以在 CLI 中粘贴图片了(Ctrl+V 粘贴图片);
- 支持历史对话保存和回滚 (iflow --resume 和/chat 命令);
- 支持更多更好用终端命令(iflow -h 查看更多命令);
- 支持 VSCode、Jetbrains 插件 (注意 IDE 对应版本号);
- 自动升级,再也不用担心最新功能体验不到了;
5.1 一键安装
mac/linux/ubuntu 用户

已经安装过的同学可以再次执行这个脚本,实现更新,后续 cli 会自动更新。
Windows 用户
1. 访问 https://nodejs.org/zh-cn/download 下载最新的 Node.js 安装程序;
2. 运行安装程序来安装 Node.js;
3. 重启终端:CMD 或 PowerShell;
4. 运行 npm install -g @iflow-ai/iflow-cli 来安装 iFlow CLI;
5. 运行 iflow 来启动 iFlow CLI;
5.2 开放市场安装 SubAgent 和 MCP 工具
缺少了 MCP 和 Sub agent 的 CLI 是不完整的,加入 MCP 和 Sub agent 的之后会让 CLI 变成领域专家!对于很多小白用户来说,操作实在太难了!
心流开放市场帮你解决 ???? 立即体验:https://platform.iflow.cn/cli
MCP 开放市场,一键安装,解锁高效工具。
agent 开放市场,一键安装 Subagent,引入更强大的专家 agent。
复制安装命令!在终端中执行!一键安装体验 MCP 和 Subagent!
六、CLI 到底能做什么
6.1 熟悉项目、写代码、debug
这是 CLI 的强项,进入到你的项目中,打开 iFlow CLI,什么功能不熟悉,问他;什么业务需要实现,描述清楚让 CLI 帮你实现;遇到报错了,把报错信息贴给 CLI 让它帮你解决。
6.2 做网站
使用本地的私有数据,绘制你自己的报告网站。

6.3 DeepReseach




6.4 引入 Sub Agents 实现业务逻辑
产品需求文档 -> 需求处理 Agent -> UI 设计 Agent -> UI 优化 Agent -> 代码逻辑开发 Agent -> 接口集成 Agent -> 单元测试 Agent
本文作者:茂道,来源:阿里云开发者,原文标题:《Claude Code 深度拆解:一个顶级 AI 编程工具的核心架构》
风险提示及免责条款
市场有风险,投资需谨慎。本文不构成个人投资建议,也未考虑到个别用户特殊的投资目标、财务状况或需要。用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

