Claude Code 源码深度解析(下):多 Agent 编排与创新设计
上篇我们分析了架构分层、QueryEngine 核心引擎和工具系统。本篇深入最核心的创新——多 Agent 系统、记忆管理、高级模式,以及那些让 Claude Code 不同于其他 AI 编码工具的设计。

一、多 Agent 系统:Claude Code 的灵魂
1.1 AgentTool 全景架构
AgentTool 是 Claude Code 最复杂的工具,包含 14 个核心子模块 + 6 个内置 Agent:
tools/AgentTool/
├── AgentTool.tsx # 主入口 —— Agent 的"大门"
├── UI.tsx # Agent 执行状态 UI 组件
├── agentColorManager.ts # 颜色管理 —— 每个 Agent 分配唯一颜色
├── agentDisplay.ts # 实时显示 Agent 执行状态
├── agentMemory.ts # Agent 级别的记忆管理
├── agentMemorySnapshot.ts # 记忆快照 —— 持久化到磁盘
├── agentToolUtils.ts # Agent 工具辅助函数
├── builtInAgents.ts # 内置 Agent 注册表
├── constants.ts # Agent 相关常量
├── forkSubagent.ts # 子 Agent 派生 —— 核心操作
├── loadAgentsDir.ts # 加载用户自定义 Agent 目录
├── prompt.ts # Agent 系统的 Prompt 模板
├── resumeAgent.ts # 恢复暂停的 Agent
└── runAgent.ts # Agent 执行入口
1.2 六种内置 Agent 详解
tools/AgentTool/built-in/
├── claudeCodeGuideAgent.ts # Claude Code 使用指南
├── exploreAgent.ts # 代码库探索 Agent
├── generalPurposeAgent.ts # 通用任务 Agent
├── planAgent.ts # 规划 Agent
├── statuslineSetup.ts # 状态栏配置 Agent
└── verificationAgent.ts # 验证测试 Agent
| Agent | 职责 | 适用场景 |
|---|---|---|
| exploreAgent | 智能搜索代码库 | 需要了解项目结构、查找代码时 |
| planAgent | 分解任务为步骤 | 复杂任务需要先规划再执行 |
| verificationAgent | 执行验证和测试 | 代码修改后需要确认正确性 |
| generalPurposeAgent | 执行任意任务 | 标准的子任务处理 |
| claudeCodeGuideAgent | 提供使用帮助 | 用户不熟悉某个功能时 |
| statuslineSetup | 配置状态栏 | IDE 状态栏集成 |
每种 Agent 有独立的 Prompt 模板、工具集和执行策略。例如 exploreAgent 会优先使用 GlobTool 和 GrepTool 进行代码搜索,而 verificationAgent 会优先使用 BashTool 运行测试。
1.3 Agent 生命周期管理
派生(forkSubagent) → 执行(runAgent) → [运行中]
├── 暂停(pause)
├── 恢复(resumeAgent)
├── 记忆累积(agentMemory)
├── 快照保存(agentMemorySnapshot)
└── 完成(返回结果给父Agent)
forkSubagent — 子 Agent 派生是核心操作。派生时创建一个全新的 Agent 实例,拥有:
- • 独立的上下文窗口
- • 独立的工具集
- • 独立的颜色标识(通过
agentColorManager) - • 独立的记忆空间(通过
agentMemory)
agentColorManager — 在终端 UI 中为每个 Agent 分配独特颜色。当多个 Agent 同时运行时,用户可以通过颜色区分不同 Agent 的输出。实现方式可能是维护一个颜色池:
Agent A → 青色 #00d4ff
Agent B → 品红 #ff00ff
Agent C → 绿色 #00ff88
...
agentDisplay — 实时显示每个 Agent 的状态:运行中/暂停/完成/出错。在 389 个 UI 组件中有专门的 AgentProgressLine.tsx 来渲染 Agent 进度。
loadAgentsDir — 支持从用户目录加载自定义 Agent 定义。这意味着 Agent 是可扩展的——用户可以创建自己的专属 Agent。
1.4 多 Agent 并发 —— spawnMultiAgent
tools/shared/spawnMultiAgent.ts
spawnMultiAgent 放在 tools/shared/ 目录下(而不是 AgentTool 内部),说明它是跨工具共享的能力。
并发执行模型:
主 Agent 接收到复杂任务
│
├── spawn Agent A (exploreAgent) → 并行搜索代码
├── spawn Agent B (planAgent) → 并行制定计划
└── spawn Agent C (generalPurposeAgent) → 并行执行子任务
│
↓
Coordinator 汇总所有 Agent 的结果
│
↓
AgentSummary 生成结构化摘要
│
↓
主 Agent 基于摘要做最终决策
1.5 Agent 摘要系统
services/AgentSummary/
└── agentSummary.ts
当子 Agent 完成后,agentSummary 自动生成结构化摘要。这是信息传递的关键设计——避免将子 Agent 的全部输出塞入主 Agent 的上下文窗口(那样会浪费大量 Token)。
摘要可能包含:
- • 任务完成状态
- • 关键发现/结果
- • 遇到的问题
- • 建议的下一步
1.6 团队协作 —— TeamCreateTool / TeamDeleteTool
tools/TeamCreateTool/
├── TeamCreateTool.ts # 创建 Agent 团队
├── UI.tsx # 团队创建 UI
├── constants.ts # 团队常量
└── prompt.ts # 团队 Prompt
tools/TeamDeleteTool/
├── TeamDeleteTool.ts # 解散 Agent 团队
├── UI.tsx # 确认 UI
├── constants.ts
└── prompt.ts
Team 是多 Agent 协作的高层抽象。不再是简单的”派生-执行-返回”,而是持久化的团队结构:
- • 团队成员共享上下文
- • 团队有统一的目标
- • 成员间可以通信协作
1.7 动态工具发现 —— ToolSearchTool
tools/ToolSearchTool/
├── ToolSearchTool.ts # 动态搜索可用工具
├── constants.ts # 搜索常量
└── prompt.ts # 搜索 Prompt
这是一个”元工具”——Agent 可以用它来搜索自己需要的工具。实现了自适应行为:Agent 不需要预先知道所有 184 个工具,它可以按需发现。
1.8 TodoWriteTool —— 任务追踪
tools/TodoWriteTool/
├── TodoWriteTool.ts
├── constants.ts
└── prompt.ts
TODO 列表是 Agent 自我管理的关键——在复杂任务中,Agent 维护一个 TODO 列表来跟踪进度,确保不遗漏步骤。
二、任务管理完整工具链
tools/TaskCreateTool/ → 创建任务
├── TaskCreateTool.ts
├── constants.ts
└── prompt.ts
tools/TaskGetTool/ → 获取单个任务
├── TaskGetTool.ts
├── constants.ts
└── prompt.ts
tools/TaskListTool/ → 列出所有活跃任务
├── TaskListTool.ts
├── constants.ts
└── prompt.ts
tools/TaskUpdateTool/ → 更新任务状态(进度、优先级等)
├── TaskUpdateTool.ts
├── constants.ts
└── prompt.ts
tools/TaskStopTool/ → 停止任务执行
├── TaskStopTool.ts
├── UI.tsx # 停止确认 UI
└── prompt.ts
tools/TaskOutputTool/ → 获取任务的输出结果
├── TaskOutputTool.tsx
└── constants.ts
六个工具覆盖了任务的完整生命周期。注意每个都有独立的 prompt.ts——这确保 LLM 知道如何正确使用每个工具。
配合根级文件:
# task.py
@dataclass
class PortingTask:
task_id: str
description: str
# tasks.py
def default_tasks():
return [
PortingTask('root-module-parity', 'Mirror root module surface'),
PortingTask('directory-parity', 'Mirror top-level subsystem names'),
PortingTask('parity-audit', 'Continuously measure parity'),
]
三、记忆三层架构

