Skip to content

Latest commit

 

History

History
159 lines (108 loc) · 5.36 KB

File metadata and controls

159 lines (108 loc) · 5.36 KB

11. 子代理与任务系统

这篇讲什么

这一章解释 Claude Code 的多代理和任务能力:子代理如何定义,任务如何进入后台,以及隔离是怎么做的。

先给结论

当前快照中的多代理能力不是“额外加一个 worker”那么简单。它已经具备:

  • 子代理启动
  • 命名和 team 语义
  • 后台运行
  • worktree 或 remote 隔离
  • 任务注册、前后台切换、输出文件管理

源码依据

Mermaid 图:子代理与任务生命周期图

flowchart TD
    A[AgentTool 调用] --> B[解析 prompt / model / mode / isolation]
    B --> C{foreground 还是 background}
    C -- foreground --> D[立即执行子代理]
    C -- background --> E[注册后台任务]
    B --> F{isolation}
    F -- worktree --> G[创建临时 git worktree]
    F -- remote --> H[在 remote 环境启动]
    F -- none --> D
    D --> I[输出结果 / 更新状态]
    E --> J[/tasks 可见]
    J --> K[foreground / outputFile / resume]
Loading

AgentTool 的输入面

src/tools/AgentTool/AgentTool.tsx 可直接确认,启动一个子代理时可以传入:

  • description
  • prompt
  • subagent_type
  • model
  • run_in_background
  • name
  • team_name
  • mode
  • isolation
  • cwd

这几个字段已经足够说明它支持的不只是“临时帮手”,而是可配置的执行单元。

背景任务语义

同一个文件中还定义了异步启动和输出 schema,例如:

  • async_launched
  • agentId
  • description
  • prompt
  • outputFile

这说明子代理可以脱离当前前台交互,在后台继续运行,并通过输出文件或任务状态被跟踪。

隔离能力

AgentTool 的输入里明确有 isolation,并在源码中出现:

  • worktree
  • remote

其中注释已说明:

  • worktree 会创建临时 git worktree。
  • remote 会在 remote 环境启动代理。

这非常关键,因为它表明多代理不是默认共享同一工作副本。

内建 agent 类型

src/tools/AgentTool/built-in/ 目录命名就能确认至少存在这些内建 agent:

  • generalPurposeAgent
  • exploreAgent
  • planAgent
  • verificationAgent
  • claudeCodeGuideAgent

这意味着 agent 体系有清晰的角色分化,而不是只有一个通用模板。

设计观察

Anthropic 在这里展示的不是“多开几个 worker”,而是把 agent 明确塑造成不同工种。ExplorePlan 被压成只读角色,verification 被要求带对抗性地找错,general-purpose 则承担较宽的执行职责。这种分工说明它更相信“角色约束 + 协作编排”能提高可靠性,而不是让单个 agent 持有所有能力再自行克制。

任务系统在 UI 中如何暴露

src/commands/tasks/index.ts 明确:

  • 命令名为 tasks
  • 描述是 List and manage background tasks
  • 别名是 bashes

这说明后台任务对用户是可见、可管理、可切换的。

AppState 如何持有任务

src/state/AppStateStore.ts 中与任务直接相关的字段包括:

  • tasks
  • agentNameRegistry
  • foregroundedTaskId
  • viewingAgentTaskId
  • todos

这意味着任务系统已经和 UI、代理命名、前后台切换、待办事项绑定在一起。

与权限系统的关系

多代理和权限系统是强耦合的:

  • AgentTool 输入中就包含 mode
  • 权限规则会检查 agent 启动是否危险
  • plan mode / bypassPermissions 等模式会影响代理能否自动执行某些操作

因此研究子代理时,最好把 08-permissions-and-safety.md 一起看。

对使用者意味着什么

如果你站在用户视角,这部分能力意味着:

  • 任务可以后台运行。
  • 可以把不同任务分给不同 agent。
  • 某些任务可以隔离到 worktree 或 remote 环境。
  • /tasks 是观察后台执行状态的重要入口。

对研究者意味着什么

如果你站在研究视角,这部分能力意味着:

  • Claude Code 已经在设计上从单代理 CLI 走向多执行单元系统。
  • 子代理不是前端特效,而是带有输出 schema、状态持久化和任务生命周期的正式功能。

这一章的工作结论

多代理和任务系统是 Claude Code 的“工作流放大器”。它让工具系统从单次动作,扩展为可并行、可隔离、可管理的执行编排能力。

延伸阅读