Claude Code Agentic 设计文档

目标读者:有一定软件工程背景、希望通过真实项目理解 agentic 系统设计的学习者。 建议用时:约 2.5 小时 阅读语言:中文正文 + 英文技术术语


这个项目是什么?

Claude Code 是 Anthropic 开发的 AI 辅助编程 CLI 工具。它不是一个简单的”问答机器人”,而是一个完整的 agentic system

  • 它可以自主执行多轮工具调用(读文件、改代码、运行命令)
  • 它可以 spawn 子 agent 并行处理复杂任务
  • 它有 permission 管控、memory 管理、context 压缩等完整的 agent 基础设施

这套文档通过分析 Claude Code 的源代码,提炼出其中最有价值的 agentic 设计选择,帮助你建立对真实 agent 系统的直觉。


整体架构

┌─────────────────────────────────────────────────────────────────┐
│                         用户 / IDE / SDK                         │
└────────────────────────────┬────────────────────────────────────┘
                             │ 输入:用户消息
                             ▼
┌─────────────────────────────────────────────────────────────────┐
│                    CLI / Entrypoint Layer                        │
│  entrypoints/cli.tsx  │  entrypoints/sdk/  │  entrypoints/mcp/  │
└────────────────────────────┬────────────────────────────────────┘
                             │
                             ▼
┌─────────────────────────────────────────────────────────────────┐
│                      Query Loop Engine                          │
│         QueryEngine.ts  ←→  query.ts  ←→  query/               │
│     (状态机: QUERY → TOOL_USE → RESULT → QUERY → ...)           │
└──────────────┬────────────────────────────────┬─────────────────┘
               │                                │
               ▼                                ▼
┌──────────────────────────┐    ┌───────────────────────────────┐
│    Claude API (Streaming) │    │      Tool Execution Layer     │
│  services/api/           │    │  services/tools/              │
│  • token budget 追踪      │    │  • StreamingToolExecutor      │
│  • compaction 触发        │    │  • 并发控制 + sibling abort   │
└──────────────────────────┘    └──────────────┬────────────────┘
                                               │
                            ┌──────────────────┼──────────────────┐
                            │                  │                  │
                            ▼                  ▼                  ▼
                     ┌─────────┐        ┌──────────┐      ┌──────────────┐
                     │  File   │        │  Bash /  │      │  AgentTool   │
                     │  Tools  │        │  Shell   │      │ (子 agent)   │
                     └─────────┘        └──────────┘      └──────┬───────┘
                                                                  │
                                         ┌────────────────────────┘
                                         │ spawn
                                         ▼
                              ┌────────────────────────┐
                              │   子 Agent / Coordinator│
                              │   coordinator/          │
                              │   tasks/Local|Remote    │
                              └────────────────────────┘

┌─────────────────────────────────────────────────────────────────┐
│                     横切关注点(Cross-cutting)                   │
│  Permission System  │  Context/Memory  │  Feature Gating        │
│  utils/permissions/ │  memdir/ autoDream│  bootstrap/state.ts   │
└─────────────────────────────────────────────────────────────────┘

核心设计哲学

1. Tool 是 Agent 触碰世界的唯一手段 Agent 的所有副作用(写文件、执行命令、发消息)都必须经过 Tool 接口,这使得权限控制、审计日志、测试 mock 都可以在一个地方统一处理。

2. Text is the protocol Agent 之间通过 <task-notification> XML 消息通信,memory 以 Markdown 文件存储,permission rules 是 Bash(git *) 这样的字符串模式。用文本作为协议,意味着 AI 模型自己也可以读懂并调试这些通信内容。

3. Failure modes are first-class 每个长时间运行的操作都有明确的 abort 路径,例如:连续 3 次 permission denial 就回退到手动提示;并行 tool 中一个失败会触发 sibling abort;compaction 失败有 rollback 保护。

4. Context window 是最稀缺的资源 整个系统的大量设计决策(system prompt 的静态/动态分割、token budget 追踪、auto-dream 后台压缩)都围绕着”如何最大化利用有限的 context window”展开。

5. 编译期与运行期特性隔离 内部功能通过 Bun 的 feature() API 在编译时消除,不出现在公开二进制文件中;运行时行为通过 GrowthBook runtime flags 动态控制。


建议阅读顺序