3.1 第一层:文件级记忆 — memdir/(8 个模块)
memdir/
├── findRelevantMemories.ts # 语义搜索相关记忆
├── memdir.ts # 记忆目录管理核心
├── memoryAge.ts # 记忆时效性评估
├── memoryScan.ts # 记忆文件扫描
├── memoryTypes.ts # 记忆类型定义
├── paths.ts # 记忆文件路径管理
├── teamMemPaths.ts # 团队共享记忆路径
└── teamMemPrompts.ts # 团队记忆 Prompt 模板
8 个文件实现了一个完整的文件级记忆系统。关键设计:
- • 时效性衰减 —
memoryAge.ts:不是所有记忆都同等重要。三个月前的记忆和今天的记忆,相关性不同。系统会根据时间衰减权重。 - • 语义搜索 —
findRelevantMemories.ts:不是关键字匹配,而是语义级别的搜索。当前对话的主题是”性能优化”时,会找出之前关于性能的记忆。 - • 团队共享 —
teamMemPaths.ts+teamMemPrompts.ts:Agent 团队的成员可以共享记忆。一个 Agent 学到的内容,团队成员都能访问。 - •
- — 记忆以 Markdown 文件存储。这意味着:
- • 人类可读(可以直接编辑)
- • Agent 可写(通过 FileWriteTool)
- • 版本可控(可以 Git 追踪)
文件格式
3.2 第二层:会话记忆 — services/SessionMemory/
services/SessionMemory/
├── sessionMemory.ts # 跨会话记忆持久化
├── sessionMemoryUtils.ts # 记忆操作工具
└── prompts.ts # 记忆注入 Prompt
会话记忆在对话之间持久化。上一次会话学到的”用户偏好 React 而不是 Vue”,下一次会话仍然可以利用。
prompts.ts 负责将记忆以合适的格式注入到系统提示中——记忆不是原始文本,而是经过整理后注入的。
3.3 第三层:Agent 级记忆
tools/AgentTool/
├── agentMemory.ts # Agent 实例级记忆
└── agentMemorySnapshot.ts # 记忆快照持久化
最细粒度的记忆——每个 Agent 实例有自己的记忆空间。agentMemorySnapshot 支持将记忆保存为快照文件,确保即使 Agent 重启也能恢复。
3.4 三层协作
┌─────────────────────────────────────────┐
│ Agent 级记忆 (agentMemory) │ ← 短期:当前 Agent 实例
│ 单 Agent 的临时工作记忆 │ 生命周期:一次执行
├─────────────────────────────────────────┤
│ 会话记忆 (SessionMemory) │ ← 中期:跨对话
│ 跨会话的偏好和上下文保持 │ 生命周期:多次对话
├─────────────────────────────────────────┤
│ 文件级记忆 (memdir) │ ← 长期:项目级知识
│ 基于文件的长期知识存储 │ 生命周期:永久
└─────────────────────────────────────────┘
设计背景:为什么记忆要分三层而不是一个大记忆池?
这源于 LLM 的上下文窗口限制。即使 GPT-4 有 128K Token,也无法把所有历史信息塞进去。三层记忆本质上是信息压缩和检索策略:
- • 短期记忆(Agent 级)— 存在内存中,速度快,Agent 死了就没了。适合临时工作数据
- • 中期记忆(会话级)— 存在数据库/文件中,跨会话持久化。适合用户偏好、项目上下文
- • 长期记忆(文件级)— 存在 Markdown 文件中,人类可编辑可审查。适合项目知识、架构决策
关键创新在于 memoryAge 时效性衰减 — 不是所有记忆都同等重要。三个月前的构建配置可能已经过时,但上个月做的架构决策仍然有效。这种”遗忘机制”让 Agent 的记忆更接近人类。
另一个关键设计是 语义搜索 vs 关键字搜索。findRelevantMemories.ts 不做简单的字符串匹配,而是语义级别的匹配——当你在讨论”性能优化”时,它会找出之前关于”数据库查询优化”的记忆,即使两个词完全不同。
四、Plan Mode:思考与执行分离
tools/EnterPlanModeTool/
├── EnterPlanModeTool.ts # 进入规划模式
├── UI.tsx # 规划模式 UI
├── constants.ts
└── prompt.ts
tools/ExitPlanModeTool/
├── ExitPlanModeV2Tool.ts # 退出规划(V2 版本)
├── UI.tsx
├── constants.ts
└── prompt.ts
Plan Mode 将 Agent 从”执行者”切换为”规划者”:
- • 进入规划模式 — Agent 只生成计划,不执行任何工具
- • 用户审查 — 用户可以查看、修改计划
- • 退出规划模式 — Agent 按照确认后的计划执行
ExitPlanModeV2Tool 的 V2 后缀说明这个功能经过了迭代——说明规划模式的退出逻辑比较复杂,需要处理:
- • 计划是否被修改
- • 哪些步骤需要跳过
- • 执行顺序的调整
配合命令层:
commands/plan/
├── plan.tsx # /plan 命令
└── index.ts
commands/ultraplan.tsx # /ultraplan 深度规划命令
ultraplan 是 Plan Mode 的增强版,可能支持:
- • 多层次规划(大目标 → 子目标 → 步骤)
- • 条件分支(如果 A 则执行 B,否则执行 C)
- • 依赖关系管理
五、Thinkback:思考回溯与回放
commands/thinkback/
├── thinkback.tsx # 查看当前思考过程
└── index.ts
commands/thinkback-play/
├── thinkback-play.ts # 回放历史思考过程
└── index.ts
Thinkback 是一个极其独特的设计。两个命令:
- • — 查看当前或最近一次 Agent 思考的完整过程
- • — 回放历史思考过程,像录像机一样逐步重现
这对以下场景极其有价值:
- 1. 理解 Agent 为什么做了某个决策
- 2. 调试 Agent 行为——哪一步走偏了?
- 3. 学习 AI 的推理方式
- 4. 代码审查——理解 AI 生成的每一行代码的原因
六、Coordinator Mode:多 Agent 编排
coordinator/coordinatorMode.ts
hooks/toolPermission/handlers/coordinatorHandler.ts
components/CoordinatorAgentStatus.tsx
三个文件实现协调模式:
- • coordinatorMode.ts — 协调模式的核心逻辑。决定如何分配任务给子 Agent、如何汇总结果、如何处理冲突。
- • coordinatorHandler.ts — 协调模式下的权限处理器。与交互模式不同——协调模式中,主 Agent 可以代表用户做部分决策,不需要每个工具调用都等待用户确认。
- • CoordinatorAgentStatus.tsx — UI 组件,实时显示所有活跃 Agent 的状态。在终端中可能是这样的:
[Agent A ● 青色] 正在搜索代码... ████████░░ 80%
[Agent B ● 品红] 正在制定计划... ████░░░░░░ 40%
[Agent C ● 绿色] 等待中...
七、Auto Mode 与 Effort Control
7.1 Auto Mode
cli/handlers/autoMode.ts
components/AutoModeOptInDialog.tsx
hooks/notifs/useAutoModeUnavailableNotification.tsx
Auto Mode = 无需人工确认的连续执行。三个文件:
- • autoMode.ts — 自动模式逻辑
- • AutoModeOptInDialog.tsx — 明确确认对话框(用户必须主动选择启用)
- • useAutoModeUnavailableNotification.tsx — 当自动模式不可用时的通知
安全设计:默认不启用,必须通过 AutoModeOptInDialog 确认。
7.2 Effort Control
commands/effort/
├── effort.tsx
└── index.ts
/effort 控制思考深度——类比 LLM 的 reasoning_effort 参数:
- • 低 effort → 快速响应,适合简单查询
- • 中 effort → 平衡模式
- • 高 effort → 深度思考,适合复杂推理
八、Context Visualization:透明化 Agent 视野
components/ContextVisualization.tsx
commands/context/
├── context.tsx # 交互式上下文查看
├── context-noninteractive.ts # 非交互式导出
└── index.ts
上下文可视化让用户看到 Agent “看到了什么”:
- • 哪些文件被包含在上下文中
- • 哪些记忆被激活
- • 对话历史有多长
- • Token 用量多少
context-noninteractive.ts 支持非交互式导出——用于自动化场景。
九、MCP 深度集成
tools/MCPTool/
├── MCPTool.ts # MCP 工具调用入口
├── UI.tsx # MCP 结果 UI
├── classifyForCollapse.ts # 折叠分类器
└── prompt.ts
tools/McpAuthTool/
├── McpAuthTool.ts # MCP 认证工具
tools/ListMcpResourcesTool/
├── ListMcpResourcesTool.ts # 列出 MCP 资源
├── UI.tsx
└── prompt.ts
tools/ReadMcpResourceTool/
├── ReadMcpResourceTool.ts # 读取 MCP 资源
├── UI.tsx
└── prompt.ts
四个 MCP 工具覆盖完整生命周期:
- • MCPTool — 调用 MCP 工具
- • McpAuthTool — 处理认证(OAuth 等)
- • ListMcpResourcesTool — 列出可用资源
- • ReadMcpResourceTool — 读取资源内容
classifyForCollapse.ts — 当 MCP 服务器暴露大量工具时,自动分类折叠。例如一个 MCP 服务器返回 50 个工具,UI 会折叠为一个可展开的分组。
配合命令层:
commands/mcp/
├── mcp.tsx # MCP 管理界面
├── addCommand.ts # 添加 MCP 服务器
├── xaaIdpCommand.ts # 企业级 IDP 认证
└── index.ts
以及技能层:
skills/mcpSkillBuilders.ts # 自动将 MCP 能力包装为技能
十、技能系统:16 个内置技能
skills/
├── bundled/
│ ├── batch.ts # 批量操作
│ ├── claudeApi.ts # Claude API 直接调用
│ ├── claudeApiContent.ts # API 内容处理
│ ├── claudeInChrome.ts # Chrome 浏览器集成
│ ├── debug.ts # 调试
│ ├── keybindings.ts # 快捷键
│ ├── loop.ts # 循环执行
│ ├── loremIpsum.ts # Lorem Ipsum 生成
│ ├── remember.ts # 记忆管理
│ ├── scheduleRemoteAgents.ts # 远程 Agent 调度
│ ├── simplify.ts # 简化
│ ├── skillify.ts # 用技能创建技能!
│ ├── stuck.ts # 卡住恢复
│ ├── updateConfig.ts # 配置更新
│ ├── verify.ts # 验证
│ └── verifyContent.ts # 内容验证
├── bundledSkills.ts # 内置技能注册
├── loadSkillsDir.ts # 加载用户技能目录
└── mcpSkillBuilders.ts # MCP 技能构建器
最有创意的技能:
- • skillify — 元编程:用技能创建技能。用户描述”我希望有一个技能可以自动格式化 Python 代码”,skillify 会自动创建这个技能。
- • scheduleRemoteAgents — 远程调度:在远程环境启动 Agent。这意味着你可以在本地触发一个在云端执行的 Agent。
- • stuck — 卡住恢复:当 Agent 陷入循环或无法继续时,自动尝试恢复策略(回退、换方向、请求帮助)。
- • claudeInChrome — 浏览器集成:Agent 可以与 Chrome 浏览器交互,读取网页内容、填写表单。
十一、Buddy 向导系统
buddy/
├── CompanionSprite.tsx # 陪伴精灵渲染组件
├── companion.ts # 陪伴角色核心逻辑
├── prompt.ts # 角色人设 Prompt
├── sprites.ts # 精灵图定义(多帧动画)
├── types.ts # 类型定义
└── useBuddyNotification.tsx # 通知 Hook
Buddy 系统在终端中显示一个陪伴角色(Companion Sprite),有多个帧的动画(sprites.ts)。角色有自己的人设(prompt.ts),会在适当的时候发出通知(useBuddyNotification)。
这不仅是装饰——它是降低 AI 工具心理门槛的 UX 设计。一个”有性格的伙伴”比一个冷冰冰的 CLI 更容易被接受。
十二、常量系统中的隐藏设计
constants/
├── apiLimits.ts # API 调用频率限制
├── betas.ts # Beta 功能开关
├── common.ts # 公共常量
├── cyberRiskInstruction.ts # 网络安全风险指令
├── errorIds.ts # 错误 ID 映射
├── figures.ts # 终端图形字符
├── files.ts # 文件相关常量
├── github-app.ts # GitHub App 配置
├── keys.ts # 快捷键定义
├── messages.ts # 系统消息模板
├── oauth.ts # OAuth 配置
├── outputStyles.ts # 输出样式
├── product.ts # 产品信息
├── prompts.ts # 全局 Prompt 模板
├── spinnerVerbs.ts # 加载动画动词
├── system.ts # 系统级常量
├── systemPromptSections.ts # 系统 Prompt 分节管理
├── toolLimits.ts # 每个工具的使用限制
├── tools.ts # 工具定义常量
├── turnCompletionVerbs.ts # 完成状态动词
└── xml.ts # XML 解析常量
几个特别值得关注的:
- • systemPromptSections.ts — 系统 Prompt 是模块化组装的。不同场景注入不同的 Prompt 片段。这比一个超长的固定 System Prompt 更灵活。
- • cyberRiskInstruction.ts — 内置网络安全指令。即使不在沙箱中,Agent 也会遵循安全准则,拒绝生成恶意代码。
- • toolLimits.ts — 每个工具有独立的使用限制。BashTool 可能限制为每 Turn 最多 10 次调用,FileWriteTool 可能限制为最多 5 次写入。
- • spinnerVerbs.ts + turnCompletionVerbs.ts — UX 细节中的细节:加载时随机选择不同的动词(”思考中…”、”分析中…”、”生成中…”),完成时显示不同的状态词。这让终端界面更生动。
十三、Bridge 系统(31 个模块)
bridge/
├── bridgeApi.ts # API 定义
├── bridgeConfig.ts # 配置管理
├── bridgeDebug.ts # 调试工具
├── bridgeEnabled.ts # 启用检查
├── bridgeMain.ts # 主入口
├── bridgeMessaging.ts # 消息传递
├── bridgePermissionCallbacks.ts # 权限回调
├── bridgePointer.ts # 指针操作
├── bridgeStatusUtil.ts # 状态工具
├── bridgeUI.ts # UI
├── capacityWake.ts # 容量感知唤醒
├── codeSessionApi.ts # 代码会话 API
├── createSession.ts # 创建会话
├── debugUtils.ts # 调试工具
├── envLessBridgeConfig.ts # 环境无关配置
├── flushGate.ts # 刷新门控
├── inboundAttachments.ts # 入站附件
├── inboundMessages.ts # 入站消息
├── initReplBridge.ts # REPL Bridge 初始化
├── jwtUtils.ts # JWT 认证
├── pollConfig.ts # 轮询配置
├── pollConfigDefaults.ts # 默认轮询配置
├── remoteBridgeCore.ts # 远程核心
├── replBridge.ts # REPL Bridge
└── replBridgeHandle.ts # Bridge 句柄
关键设计模式:
- • JWT 认证 — Bridge 通信使用 JWT Token,确保只有授权的 IDE/浏览器可以连接
- • flushGate — 门控机制,防止消息洪泛。当消息产生速度超过处理速度时,Gate 会批量合并
- • capacityWake — 容量感知唤醒。当系统资源不足时,不会唤醒所有等待的任务,而是根据容量逐步唤醒
- • inboundAttachments — 处理从 IDE 传入的附件(文件、图片等)
十四、远程会话与多传输协议
remote/
├── RemoteSessionManager.ts # 远程会话生命周期
├── SessionsWebSocket.ts # WebSocket 通信
├── remotePermissionBridge.ts # 远程权限桥接
└── sdkMessageAdapter.ts # SDK 消息适配
cli/transports/
├── HybridTransport.ts # HTTP + WS 混合
├── SSETransport.ts # Server-Sent Events
├── WebSocketTransport.ts # 纯 WebSocket
├── SerialBatchEventUploader.ts # 批量上传
├── WorkerStateUploader.ts # 状态上报
├── ccrClient.ts # CCR 客户端
└── transportUtils.ts # 工具函数
四种传输协议:
- • WebSocket — 实时双向通信
- • SSE — 服务端推送(单向)
- • Hybrid — HTTP 请求 + WebSocket 实时推送的智能组合
- • SerialBatch — 批量事件上传(网络不稳定时)
十五、服务器与直连
server/
├── createDirectConnectSession.ts # 创建直连会话
├── directConnectManager.ts # 直连管理器
└── types.ts # 类型定义
Server 层支持直连模式——不经过 Bridge,直接建立本地通信。这对于 IDE 插件集成特别重要。
十六、Prompt Suggestion 推测性预加载
services/PromptSuggestion/
├── promptSuggestion.ts # 提示建议引擎
└── speculation.ts # 推测性预加载
speculation.ts 实现了一个非常先进的功能——推测性预加载。在用户还在输入时,系统推测可能的下一个问题,并提前准备相关的上下文和工具。这可以显著减少用户等待时间。
十七、架构设计哲学总结
17.1 一切皆工具
从 BashTool 到 EnterPlanModeTool,从 AskUserQuestionTool 到 ToolSearchTool——”提问”和”搜索工具”本身也是工具。这种自举式设计使得系统极其可扩展。
17.2 三层权限防线
工具池动态组装 → 权限上下文过滤 → 场景化权限处理器
(简单模式/完整模式) (名称/前缀拒绝) (交互/协调/群集)
17.3 记忆驱动智能
三层记忆(短期 Agent → 中期会话 → 长期文件)配合时效性衰减和语义搜索,让 Agent 拥有了类似人类的记忆管理能力。
17.4 完整的可观测性
- • Thinkback — 思考回溯
- • Context Visualization — 上下文可视化
- • Coordinator Agent Status — 多 Agent 状态
- • Cost Tracker — 成本追踪
- • History Log — 会话历史
17.5 安全优先
五道防线:
- 1. 沙箱系统(shouldUseSandbox)
- 2. 危险命令预警(destructiveCommandWarning)
- 3. 路径安全校验(pathValidation)
- 4. 网络安全指令(cyberRiskInstruction)
- 5. 权限二次确认(BypassPermissionsModeDialog)
17.6 规模数据
| 维度 | 数量 |
|---|---|
| TS/TSX 文件 | 1,902 |
| 顶层子系统 | 35 |
| 命令模块 | 207 |
| 工具模块 | 184 |
| UI 组件 | 389 |
| 服务模块 | 130 |
| Bridge 模块 | 31 |
| React Hooks | 104 |
| 内置技能 | 16 |
| 内置 Agent | 6 |
| Vim 模块 | 5 |
| 常量模块 | 21 |
| 传输协议 | 4 种 |
Claude Code 的源码揭示了一个成熟的 AI Agent 运行时应有的样子:强大的工具系统、精细的权限控制、分层记忆管理、多 Agent 编排,以及对可观测性和安全性的极致追求。这些设计模式值得每一个构建 AI Agent 系统的团队学习和借鉴。
夜雨聆风