Agent工具 高级 Claude Code 架构设计 ACP协议 MCP

Claude Code 架构剖析:Anthropic终端Agent的设计哲学

AIEng Hub
阅读约 18 分钟

引言

2025年,Anthropic 发布了 Claude Code——一个直接运行在终端中的 AI 编程助手。与传统的 IDE 插件或 Web 聊天界面不同,Claude Code 以 CLI 的形式深度嵌入开发者的日常工作流,标志着 AI Agent 从”对话式辅助”向”自主编程”的关键跨越。

Claude Code 不仅仅是一个”能写代码的聊天机器人”,而是一个完整的终端 Agent 系统,融合了模型上下文管理、工具编排、安全沙箱、跨进程通信等多层架构设计。本文将从底层架构出发,系统剖析 Claude Code 的设计哲学与实现技术。

整体架构概览

Claude Code 的架构可以概括为三层四模块的层次化设计:

┌─────────────────────────────────────────────────────┐
│                  用户交互层                           │
│  ┌──────────────┐  ┌──────────────┐  ┌────────────┐ │
│  │  终端CLI     │  │  ACP客户端   │  │  MCP客户端  │ │
│  │ (REPL模式)   │  │ (Agent间通信)│  │ (工具扩展)  │ │
│  └──────┬───────┘  └──────┬───────┘  └─────┬──────┘ │
├─────────┼─────────────────┼─────────────────┼────────┤
│         │     Agent核心层  │                 │        │
│  ┌──────┴──────────────────┴─────────────────┴──────┐│
│  │              编排引擎(Orchestrator)              ││
│  │  ┌──────────┐ ┌──────────┐ ┌──────────────────┐  ││
│  │  │ 推理循环  │ │ 上下文管理 │ │  工具调度器     │  ││
│  │  │(Think→Act)│ │(Token优化)│ │(Tool Router)    │  ││
│  │  └────┬─────┘ └────┬─────┘ └────────┬─────────┘  ││
│  │       └────────────┼────────────────┘             ││
│  │              ┌─────┴──────┐                       ││
│  │              │ 安全审计层  │                       ││
│  │              │(PBC / ACL) │                       ││
│  │              └────────────┘                       ││
│  └───────────────────────────────────────────────────┘│
├───────────────────────────────────────────────────────┤
│                   工具执行层                            │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│  │ 文件系统  │ │ Shell执行 │ │  Git操作 │ │  网络请求 │ │
│  │ (Read/Edit)│ │ (Sandbox) │ │(Commit/PR)│ │ (HTTP)  │ │
│  └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└───────────────────────────────────────────────────────┘

三层架构说明

  1. 用户交互层:负责与用户进行交互,包括终端 REPL、ACP 跨 Agent 通信、MCP 工具扩展三种模式
  2. Agent核心层:编排引擎驱动推理→行动循环,管理上下文窗口,调度工具调用,执行安全检查
  3. 工具执行层:具体执行文件操作、Shell 命令、Git 操作等底层工具

Claude 模型集成方式

模型选择策略

Claude Code 支持多个 Claude 模型,核心选择策略如下:

模型适用场景特点
claude-sonnet-4日常开发(推荐)速度快、性价比高、适合绝大多数编程任务
claude-opus-4复杂推理更强的分析和推理能力,适合架构设计和调试
claude-haiku快速预览轻量级,适合简单查询

Claude Code 的默认模型是 Sonnet,这一选择背后有深刻的工程考量:编程任务中超过 80% 的操作是文件读写、代码补全、简单的重构,Sonnet 在延迟和质量之间取得了最佳平衡。

模型切换机制

用户可以通过 --model 参数或在配置文件中切换模型:

# 使用 Sonnet(默认)
claude

# 切换到 Opus 处理复杂任务
claude --model claude-opus-4

# 使用轻量模型做快速预览
claude --model claude-haiku

底层 API 集成

Claude Code 使用 Anthropic 的 Messages API,通过 streaming 模式实现实时响应。关键特性:

  • 流式输出:模型输出 token 实时推送到终端,用户能看到思考过程
  • Tool Use(工具调用):原生支持 Function Calling 风格的 tool use API,模型可以请求调用工具
  • Extended Thinking:Opus 模型支持 extended thinking 模式,在复杂推理任务中提供更深入的思考链

工具系统设计

Claude Code 的工具系统是其核心能力的基础。每个工具都是功能原子化的单一职责模块。

核心工具清单

Claude Code 内置了以下几类核心工具:

1. 文件操作工具

┌─────────────────────────────────────────────────┐
│              文件操作工具集                        │
├─────────────────────────────────────────────────┤
│  • Read(读取文件)                               │
│    - 按行读取,支持 offset/limit                  │
│    - 自动检测编码                                │
│  • Write(写入文件)                              │
│    - 完整覆盖写入                                │
│    - 自动格式化                                  │
│  • Edit(精确编辑)                              │
│    - 基于字符串匹配的编辑                         │
│    - 支持多行替换                                │
│  • GlobSearch(文件搜索)                        │
│    - 按文件名模式搜索                            │
│    - 支持递归遍历                                │
│  • GrepSearch(内容搜索)                        │
│    - 正则表达式全文搜索                          │
│    - 支持上下文行                               │
└─────────────────────────────────────────────────┘

