多智能体系统

Claude Code 的 AgentTool 是最复杂的工具之一 — 它可以生成自主的子 Agent,每个 Agent 有独立的工具池、权限模式和系统提示。

Agent 系统架构

主 Agent (Parent)
用户对话上下文 + 完整工具池
Explore Agent
代码搜索
只读工具
Plan Agent
架构规划
只读工具
General Agent
多步任务
完整工具
Worktree Agent
隔离开发
独立分支

内置 Agent 类型

Agent 类型 用途 可用工具 模型
general-purpose 通用多步骤任务处理,搜索代码,执行复杂操作 全部工具 (除受限工具) 继承父级
Explore 快速代码库探索,文件搜索,关键词搜索 只读:Glob, Grep, Read, WebFetch, WebSearch (无 Agent, Edit, Write) 继承父级
Plan 设计实现方案,识别关键文件,权衡架构 只读:同 Explore (无 Agent, Edit, Write) 继承父级
code-reviewer 代码审查,发现问题 只读工具 继承父级
verification 验证任务完成情况 只读工具 继承父级
claude-code-guide 回答 Claude Code 使用问题 Glob, Grep, Read, WebFetch, WebSearch 继承父级
statusline-setup 配置状态行设置 Read, Edit 继承父级
自定义 Agent: 除内置类型外,用户可以在 settings.json 或 .claude/agents/ 目录中定义自定义 Agent 类型,指定专属的工具集、系统提示和权限模式。

Agent 生成流程

1

调用 AgentTool

主 Agent 决定需要子 Agent 帮助,调用 AgentTool,指定 subagent_typepromptdescription

2

Agent 定义解析

从内置定义 + 用户配置 + 插件中加载 Agent 定义。验证 Agent 存在且未被权限拒绝。

3

工具池组装

resolveAgentTools()filterToolsForAgent():根据 Agent 的 allowlist/denylist 过滤工具。初始化 Agent 专属的 MCP Server。

4

System Prompt 构建

Agent 的 getSystemPrompt() 注入专属系统提示 + 环境上下文。

5

query() 循环执行

调用 runAgent() → 内部启动独立的 query() 循环。Agent 自主执行,通过 yield 流式返回事件。

6

结果返回

同步 Agent:结果流式累积到消息历史。
异步 Agent:结果持久化到 sidechain 文件,稍后读取。

隔离机制

Agent 可以在不同级别的隔离环境中运行:

进程内 (默认)

与父 Agent 共享进程和工作目录。最轻量级,适合快速子任务。

Worktree 隔离

创建 Git Worktree,独立分支和工作副本。node_modules 符号链接到父目录节省磁盘。无修改时自动清理。

Remote 隔离

远程 CCR 环境执行。始终后台运行,返回 task ID 和 session URL。Anthropic 内部功能。

Bridge 隔离

通过 Bridge 协议远程会话(src/bridge/ 34 文件)。支持多会话并发 (默认 32)、JWT 认证、Worktree + same-dir 模式。由 BRIDGE_MODE flag 控制。详见 Ch13

// Worktree 隔离的创建过程
async function createAgentWorktree(agentId: string) {
  // 1. 创建新分支
  const branch = `agent-${agentId}`;
  await git.worktreeAdd(worktreePath, branch);

  // 2. 符号链接 node_modules (节省磁盘)
  await symlink(parentNodeModules, worktreeNodeModules);

  // 3. 返回隔离的工作目录
  return { path: worktreePath, branch };
}
    

Fork 子 Agent

Fork 是一种特殊的 Agent 生成模式 — 子 Agent 继承父 Agent 的完整对话上下文:

Team Swarm 多 Agent 协作

Team 系统允许创建多个并行协作的 Agent:

// Team 创建流程
const team = await TeamCreateTool.call({
  team_name: "refactor-auth",
  description: "重构认证模块",
  agent_type: "lead"
});

// 团队结构
Team {
  name: "refactor-auth"
  lead: Agent           // Team Lead (协调者)
  teammates: Agent[]    // 工作 Agent 列表
  taskList: TaskList    // 隔离的任务列表
}

// Agent 间通信
SendMessageTool({
  to: "teammate-1",    // 点对点
  to: "*",              // 广播
  message: "完成后端 API 修改"
});
    

工具过滤策略

Agent 类型 允许的工具 禁止的工具
内置 Agent 根据定义的 allowlist EnterWorktree, ExitWorktree, 插件工具
自定义 Agent 根据定义的 allowlist Agent, SkillTool, RemoteAgent (更严格)
异步 Agent Bash, Read, Write, WebSearch, Glob, Grep, Agent, Skill, SendMessage 其他所有工具
进程内队友 IN_PROCESS_TEAMMATE_ALLOWED_TOOLS (专属列表) 其他所有工具
Fork Agent 全部工具 (tools: ['*']) 无 (但不能再次 Fork)