技术解构 2026-05-08 32 分钟阅读 高级

Claude Code 架构深度解构

50 万行源码揭示的分布式 Agent 控制面 — 不是终端聊天,是终端里的多 Agent 运行时

摘要

2026 年 4 月,VILA-Lab 发布了对 Claude Code(v2.1.88, ~1,900 TypeScript 文件, ~512K 行代码)的全面源码级架构分析。本文基于该分析,深度拆解 Claude Code 的四层架构(用户交互层/推理循环层/执行系统层/横切能力层)、多 Agent 运行时设计、工具编排引擎、权限模型和上下文管理机制,并与 Cursor 3 和 OpenClaw 进行技术对比。

相关产品: ClawCode Cursor OpenClaw

核心论点:不是终端聊天,是 Agent 运行时

Claude Code 的核心创新不在于"在终端里聊天",而在于它将 Agent 视为可调度、可隔离、可恢复、可观测的系统对象。它不是在 CLI 里嵌入 AI 功能,而是在 CLI 里构建了一个完整的 Agent 运行时。

🔑 核心洞察

"Claude Code 真正的创新不是'支持子 Agent',而是将子 Agent、后台任务、远程任务、团队协作、权限审批、上下文复用和结果通知统一到同一个 Task + Tool 语义框架中。"——当你把 Agent 当作系统对象(可调度、可治理、可隔离、可协作),整个代码结构就从 CLI 包装器变成了终端里的分布式 Agent 控制面

四层架构全景

层级 职责 核心组件
用户交互层 REPL、命令、权限提示、任务面板、状态栏 REPL.tsx、cli.tsx
推理循环层 Prompt 组织、模型调用、上下文压缩、工具执行、停止钩子、预算控制 query.ts
执行系统层 工具、任务、子 Agent、团队 Agent、远程 Agent、Worktree 隔离、权限同步、状态持久化 AgentTool.tsx、runAgent.ts、toolOrchestration.ts
横切能力层 MCP、插件、技能、记忆、LSP、遥测、远程控制、沙箱、安全策略 跨层服务

数据流从上到下:

CLI 入口 → 快路径分发 → 主运行时组装
    ↓
主运行时 → 配置/认证/策略 → 命令/工具/MCP/Agent → REPL
    ↓
REPL 控制面 → 用户输入 → 消息队列 → 任务面板 → 流式渲染
    ↓
推理循环 → 构建 Prompt → 采样模型 → 运行工具 → 压缩/恢复
    ↓
执行基座 → 工具执行 → 任务框架 → 本地/远程/团队任务
    ↓
Agent 运行时 → Agent 定义 → AgentTool → runAgent → fork/worktree/swarm

入口设计:cli.tsx 双路径分发

入口点 cli.tsx 不是简单的转发器,它实现了两条截然不同的路径:

路径 内容 设计意图
轻路径 单次操作(--version、daemon workers、桥接、后台会话管理、模板命令) 无需完整运行时,快速响应
重路径 完整交互式 REPL 运行时 加载所有子系统
💡 设计决策

Claude Code 是一组由多种运行模式共享的核心基础设施。Agent 不只存在于当前 CLI 会话——它们可能在:前台 REPL、本地后台任务、进程内队友、Tmux 面板队友、独立 Worktree、远程 CCR 会话中。入口层的这种分离防止了不同模式的 Agent 系统冲突

推理循环:query.ts 的 Agent Turn

query.ts 是核心推理引擎,实现了一个完整的 Agent Turn Loop,而非简单的请求-响应循环:

1. 收集消息
2. 组织 System Prompt / User Context / Tool Context
3. 调用模型
4. 处理流式输出
5. 提取 Tool Use
6. 执行工具
7. 将工具结果回注消息流
8. 必要时继续下一轮
9. 处理中断、压缩、预算、钩子、恢复

关键设计决策

决策 实现 解决问题
显式状态分离 不可变 params vs 可变循环状态 防止复杂 Turn 中压缩和异常恢复的状态管理灾难
原生"长 Turn"支持 "任务完成了吗?"而非"聊天记录" auto-compact、micro-compact、token budget、stop hooks
工具执行在主循环中 工具是推理的内在部分 自然的预算控制、内容替换/压缩、进度消息

工具系统:受治理的执行面

工具系统遵循三大原则:

原则 描述
动态裁剪 工具基于 Feature Gate、用户类型、LSP 状态、Worktree 状态、Swarm 状态、插件/MCP 状态、权限模式动态构建——永远不是固定的
工具即 Prompt 工程 工具列表构成模型的"操作世界观"。Claude Code 精心管理哪些工具暴露、隐藏或受限
可观测与统计执行 工具执行路径处理遥测、权限决策、钩子、追踪、进度和错误分类

并发安全:toolOrchestration.ts

一个小但关键的组件,自动批处理工具调用

这将并发复杂性从模型卸载到运行时——模型不需要理解并发安全,运行时自动处理。

任务系统:Agent 作为一等公民

每个 Agent 表示为一个 Task,具有:

属性 用途
ID、类型、状态、描述 统一身份和生命周期
开始/结束时间 可观测性
outputFile 一等公民——支持恢复、通知、旁路记录;后台 Agent 无需持久前台 UI
<task-notification> 完成/失败/停止时生成的消息——主 Agent 无需阻塞即可收到更新

