Install
openclaw skills install @lingyu9495-source/subagent-firstAI 助手不是不够聪明,是被重活占住了:你让它整理 40 个文件,它一头扎进去十几分钟不抬头——你想问进度、想补需求、想改方向,只能干等。这套作业纪律解决的就是这件事:凡是预计要跑多轮的活(多文件/长研究/批量/长搜索),一律派给后台子代理并行执行,主代理只保留四个动作——拆解、派活、汇总、对话,永远保留随时回你话的能力。我们自己在多智能体团队里天天跑,踩过的 12 个坑全部写进正文:子代理自报成功却发现产出是空的、context 没写全导致跑偏返工、两个子代理并行写同一文件互相覆盖、把需要用户拍板的活派给问不了人的子代理、跨会话长任务错用子代理导致某天悄悄停掉……① 决策树四问判定轻重(一轮工具调用能做完吗/需要用户拍板吗/要活过本次会话吗/能拆成互不依赖的块吗)② 派活四要素(goal / context 必须自包含——子代理看不到你和用户的对话 / output_schema / 验收方式)③ 五步流程:拆解→派活→并行调度→验收→收口 ④ 验收清单:存在性/合规性/真实性/完整性四组逐项打勾,并随机抽一处回一手来源核对 ⑤ 6 种委派模式 + 12 条反模式。配套 scripts/delegation_planner.py:纯标准库零依赖,喂一份任务清单(轮数/文件数/是否研究/是否批量/是否需拍板/是否不可逆/是否跨会话),直接输出「该派子代理 / 自己做 / 转定时任务」+ 并行分组建议 + 主代理必做清单。正文按平台无关的作业纪律写,并附常见平台工具名对照表;Hermes 的字段名/并发上限/后台语义另附一页实况对齐,其他平台按对照表映射即可。触发词:子代理、委派、delegate、任务编排、多智能体、并行执行、上下文管理、主代理被占住、AI不回话、等太久、插话卡住、批量处理、长研究、fork-join、fan-out。
openclaw skills install @lingyu9495-source/subagent-first主代理的注意力属于用户,不属于任务。 凡是预计要跑很多轮的活,一律派给子代理后台去做;主代理只负责拆解、派活、验收、收口,始终保留随时响应用户的能力。
很多 agent 用得别扭,根因不是模型不够强,而是主代理被重活占住了:用户发一句话,主代理埋头跑二十轮工具调用,中间既不能应答、也不能改向,用户只能干等。等它终于抬头,需求可能已经变了。
本技能提供的是一套作业纪律——把"什么时候该派、怎么派、怎么验收"变成可判定的规则,而不是靠手感。纪律是平台无关的:任何支持子代理 / 后台任务的 AI Agent(Claude Code、Codex、Cursor、WorkBuddy、Hermes 以及其他同类工具)都适用,差别只在工具名——映射见本文档的「工具名对照表」一节。
落到具体平台时的实况差异:Hermes 的字段名、并发上限、后台语义与成本口径整理在
references/hermes-runtime-reality.md(示例实现,其他平台可忽略)。正文只讲纪律,不依赖那一页。
出现以下任一情况,就应当按本技能做事(而不是顺手自己干):
反过来的触发条件:如果一件事一轮工具调用就能做完,用户发完这句话就不再跟你说话——那自己做。硬派子代理只会更慢。判据见下一节的决策树。
这套原则对应的是工程上公开的 fork-join / fan-out-fan-in 范式:把任务分叉给多个执行单元,再汇合结果(Java 的
ForkJoinPool、以及 Dean 与 Ghemawat 在 OSDI 2004 提出的 MapReduce 都是这一思想的具体实现)。本技能不发明新概念,只把它落成 agent 场景下可执行的作业纪律。
按顺序回答下列问题,第一个答"是"的分支就是结论。
| 判断项 | 判据 |
|---|---|
| 工具调用次数 | 你自己数得出来,且 ≤ 1 轮 |
| 是否要读多个文件 | 否(0–1 个) |
| 是否有循环 | 否(没有"对每一个…") |
| 预计耗时 | 秒级 |
四项全部满足 → 自己做。 任何一项不满足 → 进入第 2 问。
| 活的性质 | 典型耗时 | 处置 |
|---|---|---|
| 查一下某个值、读一个文件的某段 | 秒 | 自己做 |
| 改一处文案、跑一条命令 | 秒 | 自己做 |
| 读 3 个文件并汇总 | 1–2 分钟 | 可做可派;用户正在等你时派 |
| 读 8 个文件、逐份摘要 | 数分钟 | 派 |
| 多源检索 + 交叉比对 | 数分钟到十几分钟 | 派(可分块并行) |
| 批量处理 N 个输入(N ≥ 5) | 随 N 增长 | 派(切片并行) |
| 需要用户从方案里选 | 不定 | 自己做(收集 + 摆选项) |
| 每天定时跑一次 | 跨会话 | 定时任务(不是子代理) |
先把活切成边界清晰的单元。每个单元必须能独立回答三个问题:
切分时守住两条:
完成判据(逐项打勾)
- 每个单元都写清了输入(含具体路径 / 列表)
- 每个单元都写清了产出(文件名 + 格式 + 存放位置)
- 每个单元都有可判定的完成判据
- 没有两个单元写同一个文件
- 所有依赖关系已标注(哪些必须串行)
用你平台的子代理 / 后台任务工具把每个单元派出去(Hermes 下是 delegate_task,其他平台按「工具名对照表」映射),工单按"四要素"写(见下一节)。要点:
完成判据
- 每个工单四要素齐全(目标 / 背景 / 产出结构 / 验收方式)
- 每个工单都指定了产出路径
- 每个工单都要求回报可验证的证据(命令 + 真实输出)
- 工单里没有"你懂的""照之前那样"这类残缺指代
完成判据
- 无依赖的单元已同时派出(不是一个个排队派)
- 有依赖的单元已按顺序串行,且下游拿到了上游产出
- 并行度在可控范围(没有一次性铺开十几个)
- 派完后主代理没有阻塞等待,仍可响应用户
这是最容易被跳过、也最不能跳过的一步。 子代理的"已完成"是待验证声明,不是结论。
按顺序验证(详见"验收清单"):
任何一条不过 → 按第 5 步的失败处置走。
完成判据
- 每个子代理的产出都用平台的读文件 / 执行工具真实回读过(Hermes 下是
read_file/terminal)- 格式与字段符合工单要求
- 关键结论有可追溯的证据
- 至少抽查过一处原文,与子代理的说法一致
- 失败/不合格的产出已明确标记,没有混进最终结果
汇总给用户时,必须做到三件事:
失败处置(按优先级):
完成判据
- 汇总里标明了每部分的来源(子代理 / 主代理)
- 汇总里标明了每部分的验证状态
- 失败的活已处置(自己做 / 重派 / 如实上报),没有隐身
- 需要用户决定的事项已单独列出
- 没有一句未经证实却被写成事实的话
每个工单都必须包含这四样。缺任何一样,事故概率显著上升。
一句话说清目标,用动词开头、结果导向。
把 3 份 CSV 合并成一份去重后的 combined.csv,保留原始列顺序处理一下这几个文件这是四要素里最容易写崩的一个。 原因很简单:
子代理看不到你与用户的对话历史。它只知道你在工单里写了什么。你脑子里的背景——用户的偏好、之前踩过的坑、为什么不能用某个方案、数据的口径——它一个字都收不到。
所以 context 里必须显式写:
自查方法:把工单单独发给一个完全不了解前情的同事,他能照做吗? 能,就算自包含。
把产出结构写死,避免回来还要你再加工一遍。
markdown / json / csv)+ 必需的字段或章节。json 就别给自由文本——省掉你二次解析的功夫。提前告诉它你要怎么验,它就会照着做;事后才发现没证据,只能返工。
| 要素 | 一句话 | 常见缺陷 |
|---|---|---|
| 目标 | 要做什么,结果导向 | 太笼统:"整理一下资料" |
| 背景 | 背景 + 约束 + 输入清单 + 已知坑 | 只写目标不写背景,子代理自由发挥 |
| 产出结构 | 产出路径、格式、字段 | 没指定路径,产出散落找不到 |
| 验收方式 | 用什么命令/标准判定 | 无判据,靠"感觉还行"放行 |
对每一个子代理产出,逐项过一遍。任何一项"否",就不算完成。
A. 存在性
B. 合规性
C. 真实性
D. 完整性
E. 汇总前的最后一道
把一轮就能做完的小活也派出去,结果主代理花了更多时间写工单、验产物,比自己做还慢。判断标准是任务属性,不是"派了显得专业"。 回到决策树第 1 问。
最贵的错误。你脑子里有一堆前情,工单里只写了半句"按上次的口径整理一下"——子代理没有"上次"。它只能猜,猜错就是全盘返工。凡是指代("上次""那个文件""按用户的意思"),一律展开成具体内容。
"已完成"三个字最危险。常见的是:文件建了但内容是空的、脚本写了但没跑过、声称"已验证"但没有输出。没有真实回读的一律视为未完成。
子代理不能替你问用户。让它去选方案、去决定口径、去做不可逆操作,等于把决策权交给一个看不到全局的执行单元。需要拍板的留在主代理手里。
子代理的生命周期跟一次委派绑定,会话结束它就没了。定时任务、持续监控、常驻服务必须用平台的定时 / 常驻机制(定时任务、计划任务、后台进程)。用错机制,任务会在某天悄悄停掉而没人发现。
两个子代理同时写 output.md,结果留的是谁写的全看运气。规则:一个产出文件只归一个子代理。 要合并,就让它们各写各的,主代理最后合并。
"把所有资料研究一遍然后写个报告"——这种工单会让子代理在长链路上越走越偏,最后交回一堆你不知道怎么验的东西。切小:研究归研究、写归写、验归验。
B 需要 A 的产出,却被同时派出去。结果 B 只能自己猜 A 的结果,前后口径必然打架。派活前先把依赖图画清楚。
本来是为了让用户随时能找到你,结果派完之后主代理阻塞等待(或反复轮询产物),用户还是干等。派完立刻回到对话状态,去做别的事或主动向用户汇报进展。
最严重的一条。子代理超时了、抓不到数据了,却把"合理推测"当成"抓取结果"写进交付物。这比承认失败糟糕得多——失败是可修的,假数据会顺着流程一路传下去。必须如实上报。
多数平台上子代理问不了人——它没有向用户提问的通道(Hermes 的子代理就没有 clarify;其他平台同理,按你的平台确认)。涉及"选哪个方案 / 口径未定 / 要不要做"的活派出去,只能拿回它自己猜的答案。这类活必须留在主代理,先把选项摆给用户。(同理:很多平台上子代理也建不了定时任务、写不了长期记忆——派活前先确认它有什么权限。)
每个子代理各自消耗 token / 配额,派 N 个就是 N 份账单。省钱三招:① 工单里要求"只回报结论 + 产物路径",中间过程别灌回主代理;② 用结构化的回报格式把回报写死;③ 后台活对单轮速度不敏感——优先走低成本的模型或通道。派之前先算:自己做的耗时 vs(写工单 + 等返回 + 回读验证)的总耗时,不划算就自己做。
委派本身也该被验证。事后用这五个指标自评,答不上来的说明这次派得有问题。
| 指标 | 怎么证明 | 不达标的含义 |
|---|---|---|
| 主代理没被占住 | 描述一下:派活期间用户如果发消息,你能不能立刻回 | 不能 → 你其实下场了,纪律没执行 |
| 产出可回读 | 给出产出路径,并当场用平台的读文件 / 执行工具回读一次 | 回读不了 → 产出不存在或路径错 |
| 结论可追溯 | 抽一条关键结论,指出它的来源(文件/命令输出/URL) | 指不出来 → 结果不可信 |
| 时间净收益 | 估算:自己做的耗时 vs 写工单+验收的总耗时 | 没省 → 这个规模的活下次自己做 |
| 质量不掉 | 产出的完整度/准确度,与自己做时相比是否下降 | 掉了 → 工单写得不够细,补 context 再派 |
一句话自检:如果用户问"这活是谁干的、干得怎么样、凭什么这么说",你能否立刻给出三个明确的答案?
同一套纪律,不同平台叫法不同。下表的抽象动作是不变的,工具名按你平台映射即可。
| 抽象动作 | Hermes(已实测) | Claude Code | Cursor / Codex / WorkBuddy | 其他同类平台 |
|---|---|---|---|---|
| 派子代理 / 并行任务 | delegate_task(一个 tasks 数组 = 一次并行委派) | Task / 子代理工具(按你平台的子代理工具映射) | 按你平台的子代理 / 任务工具映射 | 按你平台的子代理 / 任务工具映射 |
| 回读产出 | read_file / search_files | 读文件 / 检索工具(Read / Grep 一类) | 按你平台的读文件工具映射 | 按你平台的读文件工具映射 |
| 执行命令做验证 | terminal | 命令执行工具(Bash 一类) | 按你平台的命令 / 终端工具映射 | 按你平台的命令 / 终端工具映射 |
| 跨会话定时 / 常驻 | cronjob / 后台进程 | 系统定时任务(cron / 计划任务)+ 常驻脚本 | 同左:系统定时任务 + 常驻脚本 | 同左:系统定时任务 + 常驻脚本 |
| 加载技能 | skill_view;技能目录 <HERMES_HOME>/skills/ | 技能目录 ~/.claude/skills/ | 技能目录 ~/.cursor/skills/、~/.codex/skills/、~/.workbuddy/skills/ | 按你平台的技能 / 提示词目录 |
读表注意(诚实边界):
~/.claude/skills/、以及它的全局指令文件 ~/.claude/CLAUDE.md 为实测路径。示例实现(Hermes):字段名(goal / context / output_schema / group)、并发上限(delegation.max_concurrent_children)、后台语义(派完立即返回、禁止轮询、list / steer / stop 现场控制)、成本口径,全部整理在 references/hermes-runtime-reality.md。其他平台按上表映射即可,不需要读那一页。
本技能包内的其他文件(各司其职):
scripts/delegation_planner.py —— 零依赖的委派规划器:读任务清单 JSON,输出该不该派、并行还是串行分组、主代理必做清单。templates/派活工单.md —— 可直接复制的工单模板,四要素留空待填。templates/子代理验收清单.md —— 逐项打勾的验收清单。references/委派模式库.md —— 6 种委派模式 + 12 条反模式的适用场景与取舍。references/案例与致谢.md —— 案例复盘与概念出处。references/hermes-runtime-reality.md —— 示例实现(Hermes):真实字段名、并发上限、后台语义、成本口径(其他平台可忽略)。使用说明_README.md —— 快速上手。本技能引用的公开概念(仅列确有出处者):
ForkJoinPool(Java 7 引入,作者 Doug Lea)是其代表性实现。本技能的价值不在复述这些概念,而在把它们落成 agent 日常作业里可判定的委派纪律——什么时候该派、工单怎么写、产出怎么验、失败怎么办。这部分是可执行的规则,不是概念介绍。
MIT License。可自由用于个人与商业项目,保留作者署名即可。
九品锦锂e | 把踩过的坑封装成"拿来就能跑"的 skill,不写教科书。这个 skill 是我自己每天在用的版本。
微信:ly5419495(加时备注「SkillHub」,我优先通过) 公众号:初五Agent(微信搜一搜,复盘和方法都写在那儿,不加微信也能读)
我另外做的几个能直接跑的工具,都放在这个货架页(复制到浏览器打开): https://skillpay.alipay.com/public/jiupinjinlie
用的时候卡住了、或者有别的场景想让我封装成 skill,按上面任意方式找我就行。

本 Skill 为完整版本,无功能删减。