这些工具的设计借鉴了 VS Code 和现代 IDE 的文件操作模式,但进行了 Agent 友好化改造——每个工具的输入输出都经过结构化设计,方便模型理解和调用。

2. Shell 执行工具

Shell 工具允许 Claude Code 在终端中执行命令:

# Claude Code 可以执行任意 shell 命令
npm run build
python test.py
docker compose up -d

关键安全机制:

  • 命令审批:默认所有 shell 命令需要用户确认(可通过 --dangerously-skip-permissions 跳过)
  • 超时控制:长时间运行的命令会被自动中断
  • 输出截断:大量输出会被截断以防止上下文溢出

3. Git 操作工具

Claude Code 可以执行完整的 Git 工作流操作:

  • git diff / git show:查看变更
  • git commit:创建提交(自动生成提交信息)
  • git push:推送代码
  • git status / git log:查看状态和日志

值得注意的是,Claude Code 在 commit 时能自动分析变更内容,生成高质量的 commit message。

工具调用流程

用户请求 → 模型分析 → 选择工具 → 执行工具 → 结果返回 → 模型推理 → 下一轮
   │          │          │          │          │          │
   │          │          │          │          │          │
   └──────────┴──────────┴──────────┴──────────┴──────────┘
                    循环直到任务完成

每次工具调用的完整生命周期:

  1. 模型输出 tool_use:Claude 生成一个 tool_use 请求,包含工具名称和参数
  2. 编排引擎接收并验证:检查参数合法性、权限认证
  3. 工具调度器分发:将请求路由到具体的工具执行器
  4. Sandbox 执行:在隔离环境中执行工具操作
  5. 结果返回:工具执行结果(stdout/stderr/返回值)作为 tool_result 送回模型
  6. 模型继续推理:基于结果决定下一步行动

ACP 协议:Agent 间通信

ACP(Agent Communication Protocol)是 Anthropic 提出的一种 Agent 间通信协议,允许不同的 AI Agent 相互协作。

ACP 的核心设计

ACP 在 Claude Code 中的实现遵循以下设计原则:

┌─────────────────┐         ACP 协议         ┌─────────────────┐
│  Claude Code A  │ ◄──────────────────────► │  Claude Code B  │
│  (主Agent)      │     Agent到Agent通信      │  (子Agent)      │
└─────────────────┘                          └─────────────────┘
        │                                            │
        │ 发送任务                                    │ 返回结果
        ▼                                            ▼
    ┌─────────────────────────────────────────────────────┐
    │                    ACP 信道                          │
    │  • 任务描述(自然语言)                               │
    │  • 上下文传递(文件、代码片段)                      │
    │  • 结果返回(结构化数据)                            │
    │  • 进度通知(事件驱动)                              │
    └─────────────────────────────────────────────────────┘

ACP 的工作模式

Claude Code 支持两种 ACP 运行模式:

1. 父子模式(Parent-Child)

主 Agent 将任务分解后分配给子 Agent,子 Agent 独立执行并返回结果。适合大型项目的模块化开发。

2. 对等模式(Peer-to-Peer)

多个 Agent 平等协作,各自负责不同领域,通过 ACP 交换中间结果。适合跨领域复杂任务。

使用 ACP 启动 Claude Code 子进程:

# 启动一个子 Agent 执行特定任务
claude --acp-mode child --parent-pipe /tmp/claude-acp-parent

# 或者在对等模式下连接
claude --acp-mode peer --channel acp://channel-name

MCP 集成:工具扩展生态

MCP(Model Context Protocol)是 Anthropic 推动的开放协议标准,Claude Code 是 MCP 的重要客户端之一。

MCP 在 Claude Code 中的角色

MCP 允许开发者扩展 Claude Code 的工具集。通过配置 MCP 服务器,可以为 Claude Code 增加数据库查询、API 调用、自定义工作流等能力。

┌───────────────────┐
│   Claude Code     │
│   (MCP Client)    │
└────────┬──────────┘
         │ MCP 协议(JSON-RPC over stdio/SSE)

    ┌────┴────┬──────────┬──────────┐
    │         │          │          │
    ▼         ▼          ▼          ▼
┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐
│ MCP    │ │ MCP    │ │ MCP    │ │ MCP    │
│ Server │ │ Server │ │ Server │ │ Server │
│ (文件)  │ │ (数据库)│ │ (API)  │ │ (自定义)│
└────────┘ └────────┘ └────────┘ └────────┘

MCP 服务器配置

~/.claude/settings.json 中配置 MCP 服务器:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_TOKEN": "ghp_xxx"
      }
    },
    "custom-db": {
      "command": "python",
      "args": ["path/to/mcp-server.py"]
    }
  }
}

