Skill: slientrain-new/claw-subagent-orchestrator (version 1.0.1)

--- name: subagent-orchestrator description: "Defines the collaboration protocol between main session and sub-agent sessions for executing heavy tasks (analysis, search, writing). Use when spawning sub-agents to reduce main-session context growth, managing task.md checklist workflows, coordinating multi-step delegated work with crash recovery, or optimizing skill workflows through retrospect analysis." --- # Sub-agent Orchestrator 子 session 执行重任务（预估 >10K tokens），干完即消失（`cleanup=delete`），主 session 保持轻量。 --- ## 适用场景 - 任务重（预估 >10K tokens 才能完成） - 需要嵌套工具调用（多次 web_fetch / exec / API） - 结果可结构化输出 - 不需要主 session 全程参与推理 ## 不适用场景 - **轻任务**（查天气、简单定义、一问一答）— 不走子 session，spawn 开销 > 直接干 - **交互式 skill**（魔镜等每轮简短问答）— 每句话的 token 开销远低于 spawn 成本 --- ## Spawn 协议（主 session 执行） 主 session 调用 `sessions_spawn` 时，必须传以下参数： ```python sessions_spawn( task="[ROUTINE]\n协议: skills/subagent-orchestrator/SKILL.md\n技能: <skill-name>\n任务: <一句话描述>\n通知用户: true/false\n任务ID: <task-id>", mode="run", # 必须 cleanup="delete", # 必须 — 干完消失 cwd="/path/workspace/<task-id>", # 必须 — 独立工作区 context="isolated" # 推荐 — 不继承主 session 上下文 ) ``` ### task 字段格式 ``` [ROUTINE] 协议: skills/subagent-orchestrator/SKILL.md 技能: <skill 名，决定工具链和输出格式> 任务: <一句话任务描述 — 原始需求原样传递> 通知用户: true/false ← 主 session 决定（主 session 知道当前渠道） 任务ID: <task-id> ← 主 session 生成 动作：<start / 接续> ← 首次 start，崩溃恢复时 接续 ``` ### task-id 生成规则 ``` task-YYYYMMDD-HHMMSS-<序号> 例：task-20260524-210600-001 ``` 主 session 用当前时间 + 递增序号保证唯一。`cwd` 指向 `workspace/<task-id>/`。 ### 通知用户判定（主 session 负责） | 条件 | 通知用户 | 说明 | |------|---------|------| | 结果独立完整，无需主 session 二次加工 | true | 子 session 拿到 message 权限，直发微信/Telegram | | 结果是中间环节，需要主 session 合并/对比 | false | 子 session 不拿 message，结果回传给主 session | | 当前渠道为本地终端（开 new session 写推文等） | false | 无外部投递目标 | --- ## 子 session 执行协议 ### 启动顺序 ``` 收到 [ROUTINE] → 读 skills/subagent-orchestrator/SKILL.md（本文件） → 读 skills/<skill-name>/SKILL.md（任务技能） → 分析任务 → 拆解 checklist → 在工作区创建 task.md ``` ### task.md 格式 文件位置：`workspace/<task-id>/task.md` ``` # Task: <任务名称> ## Status: <start / working / end> [start done] [working done] 步骤1 [working] 步骤2 [end] ``` - 只在状态切换时写入（见文件末尾的「写入规则」） - 崩溃恢复时：从第一个 `[working]` 且无对应 `[working done]` 的位置继续 ### 步骤记录文件 每个 `[working]` 对应一个同名 `.md` 文件： ``` workspace/<task-id>/ ├── task.md ← checklist 仅状态 ├── 步骤1.md ← 思考过程 + 工具调用 ├── 步骤2.md ← 同上 └── 步骤3.md ← 同上 ``` 文件名和 `[working]` 行描述一致，无需 mapping。 ### 写入规则 - **task.md**：仅状态切换时写（步骤开始 / 完成） - **步骤文件**：直接 `write` 创建新文件（不 `read+edit`），节省 token - 中间推理不写 task.md，写步骤文件 ### 输出 ``` 通知用户: true + 可投递渠道： 最后一步 → message 直发微信/Telegram + assistant reply 摘要 主 session 收到 announce → 确认，不重复发 通知用户: true + 本地终端： 不拿 message 权限，结果由主 session announce 呈现 通知用户: false： 子 session 最后一步 → assistant reply 完整结果 主 session 收到 announce → 转发或合并 ``` --- ## 崩溃恢复 ### 检测 主 session 收到子 session announce： - 正常完成（有 `[end]`）→ 可选择性跑 retrospect（见下节） - 超时/失败（无 `[end]`）→ 进入恢复流程 ### 恢复流程 ``` 旧子 session 崩溃 ↓ 主 session 检查 workspace/<task-id>/task.md ↓ 有 [end] → 正常退出，跳过 ↓ 无 [end] → 恢复 ↓ 主 session 重新 spawn： sessions_spawn( task="[ROUTINE]\n...\n动作: 接续\n任务: 从 task.md 第一个未完成的 [working] 继续", mode="run", cleanup="delete", cwd="/path/workspace/<task-id>" ) ↓ 新子 session： → 读 task.md → 找第一个无对应 [working done] 的 [working] → 读对应步骤文件 → 了解已做的思考 → 从失败点继续执行 → 完成后追加 [working done] 和后续步骤 ``` ### 恢复优势 | 方案 | 成本 | 信息损耗 | |------|------|---------| | 主 session 重喂 | ~3.5K | 有（回忆不全） | | 子 session 接续 | ~2.8K | 零（读 task.md + 步骤文件） | --- ## 技能优化闭环（Retrospect） 正常完成的任务可以跑一个轻量子 session 做回顾分析： ``` spawn 回顾子 session（同上协议，技能固定为 subagent-orchestrator） → 读工作区所有文件 → 提取步骤耗时、异常类型和频率、是否需要更新 skill → 输出 task-retro.md（模板见 templates/task-retro.md） ``` 如果同一 skill 的同一步骤多次出现同类错误 → 自动标记 skill 需要更新。 --- ## 模板文件 - `templates/task.md` — checklist 模板 - `templates/task-retro.md` — 回顾分析模板 - `docs/protocol.md` — 完整设计文档（含更详细的设计决策） --- ## 约定总结 | 角色 | 职责 | 上下文增长 | |------|------|-----------| | 主 session | 路由、spawn、确认 announce | 低（每次 ~0.5K） | | 子 session | 干重活、写文件、发消息 | 高（~20-50K），干完消失 | | 回顾子 session | 复盘、优化分析 | 低（~5K），干完消失 |

path: templates/task-retro.md
content: # Retrospect: <任务名称>

## 步骤耗时
- <步骤1>: <耗时>
- <步骤2>: <耗时>

## 异常
- <步骤>: <异常类型> × N次

## 优化建议
- <建议>


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal:  | SkillSpector: suspicious (MEDIUM)