架构

Claude Code 架构

把 Claude Code 理解为 agentic harness:中央循环、上下文系统、工具、扩展、并行工作与可观测性。

一句话理解

Claude Code 不只是一个调用模型的终端工具。它更像一个 agentic harness:组装上下文,让模型推理,执行工具调用,记录结果,再把结果送回循环。

模型很重要,但它只是循环中的一个节点。真正的工程能力来自周围几层:上下文加载、权限、工具、skills、MCP servers、hooks、subagents、worktrees 和会话状态。

这是心智模型,不是私有实现契约

本页用六层模型解释 Claude Code。这个分层适合用来理解产品能力,但不代表 Anthropic 内部一定按这些模块名或边界实现 CLI。

中央 Agent Loop

Claude Code 的每一轮大致是这样:

  1. 组装 prompt:系统指令、项目上下文、对话历史、已加载 skills、可见工具和你的新消息。
  2. 模型基于上下文推理,返回文本或工具请求。
  3. Claude Code 检查权限并分发工具。
  4. 工具结果回到对话。
  5. 循环继续,直到 Claude 回复或任务结束。

这个循环本身故意保持简单。智能主要来自模型,以及控制“模型能看到什么、能做什么、哪些状态能跨时间保留”的外围 harness。

Loop 周围的六层

负责什么用户可见能力
输入层会话启动、信任、权限、命令解析claude/resume、权限模式、workspace trust
知识层项目指令、记忆、上下文加载、压缩CLAUDE.md、AGENTS.md、.claude/rules/、auto memory、/context/compact
执行层内置工具和工具分发Read/Edit/Write、Bash、搜索、web、checkpoints、代码智能
集成层外部系统和扩展边界MCP servers、plugins、channels、hooks
并行层隔离 workers、脚本化编排和独立会话Subagents、dynamic workflows、worktrees、agent view、agent teams
自动化层不需要持续提示也能继续工作/goal/loop、scheduled tasks、routines、channels
云端输出层云端 planning、深度 review 和可分享页面Ultraplan、ultrareview、artifacts
可观测层审计和生命周期控制JSONL transcripts、hooks、/cost/doctor、监控集成

输入层

请求到达模型之前,Claude Code 会先判断当前会话、项目是否可信,以及哪些操作可以无需询问直接执行。

最重要的控制点:

  • 会话身份:新会话、恢复会话、fork 会话或命名会话。
  • 权限模式defaultacceptEditsplanautodontAskbypassPermissions
  • 设置作用域:managed、命令行、本地、项目、用户配置。
  • Workspace trust:Claude Code 是否能在当前目录工作。

这就是为什么同一个 prompt 在 plan mode、CI、可信本地仓库或沙箱中会有不同行为。

知识层

Claude Code 需要的不只是你最新一句话。它会从多处构建工作上下文:

  • 来自 CLAUDE.md.claude/CLAUDE.md、嵌套 CLAUDE.md 和 AGENTS.md 的项目指令。
  • 来自 .claude/rules/ 的规则,包括读取匹配文件时才加载的路径规则。
  • 仓库级 Claude memory store 中的 auto memory。
  • 启动时加载 skill descriptions,真正触发时才加载完整 skill。
  • 启动时加载 MCP tool names,更大的 tool definitions 延迟到需要时。
  • 对话历史、文件读取、工具输出和 compact summary。

当上下文窗口接近满时,Claude Code 会自动压缩。不要把某个精确百分比或内部抽取顺序当成 API 契约。更可靠的实践是:持久规则放文件里,高噪声探索交给 subagents,长会话主动 /compact/clear

执行层

执行层就是工具运行时。工具把推理变成行动:

  • 文件工具读取、编辑、创建和重组代码。
  • 搜索工具查找文件、符号和文本。
  • Bash 跑测试、构建、git 命令和本地脚本。
  • Checkpoints 给文件编辑做快照,方便 rewind。
  • 代码智能插件补充语言服务器导航和诊断。

每次工具调用的结果都会回到 loop。好的 Claude Code 会话通常不是“一次性大答案”,而是很多小的 observe-act-verify 循环。

集成层

Claude Code 连接仓库外部系统后会更强:

  • MCP servers 暴露外部工具和资源,比如数据库、issue tracker、文档、浏览器、内部 API。
  • Hooks 在生命周期事件上运行确定性自动化。
  • Plugins 把 skills、agents、hooks 和 MCP servers 打包,供项目或团队复用。
  • Channels 和远程集成可以把外部事件推入正在运行的会话。

Claude 需要外部数据或动作时用 MCP;某件事必须每次发生时用 hooks;一套配置变成可复用资产时用 plugins。

并行层

Claude Code 现在有几种并行模型,解决的问题不同:

模型隔离方式通信方式适合场景
Subagent同一会话内的独立上下文结果摘要返回 parent高噪声研究、测试运行、专门 worker
Dynamic workflowScript runtime 协调大量 agentsScript 聚合结果大规模审计、研究、迁移、交叉验证
Agent view独立后台 sessions人来监督 sessions管理多个独立任务
Worktree session独立目录和分支人来协调独立分支或实验
Agent team独立 Claude Code 实例共享任务列表和直接消息需要互相沟通的复杂工作

Subagents 默认解决上下文隔离。Worktrees 默认解决文件隔离。Agent teams 更重,而且仍是实验能力,但适合多个 agent 需要互相交流的任务。

可观测层

Claude Code 会记录和暴露运行过程,方便你调试行为:

  • 会话 transcript 本地以 JSONL 保存。
  • /cost/context/doctor/hooks/mcp 展示运行状态。
  • Hooks 可以审计或阻止生命周期事件。
  • 监控集成可以导出 usage、trace 和运维信号。

Agent 不能只看最后有没有 diff。你还需要知道它看了什么、尝试了什么、改了什么、哪里需要人类审批。

实践含义

  • 持久事实放 CLAUDE.md 或 rules,不放聊天里。
  • 重复流程放 skills,不塞进巨大的 CLAUDE.md。
  • 高噪声探索交给 subagents,不污染主上下文。
  • 广泛、可重复的 fan-out 交给 dynamic workflows 或 ultracode。
  • 并行编辑放 worktrees。
  • 只有 worker 需要互相沟通时才用 agent teams。
  • 监督多个独立 sessions 时用 agent view。
  • 确定性强制用 hooks。
  • 外部系统连接用 MCP。
  • 需要 Claude 持续工作时,用 /goal/loop、routines 和 channels。
  • 可复用配置用 plugins。

官方参考

继续实践

Claude Code 架构 的核心概念已经读完

如果你想把理解变成可复用的能力,可以到 AgentWay 继续练习