子 Agent 让主 Agent 能够生成独立的工作单元来处理子任务。子 Agent 会与父 Agent 共享工具和代码库上下文,但会在自己的对话链中运行——不会继承父 Agent 的对话历史。这对于那些适合专注、独立处理的任务尤其有用——例如探索代码库、运行测试,或并行实现某项功能。 你可以明确要求 Agent 使用子 Agent (例如“在子 Agent 中调研认证机制的工作方式”) ,或者当 Agent 判断某项任务适合独立处理时,也可能自行决定交给子 Agent。 根据我们的测量,子 Agent 既能 提升整体编码效率 又能 降低成本。Documentation Index
Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
Use this file to discover all available pages before exploring further.
子 Agent 的工作方式
前台
在你的当前会话中内联运行。父 Agent 会暂停,并等待子 Agent 完成后再继续。你可以在工具调用出现时逐个批准或拒绝。
后台
在父 Agent 继续工作的同时并行运行。子 Agent 完成后,父 Agent 会自动收到通知。未经批准的工具调用会被自动拒绝。
你无法直接看到子 Agent 的原始输出。子 Agent 完成后,父 Agent 会读取结果,并为你总结关键发现和执行的操作。
子 Agent Profile
| Profile | 说明 | 工具访问权限 |
|---|---|---|
subagent_explore | 只读的代码库探索与研究 | 只读代码库工具以及网页搜索;无法编辑文件,也无法抓取任意 URL (无论在前台还是后台) |
subagent_general | 包括代码修改在内的通用任务 | 完整工具访问权限 (前台) 或仅可使用预先批准的工具 (后台) |
Agent 会根据任务自动选择合适的 Profile。探索型子 Agent 非常适合用于研究和理解,而通用子 Agent 则可以进行修改。
工具权限
- 前台子 Agent 的行为与主 Agent 类似——你会像往常一样收到提示,批准或拒绝工具调用。
- 后台子 Agent 会继承你在当前会话中已授予的工具权限。任何未预先批准的工具都会被自动拒绝。后台子 Agent 无法提示你授予新权限。
子 Agent 监控
子 Agent 指示器
子 Agent 面板
前台 / 后台切换
- 将前台子 Agent 切换到后台: 在前台子 Agent 运行时,按 Ctrl+B。子 Agent 会继续在后台运行,父 Agent 则恢复执行。
- 将后台子 Agent 切换到前台: 打开子 Agent 面板,在正在运行的后台子 Agent 上按 f。子 Agent 的输出将以内联方式显示。
当你将子 Agent 移到后台时,父 Agent 的工具调用已经返回,因此父 Agent 会继续独立执行。子 Agent 的结果不会再反馈到父 Agent 当前的处理流程中,但它完成时你会收到通知。
取消子 Agent
- 通过子 Agent 面板: 打开面板,然后在正在运行的子 Agent 上按 x。
- 前台子 Agent: 按 Ctrl+C 或 Esc,取消当前正在运行的前台子 Agent。
恢复子 Agent
- 后台子 Agent因某个必需工具被拒绝而失败——可在前台恢复它,以授予所需权限。
- 某个子 Agent已完成,但你希望它根据其发现继续执行额外的后续工作。
- 某个子 Agent被过早取消,而你希望它继续执行。
嵌套深度
run_subagent 和 read_subagent) 。
不过,自定义子 Agent 的 Profile 可以通过在其 frontmatter 中设置 max-nesting 字段来启用嵌套生成。该值会覆盖默认的最大深度;只要树结构不超过这个限制,子 Agent 就可以生成子级。
例如,max-nesting: 3 允许出现如下链式结构:
自定义子 Agent
subagent_explore 和 subagent_general Profile 外,你还可以定义自己的自定义子 Agent Profile。自定义子 Agent 可让你创建专用工作单元,并为其设置各自的系统提示、工具限制、模型覆盖和权限,以适配工作流程中的特定任务。
创建自定义子 Agent
agents/ 下的具名目录中放置 AGENT.md 文件来定义。目录名称将作为该 Profile 的标识符。
- 项目级
- 全局
AGENT.md 格式
AGENT.md 文件使用与技能相同的 YAML frontmatter,随后是子 Agent 的系统提示:
Frontmatter 字段
| 字段 | 类型 | 默认值 | 描述 |
|---|---|---|---|
name | string | 目录名 | 该 Profile 的标识符 (不得与内置 Profile 冲突) |
description | string | 无 | 在选择 Profile 时向 Agent 显示 |
model | string | 默认子 Agent 模型 | 覆盖该子 Agent 使用的模型 |
allowed-tools | 列表 | 所有工具 | 限制该子 Agent 可使用的工具 |
permissions | object | 继承 | 权限覆盖 (allow、deny、ask) |
max-nesting | integer | 无 | 覆盖最大嵌套深度,使该子 Agent 能够生成自己的子 Agent |
自定义子 Agent 的使用方式
subagent_explore、subagent_general) ,则会跳过该 Profile 并显示警告。
从其他工具导入
| 来源 | 文件匹配模式 |
|---|---|
.claude/agents/*.md | 每个 .md 文件都会成为一个子 Agent 的 Profile |
Claude Code 的 Agent 文件在
frontmatter 中使用 tools,而不是 allowed-tools。这两种格式都会被自动支持。