BrainBank
AI 课堂/最佳实践Claude Code Deep Dive

Claude Code 的多 Agent 与子任务机制

2026/8/2 20:14:27 · 更新于 2026/8/2 20:15:51 · 来源

#claude-code#multi-agent#best-practices#state-management#task-decomposition#agent-coordination

Claude Code 已从单线程开发助手演化为支持多 Agent 协作与子任务拆分的智能体运行平台,通过统一的状态管理和工具层体系让复杂工程任务可拆分、角色可分工。

它早就不只是单线程助手了

如果只把 Claude Code 看成“一个主对话框里的模型”,你会错过它很重要的一条演化方向:
它已经明显在支持多 Agent、子任务和协作型运行。

从源码能看到几个非常关键的信号:

  • AgentTool
  • SendMessageTool
  • TeamCreateTool
  • TaskCreateTool
  • agentNameRegistry
  • viewingAgentTaskId

这已经不是单线程工具的思路了。

先看它在工具层的入口

export function getAllBaseTools(): Tools {
  return [
    AgentTool,
    ...
    ...(isTodoV2Enabled()
      ? [TaskCreateTool, TaskGetTool, TaskUpdateTool, TaskListTool]
      : []),
    getSendMessageTool(),
    ...(isAgentSwarmsEnabled()
      ? [getTeamCreateTool(), getTeamDeleteTool()]
      : []),
  ]
}

这段代码最重要的结论是:

多 Agent 能力不是隐藏实验,而是被当成正式工具体系的一部分。

先看结构图

image.png

状态层已经为多 Agent 预留了很多位置

来看 AppStateStore.ts 里的片段:

tasks: { [taskId: string]: TaskState }
agentNameRegistry: Map<string, AgentId>
foregroundedTaskId?: string
viewingAgentTaskId?: string

这几个字段很能说明问题:

  • 系统内部有统一的任务表
  • Agent 可以按名字注册和路由
  • 某个任务可以被 foreground
  • 还可以单独查看某个 Agent 的转录

这说明 UI 层和运行时层都已经接受了“不是只有一个主线程”的事实。

为什么要做多 Agent

因为复杂工程任务经常天然可拆分,例如:

  • 一个 Agent 查代码结构
  • 一个 Agent 跑测试和日志
  • 一个 Agent 处理某个子模块
  • 主线程最后汇总

如果所有事情都塞给一个上下文窗口,效率和稳定性都会下降。

它的本质不是“几个模型聊天”,而是任务分工

image.png

也就是说,多 Agent 机制的目标不是炫技,而是把复杂任务拆成更稳定的小块。

为什么这里一定要和状态系统绑定

只要有多个 Agent,就会立刻出现这些问题:

  • 哪个任务正在前台显示
  • 哪个 Agent 正在被查看
  • 名称如何路由到具体 Agent
  • 任务怎么暂停、恢复、后台化

所以多 Agent 能力不可能只写在工具层里,它一定会深入状态管理。

小结

Claude Code 的多 Agent 与子任务机制说明了一件事:

它已经不满足于做一个单线程开发助手,而是在向“任务可拆分、角色可协作”的智能体运行平台演化。

这也是它和普通代码生成器越来越不一样的地方。

学习地图

Claude Code 多 Agent 机制学习路线

阶段一:理解多 Agent 基础概念

  • 🗺️ 什么是多 Agent 架构?为什么它比单线程更适合复杂工程?
  • 📋 子任务拆分的基本原则(粒度、独立性、可并行度)
  • 🔍 熟悉 Claude Code 中的核心工具:AgentTool、TaskCreateTool、SendMessageTool

阶段二:掌握任务创建与状态管理

  • ✏️ TaskCreateTool — 如何创建子任务及其参数
  • ✅ TaskGetTool / TaskUpdateTool / TaskListTool — 查询与管理子任务
  • 📊 AppStateStore 中的状态字段含义(tasks、agentNameRegistry、foregroundedTaskId)

阶段三:学习 Agent 团队与协作模式

  • 👥 TeamCreateTool / TeamDeleteTool — Agent 团队的搭建与消亡
  • 📨 SendMessageTool — Agent 之间的消息传递机制
  • 🔗 agentNameRegistry — 名称注册与路由的工作原理

阶段四:实战——拆分复杂工程任务

  • 🧩 场景练习:将一个完整开发任务拆分为多个可并行子任务
  • 🔄 Agent 工作流设计原则(角色分工、数据共享路径、汇聚节点)
  • 🎯 最佳实践:何时用多 Agent,何时单线程反而更高效

动手实践——分步指南

  1. 安装并启动 Claude Code(如尚未安装,运行 brew install anthropic/claude-code/claude 并在终端执行 claude

  2. 进入一个你已有的本地项目目录,打开终端并输入 claude 启动交互式界面。

  3. 在对话中尝试创建一个子任务:输入 "帮我启动一个子任务来分析项目中的 API 路由文件",观察 Claude Code 如何返回 TaskCreateTool 的调用和生成的 taskId。

  4. 查询当前所有子任务的列表:输入 "列出我当前的所有子任务及其状态"。

  5. 尝试让多个 Agent 协作:输入一个复杂的拆分型任务,例如 "启动三个子任务——一个分析代码结构,一个检查测试覆盖率,一个审查依赖项安全性",观察系统如何分配它们。

  6. 查看某个特定 Agent 的状态和进度:输入 "获取 taskId 为 xxx 的任务详情",替换 xxx 为上一步返回的实际 ID。

  7. 尝试更新或暂停一个正在执行的任务:输入 "取消/重命名/更新 subtask [id] 的描述"。

  8. 发送 Agent 间消息来触发协作:输入 "给负责 API 分析的 agent 发消息,请它把路由列表导出到 src/routes.txt"。

  9. (可选)清理与收尾——如果启用了团队功能,尝试创建/删除一个 Agent Team。

三大推荐资源

  1. 1
    Anthropic Claude Code Docs — Multi-agent & Task Management

    Anthropic 官方文档中关于 Claude Code 任务拆分、多 Agent 创建与状态管理的权威指南。

    https://docs.anthropic.com/en/docs/claude-code/tasks

  2. 2
    Anthropic Agent Framework (A2A) 规范

    Google X(后由 Anthropic 等多方共同参与)的 Agent-to-Agent 通信标准,理解多 Agent 协作协议的最佳参考。

    https://a2a.dev/

  3. 3
    Building Multi-Agent Systems with Claude — Anthropic Blog 教程

    Anthropic 官方博客发布的构建有效 Agent 系统的系列文章,涵盖任务拆分、角色分工和工程实践。

    https://www.anthropic.com/research/building-effective-agents

链接由 AI 推荐——使用前建议快速核实。