工具介绍 · Lesson 05
Agent 与 Subagent:主线、分工与上下文隔离
理解 Agent 的工作循环、主 Agent 与 Subagent 的职责,以及何时值得委派、并行和限制工具权限。
完成后你能:
- 解释 Agent 如何围绕工具反馈循环工作
- 区分主 Agent、Plan Agent 与 Subagent
- 判断任务是否适合委派或并行
- 为 Subagent 写清输入、权限与交付格式
模型负责理解与生成,Agent 则把模型放进一个可以观察环境、调用工具、检查结果并继续行动的工作循环。终端里看到的读文件、搜索代码、修改文件、运行测试和重试,都属于 Agent Harness 组织出来的行为。
接收目标
↓
读取上下文 → 选择工具 → 执行动作 → 观察结果
↑ ↓
└────── 调整计划并继续 ─────────┘
↓
用测试、Diff 与验收标准结束任务
主 Agent 负责保持任务主线
主 Agent 直接与你协作,持有当前会话、目标、约束和已经作出的决定。它应该:
- 澄清目标、范围和完成定义;
- 决定先探索、计划还是修改;
- 把必要工作委派给 Subagent;
- 汇总多个结果并处理冲突;
- 对最终修改、验证和风险报告负责。
OpenCode 把可直接切换的 Build 与 Plan 称为 Primary Agents。Build 可以在权限范围内修改与执行;Plan 适合只读探索和方案分析。Claude Code 也提供 Plan 等工作模式,但入口与权限配置并不完全相同。
Subagent 是独立上下文中的执行者
Subagent 接收一项被明确划分的任务,在独立上下文中读取文件、调用获准工具并返回结果。它的价值首先是上下文隔离和专业分工,其次才是并行。
| 方面 | 主 Agent | Subagent |
|---|---|---|
| 上下文 | 保留整个任务的对话与决策 | 通常从一份委派说明开始 |
| 职责 | 维护主线、整合结果、决定下一步 | 完成边界清晰的专项任务 |
| 输出 | 最终修改、验证证据与风险 | 结论、证据、建议或限定范围的改动 |
| 权限 | 按当前会话和项目策略配置 | 可以进一步限制工具、目录与命令 |
| 适合 | 强依赖连续决策的工作 | 调研、搜索、审查和相互独立的子任务 |
Subagent 不会自动继承主会话中所有隐含信息。主 Agent 已经读过哪些文件、你口头否定过什么方案、哪些边界只能人工决定,都需要在委派说明中明确传递。
什么任务值得委派
适合委派的任务通常同时具备三个条件:
- 边界清晰:能说清要检查的目录、问题或候选方案;
- 结果可汇总:输出可以是事实、表格、风险列表或独立补丁;
- 低耦合:不会与其他执行者同时修改同一批核心文件。
| 任务 | 是否适合 Subagent | 原因 |
|---|---|---|
| 搜索仓库中所有认证入口并列出文件与行号 | 适合 | 只读、范围清楚、结果容易核查 |
| 独立检查移动端、无障碍和控制台错误 | 适合 | 可以分成互不覆盖的验证维度 |
| 决定产品需求优先级 | 通常不适合 | 需要业务判断与持续对话 |
| 三个 Agent 同时重构同一个组件 | 不适合 | 修改冲突与整合成本很高 |
| “帮我把整个项目做好” | 不适合 | 没有边界、交付格式和停止条件 |
一份可执行的委派说明
角色:只读代码审查 Subagent。
目标:检查 src/components/ 中的移动端导航实现。
范围:只读相关组件、样式和测试;不要修改文件。
重点:键盘操作、焦点管理、375px 溢出和控制台错误。
证据:每个问题给出文件路径、具体位置和复现条件。
交付:按严重程度排序;没有问题也要说明检查过什么。
停止:不要启动部署、提交或外部消息。
这段说明包含角色、目标、范围、证据、交付格式和停止条件。模型名称不是最重要的字段;如果边界含糊,换更强模型也可能产生难以整合的结果。
OpenCode 与 Claude Code 的共同点和差异
两者都支持专门 Agent、独立上下文、工具限制与任务委派,但产品入口不同:
- OpenCode 区分 Primary Agent 与 Subagent,可用
Tab切换主 Agent,通过@提及专门 Agent,也可让主 Agent调用子任务; - Claude Code 的 Subagent 由主会话委派,能够配置自己的提示、工具、权限与预加载 Skill;
- 两边的默认 Agent、可否嵌套委派、并行方式和上下文继承规则都可能变化,不能把一个产品的配置文件直接复制给另一个。
使用前以 OpenCode Agents与 Claude Code Subagents官方文档为准。
完成检查