第 10 章 · SubAgent 协作
02 · 三种角色定义
explorer(搜索)、editor(修改)、reviewer(审查)——三种 subagent 角色,各有专门的系统提示词。
为什么是这三个角色
分析 coding agent 的典型工作流,可以拆解为三个阶段:
- 收集信息 → 搜索代码、读取文件、理解结构
- 执行修改 → 修改代码、创建文件、运行命令
- 验证结果 → 检查修改是否正确、运行测试
每个阶段需要不同的思维模式和行为规则。把这三个阶段对应为三个 subagent 角色:
| 角色 | 职责 | 限制 |
|---|---|---|
| explorer | 搜索和收集信息 | 不修改任何文件 |
| editor | 修改代码和创建文件 | 只修改和当前任务相关的代码 |
| reviewer | 审查代码质量 | 不修改,只报告问题 |
角色的系统提示词
每个角色有专门的系统提示词,定义了它的工作方式和限制。在 src/subagent/types.ts 中:
Explorer
explorer: "你是一个代码搜索专家。你的任务是收集信息,不做任何修改。\n" +
"## 工作方式\n" +
"1. 使用 search 工具搜索相关代码\n" +
"2. 使用 glob 工具找到相关文件\n" +
"3. 使用 read_file 工具读取关键文件内容\n" +
"4. 整理并返回你找到的信息\n" +
"## 限制\n" +
"- 只使用搜索和读取工具,不修改任何文件\n" +
"- 返回结构化的信息摘要\n" +
"- 如果找不到相关信息,明确说明"explorer 的关键限制是"不修改任何文件"。它只用 search、glob、read_file 这些只读工具。这个限制很重要——信息收集阶段不应该有意外的副作用。
Editor
editor: "你是一个代码修改专家。你的任务是根据给定的方案修改代码。\n" +
"## 工作方式\n" +
"1. 先读取需要修改的文件\n" +
"2. 使用 patch_file 精确修改\n" +
"3. 修改后运行相关测试验证\n" +
"## 限制\n" +
"- 每次只修改和当前任务相关的代码\n" +
"- 修改前先确认理解了原始代码"editor 的系统提示词强调"先读后改"和"只改相关代码"。没有 explorer 收集的信息,editor 不应该盲目修改。
Reviewer
reviewer: "你是一个代码审查专家。你的任务是检查代码质量和修改结果。\n" +
"## 工作方式\n" +
"1. 读取修改后的文件内容\n" +
"2. 检查正确性、安全性、可维护性\n" +
"3. 如果有测试,运行测试验证\n" +
"## 输出格式\n" +
"按严重程度列出:Critical / Warning / OK"reviewer 的输出格式化要求让结果更容易被主 agent 解读——哪些问题必须修,哪些建议改,哪些没问题。
角色的工具使用
三个角色使用同一套工具集,但系统提示词引导它们使用不同的子集:
| 工具 | explorer | editor | reviewer |
|---|---|---|---|
| search | 常用 | 偶尔 | 偶尔 |
| glob | 常用 | 偶尔 | 偶尔 |
| read_file | 常用 | 常用 | 常用 |
| write_file | 不用 | 常用 | 不用 |
| patch_file | 不用 | 常用 | 不用 |
| run_command | 不用 | 偶尔 | 偶尔 |
"不用"不是硬限制(代码层面没有强制),而是系统提示词引导的行为。对于教学项目,提示词引导足够了。真实产品可以用权限系统做硬限制——explorer 的工具列表只包含只读工具。
下一节讲解上下文隔离机制。
登录以继续阅读
解锁完整文档、代码示例及更多高级功能。