外观
架构内部
Claude Code 运行时的底层机制。
主循环
Claude Code 的核心执行由两个嵌套循环组成:内层智能体循环——只要返回工具调用就持续调用 API;外层对话循环——在用户响应时开始新轮次。
ASCII 版本
Plain
用户输入
│
构建提示词(系统 + 上下文 + 工具)
│
┌── 智能体循环 ───────────────────────┐
│ Claude API ◄────────────────────┐ │
│ │ │ │
│ 有工具调用? │ │
│ ├─ 是 → 执行工具 ──────────────┘ │
│ └─ 否 → 退出循环 │
└────────────────────────────────────┘
│
展示响应
│
用户下一条消息?──► 是 → 重建提示词 → 循环
└─ 否 → 会话结束来源:「架构:主循环」 — 第 ~72 行
来源确认(2026-03-31):内层循环为 queryLoop() 异步生成器。工具通过 StreamingToolExecutor 执行(最多 10 个并发)。循环通过 10 种终止原因之一退出(completed、max_turns、aborted_tools 等)。
工具分类与选择
Claude Code 有 6 种工具类别,各自针对不同操作进行优化。了解 Claude 选择哪种工具(以及原因),有助于你编写能引导更好工具选择的指令。
ASCII 版本
Plain
读取: 文件匹配工具(查找)、搜索工具(搜索)、读取工具(内容)、LS(列表)
写入: 写入工具(创建)、编辑工具(修改)、MultiEdit(批量)
执行: Bash 工具(Shell)、任务工具(子智能体)← 最强大/高风险
Web: WebSearch、WebFetch
工作流: TodoWrite、NotebookEdit
控制: EnterPlanMode/ExitPlanMode、EnterWorktree/ExitWorktree、AskUserQuestion来源:「架构:工具」 — 第 ~213 行
已简化——还有更多工具可用。完整列表见 「架构:工具集」。
系统提示词组装
在每次 API 调用前,Claude Code 会按照特定顺序从多个来源组装系统提示词。提示词被分为两个缓存区域,中间由边界标记分隔。
ASCII 版本
Plain
静态区域(全局可缓存,跨组织):
1. 基础指令(硬编码)
2. ~/.claude/CLAUDE.md
3. /project/CLAUDE.md + 子目录
4. 工具定义列表
────── 边界标记 ──────
动态区域(按会话缓存):
5. 工作目录 + Git 状态
6. MCP 服务器能力(始终重新计算)
7. 记忆、会话指导、语言设置
──────────────────────
→ 全部合并 → Claude API 调用来源:「架构:系统提示词」 — 第 ~354 行
来源确认(2026-03-31):通过 SYSTEM_PROMPT_DYNAMIC_BOUNDARY 标记实现两区域架构。静态区域设有 cacheScope: 'global'(所有用户共享)。MCP 指令明确不缓存——源码注释:「服务器在每轮之间连接/断开」。
子智能体上下文隔离
子智能体与父级完全隔离——它们无法读取父级的对话,也无法修改父级状态。这种隔离既是一种安全特性,也是有意为之的设计约束。
ASCII 版本
Plain
父级(完整上下文)
│
Task(prompt, tools=[...])
│
▼
子智能体(隔离)
输入:提示词 + 工具授权 仅此而已
能做:独立使用已授权的工具
不能做:查看父级对话、修改父级状态
输出:仅文本结果
│
▼
父级接收:文本字符串来源:「架构:子智能体」 — 第 ~444 行
相关文章
来源:飞书 · AI Spark 知识库 | 原文(最新版):https://lcnniolukk80.feishu.cn/wiki/JqpSwTSxniIlJLkbcsYccpqAnNc | 归档:2026-06-04