多 Agent 架构:三层隔离

AgentTool.tsx 是多 Agent 设计的核心门面,暴露统一接口并路由到不同后端:

AgentTool
  ├── Local agent(本地 Agent)
  ├── Teammate agent(团队 Agent)
  ├── Fork subagent(Fork 子 Agent)
  ├── Remote agent(远程 Agent)
  └── Worktree agent(Worktree Agent)

三层 Agent 形态

类型 隔离级别 适用场景
1 普通子 Agent 在本地 query loop 中运行 简单委派
2 进程内队友 同一 Node.js 进程,上下文隔离 性能/复杂度平衡
3 隔离 Agent Worktree/远程 更强隔离,更长运行时间

Agent 定义即数据

Agent 是可加载、可组合、基于插件的配置对象,而非硬编码的角色。每个 Agent 定义包括:

🎯 关键创新

Claude Code 的多 Agent 设计不是"支持子 Agent"那么简单。它统一了子 Agent、后台任务、远程任务、团队协作、权限审批、上下文复用和结果通知——这些在大多数框架中是独立系统,在 Claude Code 中共享同一个 Task + Tool 语义框架。这是从"工具"到"平台"的质变。

上下文管理:压缩与记忆

三层 Agent 记忆

范围 描述 持久性
用户级 跨所有项目持久化 永久
项目级 项目内共享 项目生命周期
本地级 会话作用域 会话结束即清除

上下文压缩机制

权限系统:主干而非补丁

权限系统被集成到核心执行流程中,而非作为安全补丁后加:

机制 实现 设计意图
ToolUseContext + ToolPermissionContext 管控每次工具调用 细粒度权限控制
Leader 审批模型 Worker 可发起操作,但最终决定权在 Leader UI 防止"权限提示疲劳"
集中决策 Agent 不能悄悄越权 可审计、可追溯

与 Cursor 3 / OpenClaw 技术对比

维度 Claude Code Cursor 3 OpenClaw
架构核心 Agent 运行时(终端) Agent 工作台(IDE) Agent 框架(IDE 扩展)
Agent 隔离 三层(进程内/Worktree/远程) Git Worktree 8 Agent 并行 Skills 隔离 + MCP 沙箱
模型层 Claude 系列(闭源) Composer 2(自研 MoE)+ 第三方 模型无关(BYOK)
权限模型 Leader 审批集中制 Composer 审批流 Skills 白名单 + NemoClaw 护栏
工具扩展 MCP 原生 + 插件 + 技能 MCP 支持 + SDK Skills + MCP + ClawHub
上下文管理 三层记忆 + Auto-compact 项目索引 + Codebase Retrieval 会话级 + RAG
开源程度 ❌ 闭源(源码可读但非 OSI 许可) ❌ 闭源 ✅ MIT 开源
部署模式 CLI 本地 IDE 本地 + Cloud Agent 本地 / 自托管 / 云端
典型用户 高级开发者、DevOps 全栈开发者 企业团队、隐私敏感

10 大创新点与 5 大局限

10 大创新点

# 创新 解决的问题
1 Agent as Task 统一生命周期管理
2 语义工具批处理 高效并发(读并行、写串行)
3 Fork 子 Agent Prompt Cache 成本优化
4 进程内队友隔离 性能/复杂度平衡
5 Leader 审批模型 集中化、非疲劳的权限控制
6 声明式 Agent 定义 工程级可组合角色
7 Agent 专属 MCP 基于角色的能力挂载
8 三层 Agent 记忆 实用的作用域持久化
9 一等隔离 Worktree/远程集成用于长时间任务
10 验证 Agent 反惰性设计(确保质量)

5 大局限

# 局限 影响
1 闭源生态 源码可读但非 OSI 许可,无法 fork/修改/自托管
2 模型绑定 仅支持 Claude 系列,无法使用 GPT/Gemini/DeepSeek
3 Windows 支持 基于 Unix 哲学设计,需要 POSIX 环境(WSL 是最佳选择)
4 学习曲线 配置文件驱动、多模式运行——对非终端用户不友好
5 企业级功能缺失 无 SSO、无审计日志、无合规护栏——企业需自行包装

创新点如何解决 5 大多 Agent 失败模式

失败模式 Claude Code 的解决方案
失控的 Agent Task/Permission/UI 系统
并发混乱 工具分区 / Leader 审批
高成本 Prompt 缓存 / 智能路由
不可恢复的错误 持久化记录 / 元数据
用户困惑 统一 REPL / 通知系统

核心发现

参考来源

  1. VILA-Lab — Dive into Claude Code: 源码级架构分析(v2.1.88, 2026.04)
  2. arXiv:2604.14228 — Dive into Claude Code: The Design Space of Today's and Tomorrow's AI Coding Agents
  3. MrGuo — Claude Code Architecture: A Multi-Agent System in Your Terminal(2026.03)
  4. 腾讯云开发者社区 — Claude Code 架构深度解析:从设计到落地的工程化实践(2026.04)
  5. Claude Code 官方文档 — docs.anthropic.com(2026.05)