当主 Agent 面临多步骤复杂任务并正在判断要不要 / 怎样把子任务外包给内置子代理(browser / doc-editor / data-analyst / extractor / canvas-designer / coder 等)时触发。**不用于**:单步问答 / 读取 / 简单副作用(主 Agent 直接做)、已经明确要用 `Agent` 且知道 subagent_type 的场景。
64
77%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./apps/server/src/ai/builtin-skills/agent-orchestration/SKILL.md主 Agent 可以通过 Agent 工具按需调度内置或自定义子代理,把专业子任务外包出去。本 skill 回答四个问题:何时委派、委派给谁、怎么调用、系统约束是什么。
| 工具 | 职责 | 只读 |
|---|---|---|
Agent | 按 subagent_type 启动内置或自定义子代理处理多步复杂任务 | 否 |
加载:
Agent为核心工具,始终可用,无需ToolSearch激活。
用户消息 →
├─ 简单问答 / 闲聊 / 读取 / 查询 / 单步副作用(创建事件、发邮件、建项目)→ 主 Agent 直接做
└─ 多步骤复杂任务 →
├─ 网页交互(点击/填表/登录/截图/翻页抓取)→ browser
├─ 富文本 / 长文档编辑(Markdown、DOCX、PDF)→ doc-editor
├─ 表格数据分析 / 图表生成 → data-analyst
├─ PDF / 图片 / 网页结构化提取 → extractor
├─ 画布节点操作 / 布局 → canvas-designer
├─ 代码编写 / 调试(仅全局模式;项目模式下 PM 自己做)→ coder
└─ 混合任务 → 主 Agent 拆解后依次或并行委派多个子代理别"什么都委派":简单问答、单步操作、纯读任务用主 Agent 直接做。委派本身会引入上下文传递开销和额外步数,小任务得不偿失。
每个子代理都有独立的 system prompt 和工具集,步数按任务性质调整。
| 子代理 | 触发时机 | 工具集 | 步数 |
|---|---|---|---|
| 📝 doc-editor | 富文本/Markdown/Word/PDF 编辑,长文档改写 | Write, Read, Glob | 15 |
| 🌐 browser | 页面导航、DOM 交互、表单填写、截图、翻页抓取 | browser-*, WebSearch | 20 |
| 📊 data-analyst | CSV/Excel 清洗、统计计算、ECharts/Mermaid 图表 | Read, Write, Bash | 15 |
| 🔍 extractor | PDF/图片 OCR、表格抽取、多文档对比提取 | Read, office-read, WebFetch | 10 |
| 🎨 canvas-designer | 节点增删改、自动布局、文本到画布转换 | canvas-*, canvas-read | 15 |
| 💻 coder | 多语言代码编写/审查/调试 | Write, Read, Grep, Glob, Bash | 20 |
Agent { description: "爬取 A 站产品表", prompt: "...", subagent_type: "browser" }| 参数 | 作用 |
|---|---|
description | 短标题,向用户展示进度 |
prompt | 交给子代理的完整指令 |
subagent_type | 子代理类型 |
| subagent_type | 场景 | 能力 |
|---|---|---|
general-purpose | 通用任务(默认) | 完整工具集 |
explore | 代码库/文档探索、只读分析 | 只读工具 |
plan | 方案设计、输出实现计划 | 只读工具 |
| 上表 6 个内置子代理名 | 专业任务 | 各子代理定义的工具集 |
| 自定义 Agent 名称 | 已注册的专业 Agent | Agent 定义的工具集 |
Agent 工具默认同步等待子代理完成并返回结果——调用后直接拿到输出继续下一步,不需要额外的等待工具。
子代理已创建但需要追加指令或修正方向时:
SendMessage { toolCallId: "agent-xxx", message: "补充要求:结果用 JSON 格式输出" }SendMessage 自动恢复已停止的 agent,不需要重新 Agent 创建,避免重新传递完整上下文的开销。
子任务互不依赖时,在同一轮内同时发出多个 Agent 调用,各自同步返回后主 Agent 汇总:
主 Agent 拆解任务 → 并行发出:
Agent { description: "爬 A 站", subagent_type: "browser", prompt: "..." }
Agent { description: "爬 B 站", subagent_type: "browser", prompt: "..." }
Agent { description: "爬 C 站", subagent_type: "browser", prompt: "..." }
↓ 各自同步返回 A / B / C
主 Agent 汇总 → 最终回复能并行:子任务独立、并行能显著缩短总耗时。 不能并行:后任务依赖前任务的输出(串行依赖);总数超过并发上限 4 需要分批。
子代理自动继承主 Agent 的:
email-ops)这意味着你不需要在 prompt 里重复传递环境信息,子代理能从继承的上下文推导。
| 限制 | 值 | 原因 |
|---|---|---|
| 最大委派深度 | 2(主 → 子,子不可再 spawn) | 每级复制上下文,层级越深 token 消耗指数增长;也避免级联失败难以定位 |
| 最大并发 | 4 个子代理 | 响应速度与系统资源(内存、API 连接)的平衡点 |
| 自动清理 | 5 分钟 | 完成后的 Agent 自动从内存删除,避免累积泄漏 |
| 步数硬限 | Master 200 / Sub 10-20 | Sub 按上表列出,Master 有更大余量处理协调工作 |
子代理的流式输出通过 data-sub-agent-start / delta / chunk / end 事件推送前端,每个 toolCallId 对应一条独立流,支持多个并发子代理同时流式输出。状态流转:output-streaming → output-available | output-error。
Agent:用 SendMessage 追加指令,复用已有上下文。a1ab5be
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.