MCP 集成使 Claude Code 从一个终端编程助手扩展为全功能的开发平台 Agent

安全机制:PBC 与 ACL

Claude Code 设计了多层次安全机制,在 Agent 自主性和开发者控制权之间找到平衡。

PBC(Project-Based Configuration)

PBC 允许在项目级别配置 Claude Code 的行为:

// .claude/settings.json (项目级配置)
{
  "project": {
    "name": "my-app",
    "buildCommand": "npm run build",
    "testCommand": "npm test"
  },
  "permissions": {
    "allowCommands": ["npm", "node", "git", "docker"],
    "denyCommands": ["rm -rf", "curl"],
    "allowPaths": ["/home/user/projects/my-app"],
    "denyPaths": ["/home/user/projects/my-app/.env"]
  }
}

ACL(Access Control List)

ACL 提供细粒度的权限控制:

权限级别说明适用场景
allow-all允许所有操作个人开发环境
ask-first每次操作前询问默认设置,推荐生产环境
deny-all禁止所有操作沙箱/审核环境

ACL 支持按工具类型分别设置:

{
  "acl": {
    "read": "allow-all",
    "edit": "ask-first",
    "shell": "ask-first",
    "git": "ask-first",
    "network": "deny-all"
  }
}

安全审计日志

Claude Code 记录所有工具调用的审计日志:

[2026-05-09 10:23:45] TOOL: Read → src/app.ts (approved)
[2026-05-09 10:23:47] TOOL: Edit → src/app.ts:34-42 (approved)
[2026-05-09 10:23:50] TOOL: Shell → npm run build (approved)
[2026-05-09 10:24:01] TOOL: Shell → curl http://internal-api/ (⚠️ denied)

上下文管理策略

上下文管理是 Agent 系统最关键的工程挑战之一。Claude Code 采用了多级上下文管理策略。

上下文层级

┌──────────────────────────────────────────────┐
│           系统提示(System Prompt)            │
│  • 角色定义                                  │
│  • 工具使用指南                              │
│  • 行为约束                                  │
├──────────────────────────────────────────────┤
│            项目上下文(Project Context)       │
│  • 项目结构概述                              │
│  • 配置文件内容                              │
│  • 依赖声明                                  │
├──────────────────────────────────────────────┤
│            对话历史(Conversation History)    │
│  • 用户请求                                  │
│  • Agent响应                                │
│  • 工具调用记录                              │
├──────────────────────────────────────────────┤
│            当前焦点(Active Context)          │
│  • 当前文件内容                              │
│  • 最近的代码变更                            │
│  • 错误输出                                  │
└──────────────────────────────────────────────┘

Token 优化策略

  1. 滑动窗口:对话历史使用滑动窗口,丢弃最早的非关键消息
  2. 摘要压缩:长对话中,对早期内容进行摘要压缩
  3. 文件截断:读取大文件时只返回关键部分(头部的类型定义、函数签名等)
  4. 智能排序:相关内容优先保留,不相关内容优先丢弃

/compact 命令

当上下文接近上限时,用户可以使用 /compact 命令压缩上下文:

/compact
→ 正在压缩对话上下文...
→ 已从 52K tokens 压缩至 8K tokens
→ 保留了关键决策和文件变更记录

与普通 Agent 框架的区别

Claude Code 与 LangChain Agent、AutoGPT 等通用 Agent 框架有本质区别:

维度Claude Code通用 Agent 框架
使用方式终端 CLI,零配置启动需要编写代码构建
工具集内置编程相关工具,开箱即用需要手动注册工具
上下文管理自动管理,支持 /compact需开发者自行实现
安全机制内置 PBC / ACL 层级控制需额外集成
模型绑定深度绑定 Claude 模型模型无关,灵活切换
协议支持原生支持 ACP / MCP需额外适配
部署方式npm 全局安装,本地运行SDK 集成到应用中

核心差异在于:Claude Code 是面向终端编程场景的专用 Agent 产品,而通用框架是构建自定义 Agent 的开发工具。前者追求开箱即用的编程体验,后者提供灵活的自定义能力。

总结

Claude Code 的架构设计体现了 Anthropic 对”终端 AI 编程助手”这一场景的深刻理解:

  1. 三层架构:用户交互层、Agent 核心层、工具执行层,层次清晰职责分明
  2. 工具系统:功能原子化的工具集,配合安全审计机制,在自主性和可控性间取得平衡
  3. 协议生态:ACP 实现 Agent 间通信,MCP 实现工具扩展,构建开放生态
  4. 上下文管理:多级上下文策略配合滑动窗口和压缩机制,有效应对长任务
  5. 安全优先:PBC + ACL 多层安全模型,让开发者放心授权

与其他 Agent 框架不同,Claude Code 是一个面向终端编程的专用 Agent 产品——安装即用,安全可控,且通过 ACP 和 MCP 保持了良好的可扩展性。


本文最后更新于 2026-05-09