编号 文档 用时 核心问题 新增内容
00 代码库目录全景 30 min “这个 repo 里有什么?” 完整文件系统导航
01 核心 Query Loop 25 min “Agent 是如何循环运作的?” System Reminders、三层压缩、Co-evolution 设计
02 Tool 系统 25 min “Tool 是怎么被定义和执行的?” 延迟工具发现、Prompt cache 优化、流式并发执行
03 多 Agent 协调 30 min “多个 agent 怎么协作?” 四种 agent 类型、Coordinator 4 阶段、XML 协议
04 Permission 系统 25 min “Agent 怎么知道自己能做什么?” 五层防线、YOLO 分类器、路径安全
05 Context 与 Memory 30 min “Context window 满了怎么办?” Cache-aware 分层、三层压缩、autoDream 巩固
06 Feature Flag 系统 15 min “内部功能是怎么隐藏的?” 编译期/运行期双层隔离、KAIROS/ULTRAPLAN/BUDDY
07 Error Handling 20 min “失败时怎么办?” Abort 信号传播、熔断器、分层恢复
08 Terminal UI 20 min “用户怎么看到输出?” React+Ink 渲染、print.ts 输出漏斗、Typeahead
09 Session State 15 min “Session 如何持久化?” Bootstrap 启动、JSONL 格式、Session 恢复
10 Bridge & Remote 20 min “多客户端如何协作?” JWT 认证、WebSocket 扇出、设备信任
11 Slash Commands 15 min “88 个命令是怎么工作的?” Command 路由、NDJSON 输出、用户技能定义
12 MCP Integration 20 min “怎样连接外部工具和 IDE?” 双重 Server/Client 角色、MCPTool 代理、MCPSearch 模式

预计总用时:5–6 小时全读,1.5–2 小时快速扫描(新增 Phase 4-6 内容)


本次更新(2026 年 4 月)

基于 2026 年 3 月源码泄露(Kuberwastaken deepwiki 分析 + compass.md 深度研究)对所有文档的重大扩充:

新增关键洞察

  • System Reminders(比 system prompt 更有效):嵌入在工具结果中的指令,在长会话中的遵从率显著更高
  • Prompt Cache 优化:字母排序的工具列表、静态/动态 system prompt 分割,单个 session 可节省 50% API 成本
  • 三层压缩策略:MicroCompact(本地)→ AutoCompact(API)→ SnipCompact(激进修剪)
  • autoDream 自动化:每 24 小时后台巩固 MEMORY.md,用户无感,长期知识不丢失
  • 五层权限防线:Mode → Rules → Risk Classification → YOLO Classifier → User Prompt
  • Coordinator 4 阶段:Research → Synthesis → Implementation → Verification,用 XML 协议通信
  • 四种 Agent 类型:local(进程内) / remote(CCR 云容器,最多 30min) / forked(子进程) / teammate(同进程伴侣)

数据与事实

  • 实际代码统计:QueryEngine ~46K 行、Tool.ts ~29K 行、commands.ts ~25K 行、权限系统 300+ KB、AgentTool ~233 KB
  • 工具数量:40+ 权限门控工具,其中 ~18 个延迟发现
  • 系统提示词规模:~8000–12000 tokens(基础 ~2900 + 工具定义 ~3000 + 补充内容)
  • 内部代号:Tengu(主项目)、Capybara(Claude 4.6)、KAIROS(永驻助手)、ULTRAPLAN(深度规划 30min)、BUDDY(电子宠物)
  • 未发布功能:44 个功能标志,包括 VOICE_MODE、BRIDGE_MODE、CHICAGO(计算机使用)等

如何使用这套文档

  • 按顺序读:00 → 01 → 02 → 03 → 04 → 05 → 06,每篇都假设你已读过前面的内容
  • 跳读:如果你已熟悉某个概念,可以直接跳到感兴趣的章节
  • 对照代码:每篇文档都标注了关键源文件路径和代码行数,随时可以打开源代码对照阅读
  • 关注 Design Decision 专栏:这些是最有学习价值的地方,解释了”为什么这样设计”而不只是”是什么”
  • 阅读表格和代码示例:大量表格总结、流程图和代码片段帮助理解复杂概念

Table of contents


Copyright © 2024 Anthropic. All rights reserved.

This site uses Just the Docs, a documentation theme for Jekyll.