扩展能力
Claude Code 的多 Agent 与子任务机制
它早就不只是单线程助手了
如果只把 Claude Code 看成“一个主对话框里的模型”,你会错过它很重要的一条演化方向:
它已经明显在支持多 Agent、子任务和协作型运行。
从源码能看到几个非常关键的信号:
AgentToolSendMessageToolTeamCreateToolTaskCreateToolagentNameRegistryviewingAgentTaskId
这已经不是单线程工具的思路了。
先看它在工具层的入口
export function getAllBaseTools(): Tools {
return [
AgentTool,
...
...(isTodoV2Enabled()
? [TaskCreateTool, TaskGetTool, TaskUpdateTool, TaskListTool]
: []),
getSendMessageTool(),
...(isAgentSwarmsEnabled()
? [getTeamCreateTool(), getTeamDeleteTool()]
: []),
]
}
这段代码最重要的结论是:
多 Agent 能力不是隐藏实验,而是被当成正式工具体系的一部分。
先看结构图
加载图表中...
状态层已经为多 Agent 预留了很多位置
来看 AppStateStore.ts 里的片段:
tasks: { [taskId: string]: TaskState }
agentNameRegistry: Map<string, AgentId>
foregroundedTaskId?: string
viewingAgentTaskId?: string
这几个字段很能说明问题:
- 系统内部有统一的任务表
- Agent 可以按名字注册和路由
- 某个任务可以被 foreground
- 还可以单独查看某个 Agent 的转录
这说明 UI 层和运行时层都已经接受了“不是只有一个主线程”的事实。
为什么要做多 Agent
因为复杂工程任务经常天然可拆分,例如:
- 一个 Agent 查代码结构
- 一个 Agent 跑测试和日志
- 一个 Agent 处理某个子模块
- 主线程最后汇总
如果所有事情都塞给一个上下文窗口,效率和稳定性都会下降。
它的本质不是“几个模型聊天”,而是任务分工
加载图表中...
也就是说,多 Agent 机制的目标不是炫技,而是把复杂任务拆成更稳定的小块。
为什么这里一定要和状态系统绑定
只要有多个 Agent,就会立刻出现这些问题:
- 哪个任务正在前台显示
- 哪个 Agent 正在被查看
- 名称如何路由到具体 Agent
- 任务怎么暂停、恢复、后台化
所以多 Agent 能力不可能只写在工具层里,它一定会深入状态管理。
小结
Claude Code 的多 Agent 与子任务机制说明了一件事:
它已经不满足于做一个单线程开发助手,而是在向“任务可拆分、角色可协作”的智能体运行平台演化。
这也是它和普通代码生成器越来越不一样的地方。