CtrlK
BlogDocsLog inGet started
Tessl Logo

agent-orchestration-skill

当主 Agent 面临多步骤复杂任务并正在判断要不要 / 怎样把子任务外包给内置子代理(browser / doc-editor / data-analyst / extractor / canvas-designer / coder 等)时触发。**不用于**:单步问答 / 读取 / 简单副作用(主 Agent 直接做)、已经明确要用 `Agent` 且知道 subagent_type 的场景。

64

Quality

77%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

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
SKILL.md
Quality
Evals
Security

子代理委派与 Agent 工具

主 Agent 可以通过 Agent 工具按需调度内置或自定义子代理,把专业子任务外包出去。本 skill 回答四个问题:何时委派、委派给谁、怎么调用、系统约束是什么

工具清单

工具职责只读
Agentsubagent_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, Glob15
🌐 browser页面导航、DOM 交互、表单填写、截图、翻页抓取browser-*, WebSearch20
📊 data-analystCSV/Excel 清洗、统计计算、ECharts/Mermaid 图表Read, Write, Bash15
🔍 extractorPDF/图片 OCR、表格抽取、多文档对比提取Read, office-read, WebFetch10
🎨 canvas-designer节点增删改、自动布局、文本到画布转换canvas-*, canvas-read15
💻 coder多语言代码编写/审查/调试Write, Read, Grep, Glob, Bash20

Agent 工具调用

Agent { description: "爬取 A 站产品表", prompt: "...", subagent_type: "browser" }
参数作用
description短标题,向用户展示进度
prompt交给子代理的完整指令
subagent_type子代理类型
subagent_type场景能力
general-purpose通用任务(默认)完整工具集
explore代码库/文档探索、只读分析只读工具
plan方案设计、输出实现计划只读工具
上表 6 个内置子代理名专业任务各子代理定义的工具集
自定义 Agent 名称已注册的专业 AgentAgent 定义的工具集

Agent 工具默认同步等待子代理完成并返回结果——调用后直接拿到输出继续下一步,不需要额外的等待工具。

SendMessage:追加指令

子代理已创建但需要追加指令或修正方向时:

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 的:

  • projectId —— 同一项目沙箱,路径权限和文件访问一致
  • pageContext 对应的 skill —— 子代理看得到相同的能力认知(主 Agent 在 email 页创建 extractor,后者也看得到 email-ops
  • 临时项目路径 —— 如果主 Agent 已创建临时项目,子代理共享该目录

这意味着你不需要在 prompt 里重复传递环境信息,子代理能从继承的上下文推导。

系统硬限制

限制原因
最大委派深度2(主 → 子,子不可再 spawn)每级复制上下文,层级越深 token 消耗指数增长;也避免级联失败难以定位
最大并发4 个子代理响应速度与系统资源(内存、API 连接)的平衡点
自动清理5 分钟完成后的 Agent 自动从内存删除,避免累积泄漏
步数硬限Master 200 / Sub 10-20Sub 按上表列出,Master 有更大余量处理协调工作

子代理的流式输出通过 data-sub-agent-start / delta / chunk / end 事件推送前端,每个 toolCallId 对应一条独立流,支持多个并发子代理同时流式输出。状态流转:output-streamingoutput-available | output-error

常见误判

  • 别层级嵌套:子代理不能再 spawn 子代理。需要更深层级时重新拆解,让主 Agent 按顺序调用多个子代理。
  • 别用错类型:要页面交互选 browser,只需读静态页用 WebFetch(主 Agent 自己就能调);要 OCR 选 extractor,要精确 DOM 操作选 browser。
  • 别在已有子代理时重新 Agent:用 SendMessage 追加指令,复用已有上下文。
  • 别把简单任务委派出去:一次读取、一次查询、一次创建——主 Agent 自己做比委派快得多。
Repository
itsablabla/openloaf-web
Last updated
First committed

Is this your skill?

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.