跳转至

Claude Code 架构解析

Ch01.1507 Claude Code 架构解析

📊 Level ⭐⭐⭐ | 9.5KB | entities/claude-code-architecture.md

Overview

Claude Code 源码拆解(by 无岳,阿里云开发者,2026-04-15)。核心论点:真正决定 Agent 能不能长期活下去的,不是模型,而是围着模型搭起来的运行时。

核心 Insight

# Insight 模块
1 启动层决定架构寿命 启动链路
2 UI 是 runtime 操作台,不是文本展示壳 REPL
3 连续运行是状态机,不是函数调用 Query Loop
4 工具层收敛横切复杂度,是稳定性关键 Tool Runtime
5 权限 = 逻辑授权 + 执行隔离,不是弹窗 Permission
6 多 Agent 核心是任务抽象,不是 prompt 分工 Task
7 平台扩展性 = 外部多样 + 内部收敛 扩展层

子页面

深度分析

Claude Code 架构的核心价值在于将"野生函数"转化为"带完整运行时语义的受控对象",这意味着工具层不是简单暴露函数调用,而是包含了执行上下文、权限校验、状态管理的完整运行时。^(raw/articles/claude-code-architecture-analysis) 六大模块构成一个分层架构:入口链路负责进程初始化与状态分离;REPL 作为 runtime 操作台持续与用户保持交互;Query Loop 以状态机模式驱动连续运行,支持 Compact 压缩与恢复;Tool Runtime 是横切复杂度的收敛点;Permission System 提供完整决策链而非单纯弹窗;Task 抽象为多 Agent 提供了统一任务收回机制。^(raw/articles/claude-code-architecture-analysis) 这个架构最值得注意的设计原则是"外部动态、内部收敛"——MCP/Skills/Plugins 可以动态扩展,但内部模块边界清晰、依赖关系稳定。这直接回答了为什么很多 Agent 系统在 Demo 阶段很强但一旦工具变多就开始"变形":它们缺少一个真正承接复杂度的运行时架构。^(raw/articles/claude-code-architecture-analysis)

补充:多 Agent 协作源码深析 — 上下文隔离即核心机制(AllenTang 2026-07-22)

AllenTang 对 Claude Code 多 Agent 模块的源码级拆解,核心命题:多 Agent 协作切分的不是能力,而是上下文。子 Agent 不比主 Agent 多懂什么,它唯一强的地方是"桌子干净"(全新的上下文窗口)。

Orchestrator / Subagent 角色划分

角色 工具集 职责
Orchestrator(编排者) task, read_file, list_dir(只读+派发) 规划、分解、汇总,不直接执行会改环境的工具
Subagent(子 Agent) bash, write_file, read_file(执行权限) 做具体操作,默认不能派出子 Agent

编排者和执行者的工具集互补、不重叠,防止编排者绕过规划直接改文件,也防止执行者自行派发无限递归。

Task 工具机制

  • 形态:普通工具调用(继承 AgentTool 接口)
  • 输入:{ subagent_type, prompt } — 子 Agent 类型 + 任务描述(唯一输入)
  • 输出:子 Agent 的最后一条消息
  • 执行:runSubagent() — 全新的 Agent Loop,没有任何特殊执行路径

子 Agent 定义是一个 markdown 文件(.claude/agents/*.md),三个字段各有读者:

字段 读者 用途
name 系统 标识
description 主 Agent 的模型 路由决策依据("这事派给谁")
tools 权限系统 工具白名单
正文 子 Agent 自己 system prompt

description 即接口 — 写得含糊就会派错活。

上下文隔离设计

子 Agent 启动时拿到全新上下文

  • 独立 system prompt
  • 独立工具定义
  • 对话历史 = 父 Agent 写的任务描述(一条消息)
  • 父 Agent 的原始对话历史一概不可见

完成后,进入父 Agent 上下文的只有子 Agent 的最后一条消息。中间过程一概不返回。

"新桌子"隐喻:上下文窗口是 Agent 的桌子。子 Agent 把一摞资料挪到自己桌上看完,交回一页结论。父 Agent 桌上多一页纸,少一万页资料。

核心设计决策

  1. 权限交集:子 Agent 的工具集 = 定义声明 ∩ 父 Agent 拥有的工具,默认去掉 task 工具
  2. 预算只减不增:子 Agent 的 token 预算从父 Agent 剩余预算切分
  3. Agent Loop 复用:子 Agent 跑标准 Agent Loop,无特殊执行路径
  4. 模型即调度器:并行/串行的判断由模型决定 — 没有写调度器
  5. Loose coupling:父 Agent 和子 Agent 通过工具调用结果解耦,父不知道子内部的执行过程

实践启示

  1. 运行时比模型更重要:在评估或构建 Agent 系统时,首先看工具层的完整性和运行时语义的严谨程度,而不是模型本身的能力。
  2. 状态机优于函数调用:连续运行场景下,用状态机模式管理 Query Loop 比简单的函数递归更稳定,也更容易支持中断恢复。
  3. 权限设计即架构决策:Permission System 不只是安全特性,它是架构的一部分——自动判定 + 交互确认 + 沙箱执行构成完整决策链。
  4. 多 Agent 的核心是任务抽象:不是 prompt 分工,而是能否把分出去的任务执行结果统一收回并协调。
  5. 扩展性需要内部收敛来保障:外部插件再多,内部模块边界必须清晰;否则系统随复杂度增长必然腐化。

架构图

C4 架构图

相关实体