{"id":"2feffae1-36e6-47d3-8fff-a601d834118b","entityType":"agent","slug":"clawhub-whhh1994-subagent-orchestrator-whhh","name":"Subagent Orchestrator (汪哈哈版)","canonicalUrl":"https://www.xpersona.co/agent/clawhub-whhh1994-subagent-orchestrator-whhh","canonicalPath":"/agent/clawhub-whhh1994-subagent-orchestrator-whhh","generatedAt":"2026-10-11T20:59:36.627Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T15:58:23.226Z","emptyReason":null},"description":"将复杂大型任务拆解为多个子任务，通过 Subagent 并行/串行执行，三文件持久化防丢失，独立任务空间管理，Plan 驱动全程，交付包含中间产物与 diff。降低触发阈值——任务步骤超过3步、涉及2个以上来源或平台、context有膨胀迹象时即触发，不等\"大型\"才拆。触发词：任务分工、子任务编排、多agent协... Skill: Subagent Orchestrator (汪哈哈版) Owner: whhh1994 Summary: 将复杂大型任务拆解为多个子任务，通过 Subagent 并行/串行执行，三文件持久化防丢失，独立任务空间管理，Plan 驱动全程，交付包含中间产物与 diff。降低触发阈值——任务步骤超过3步、涉及2个以上来源或平台、context有膨胀迹象时即触发，不等\"大型\"才拆。触发词：任务分工、子任务编排、多agent协... Tags: latest:2.0.1 Version history: v2.0.1 | 2026-05-25T08:31:32.293Z | user fix: 进度/完成结果推送到用户发起需求的渠道，不强制微信（渠道跟随，不跨渠道推送） v2.0.0 | 2026-05-25T06:19:15.178Z | user v2.0.0 (2026-05-25): Phase 0.5需求确认/独","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17ezpw1yngek3v1p8tw828bex84rra9:subagent-orchestrator-whhh","sourceUrl":"https://clawhub.ai/whhh1994/subagent-orchestrator-whhh","homepage":"https://clawhub.ai/whhh1994/skills/subagent-orchestrator-whhh","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/whhh1994/subagent-orchestrator-whhh","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/whhh1994/skills/subagent-orchestrator-whhh","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"将复杂大型任务拆解为多个子任务，通过 Subagent 并行/串行执行，三文件持久化防丢失，独立任务空间管理，Plan 驱动全程，交付包含中间产物与 diff。降低触发阈值——任务步骤超过3步、涉及2个以上来源或平台、context有膨胀迹象时即触发，不等\"大型\"才拆。触发词：任务分工、子任务编排、多agent协..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T15:58:23.226Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T15:58:23.226Z","emptyReason":null},"stars":null,"forks":null,"downloads":1033,"packageName":null,"latestVersion":"2.0.1","tractionLabel":"1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T15:58:23.212Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T15:58:23.226Z","lastCrawledAt":"2026-10-11T15:58:23.212Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T15:58:23.212Z","lastVerifiedAt":null,"highlights":[{"version":"2.0.1","createdAt":"2026-05-25T08:31:32.293Z","changelog":"fix: 进度/完成结果推送到用户发起需求的渠道，不强制微信（渠道跟随，不跨渠道推送）","fileCount":4,"zipByteSize":13307},{"version":"2.0.0","createdAt":"2026-05-25T06:19:15.178Z","changelog":"v2.0.0 (2026-05-25): Phase 0.5需求确认/独立任务空间/Plan驱动/完整交付清单含diff/Checkpoint+Revert/QueuedMessages/实时进度推送","fileCount":3,"zipByteSize":11865},{"version":"1.9.0","createdAt":"2026-05-13T08:39:48.886Z","changelog":"v1.9.0: 移除所有个人定制内容(微信ID/记忆文件路径/个人Agent配置),通用化为任何OpenClaw用户可直接使用的标准版; 推送机制改为sessions_send→Main Agent通用路由; Phase 4/4.5不再硬编码微信channel","fileCount":3,"zipByteSize":10615},{"version":"1.8.0","createdAt":"2026-05-13T08:21:17.625Z","changelog":"v1.8.0: 新增Phase 0拆分必要性预判; Phase 3升级6步法(漂移自检+工具调用决策树); 状态文件新增步骤指纹; Phase 4新增目标完成度扫描; Phase 4.5 Anti-Drop Guard流程清单; 达尔文优化57→62分; 优化后精简至21K字符(原34K)","fileCount":null,"zipByteSize":null},{"version":"1.3.0","createdAt":"2026-04-26T15:25:02.722Z","changelog":"v1.3.0: 结构化Return协议(autopilot/done/blocked/need_user)+Anti-Drop-Guard+交付验证+按需Memory固化，达尔文第2轮87.8→90.1","fileCount":3,"zipByteSize":11727},{"version":"1.2.0","createdAt":"2026-04-26T15:14:31.771Z","changelog":"v1.2.0: token节流+失败5次暂停+Phase2确认节点+资源整合优化，达尔文优化82.6→87.8","fileCount":3,"zipByteSize":9894}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17ezpw1yngek3v1p8tw828bex84rra9:subagent-orchestrator-whhh","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-whhh1994-subagent-orchestrator-whhh/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-whhh1994-subagent-orchestrator-whhh/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-whhh1994-subagent-orchestrator-whhh/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-whhh1994-subagent-orchestrator-whhh/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-whhh1994-subagent-orchestrator-whhh/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-whhh1994-subagent-orchestrator-whhh/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T20:59:36.626Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-whhh1994-subagent-orchestrator-whhh/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-whhh1994-subagent-orchestrator-whhh/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-whhh1994-subagent-orchestrator-whhh/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-whhh1994-subagent-orchestrator-whhh/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-11T15:58:23.226Z","emptyReason":null},"readme":"Skill: Subagent Orchestrator (汪哈哈版)\n\nOwner: whhh1994\n\nSummary: 将复杂大型任务拆解为多个子任务，通过 Subagent 并行/串行执行，三文件持久化防丢失，独立任务空间管理，Plan 驱动全程，交付包含中间产物与 diff。降低触发阈值——任务步骤超过3步、涉及2个以上来源或平台、context有膨胀迹象时即触发，不等\"大型\"才拆。触发词：任务分工、子任务编排、多agent协...\n\nTags: latest:2.0.1\n\nVersion history:\n\nv2.0.1 | 2026-05-25T08:31:32.293Z | user\n\nfix: 进度/完成结果推送到用户发起需求的渠道，不强制微信（渠道跟随，不跨渠道推送）\n\nv2.0.0 | 2026-05-25T06:19:15.178Z | user\n\nv2.0.0 (2026-05-25): Phase 0.5需求确认/独立任务空间/Plan驱动/完整交付清单含diff/Checkpoint+Revert/QueuedMessages/实时进度推送\n\nv1.9.0 | 2026-05-13T08:39:48.886Z | user\n\nv1.9.0: 移除所有个人定制内容(微信ID/记忆文件路径/个人Agent配置),通用化为任何OpenClaw用户可直接使用的标准版; 推送机制改为sessions_send→Main Agent通用路由; Phase 4/4.5不再硬编码微信channel\n\nv1.8.0 | 2026-05-13T08:21:17.625Z | user\n\nv1.8.0: 新增Phase 0拆分必要性预判; Phase 3升级6步法(漂移自检+工具调用决策树); 状态文件新增步骤指纹; Phase 4新增目标完成度扫描; Phase 4.5 Anti-Drop Guard流程清单; 达尔文优化57→62分; 优化后精简至21K字符(原34K)\n\nv1.3.0 | 2026-04-26T15:25:02.722Z | user\n\nv1.3.0: 结构化Return协议(autopilot/done/blocked/need_user)+Anti-Drop-Guard+交付验证+按需Memory固化，达尔文第2轮87.8→90.1\n\nv1.2.0 | 2026-04-26T15:14:31.771Z | user\n\nv1.2.0: token节流+失败5次暂停+Phase2确认节点+资源整合优化，达尔文优化82.6→87.8\n\nArchive index:\n\nArchive v2.0.1: 4 files, 13307 bytes\n\nFiles: _meta.json (145b), references/paths.md (1976b), skill-card.md (2641b), SKILL.md (26390b)\n\nFile v2.0.1:SKILL.md\n\n---\nname: subagent-orchestrator\ndescription: 将复杂大型任务拆解为多个子任务，通过 Subagent 并行/串行执行，三文件持久化防丢失，独立任务空间管理，Plan 驱动全程，交付包含中间产物与 diff。降低触发阈值——任务步骤超过3步、涉及2个以上来源或平台、context有膨胀迹象时即触发，不等\"大型\"才拆。触发词：任务分工、子任务编排、多agent协作、上下文溢出、任务分流、context快满了。\nmetadata: { \"openclaw\": { \"emoji\": \"🔀\", \"requires\": [\"sessions_spawn\", \"sessions_send\", \"sessions_list\", \"write\", \"read\", \"exec\", \"cron\", \"sessions_yield\", \"subagents\"] }, \"version\": \"2.0.0\", \"updatedAt\": \"2026-05-25\" }\n---\n\n# Subagent Orchestrator Skill\n\n## 版本\n\n- **v2.0.0 (2026-05-25):** 重大升级（参考 Trae Solo / Windsurf Cascade / Devin）\n  1. 新增 **Phase 0.5 需求完善**——接需求后主动询问 3-5 个问题，明确后再拆解\n  2. 新增 **独立任务空间**——每个任务专属目录，中间文件和最终产物集中管理\n  3. 新增 **Plan 驱动机制**——Phase 1 输出完整 Plan，Phase 3 按 Plan 逐项打勾\n  4. 改造 **交付清单**——最终交付含中间产物列表 + 相关文件的 diff\n  5. 新增 **Checkpoint + Revert**——每步完成后打 checkpoint，支持回退\n  6. 新增 **Queued Messages**——执行期间可追加指令，进入队列依次执行\n  7. 新增 **实时进度反馈**——每步完成后推送微信，不等最终完成\n\n---\n\n## 核心原则\n\n### 1. 分工原则\n\n| 角色 | 职责 | 不做什么 |\n|------|------|----------|\n| **Main Agent** | 需求确认、三文件准备、启动 Subagent、监控进度、失败汇总、Queued Messages 路由、最终整合推送微信 | 不亲自执行信息收集/重IO操作 |\n| **Subagent** | 执行具体子任务、写数据文件、更新状态、Checkpoint、失败5次即停+报告 | 不做最终决策、不回写任务文件 |\n\n串行：共享资源（浏览器/数据库）；并行：独立资源（web_fetch/不同API）。不确定时默认串行。\n\n### 2. 三文件分离原则\n\n**Token 节流规范：**\n- `_任务.md`：Main Agent 写一次，Subagent 启动时只读一次，永不重读\n- `_状态.md`：Subagent 增量写，Main Agent 只扫进度，保持 <500字\n- `_数据.md`：Subagent 增量写，Main Agent **仅读此文件汇总**\n- 失败先写状态文件；同一错误连续失败5次立即停止，不空转\n\n### 3. 独立任务空间原则\n\n每个任务有专属目录，所有产物集中管理：\n\n```\n~/.openclaw/workspace/tasks/[任务ID]/\n├── _任务.md           # Main Agent 写入，Subagent 只读\n├── _状态.md           # Subagent 增量写\n├── _数据.md           # Subagent 增量写\n├── _交付清单.md       # Phase 4 由 Main Agent 汇总\n├── _Plan.md           # 独立 Plan 文件，Subagent 执行前只读此文件（不读 _任务.md）\n├── _Checkpoints.md    # Checkpoint 记录，支持回退\n├── _MessageQueue.md   # Queued Messages 队列\n└── workspace/         # 任务执行时的所有中间文件\n    ├── [子任务A]/\n    └── ...\n```\n\n- **用户可指定空间：** `--workspace /path/to/dir`，则使用用户指定目录\n- **命名规则：** `[任务ID]` = `任务名-日期-序号`，如 `ai-research-20260525`\n\n### 4. Plan 驱动原则\n\nPhase 1 的核心产出是 Plan，所有后续执行必须严格按 Plan 推进：\n\n```\n## Plan（共 N 步，控制在 3 轮以内）\n- [ ] Step 1: [描述]（工具：[预期工具]，产出：[中间/最终产物]）\n- [x] Step 2: [描述] ✅ 完成于 10:02（工具：[实际用到的工具]，产出：[实际产出]）\n- [ ] Step 3: [描述]\n```\n\n- Plan 总步骤数控制在 **3 轮以内**\n- Phase 3 每完成一个 Step → 在 Plan 中打 `[x]` 并标注实际工具和产出\n- Subagent 发现 Plan 有缺陷 → 写状态文件 + `tag=need_user` → Main Agent 询问用户是否更新\n\n### 5. 需求完善原则（Phase 0.5）\n\n收到任务后，**不立即拆解**，先主动完善需求，询问 3-5 个关键问题：\n\n```\n1. 【目标明确化】最终交付物？格式？位置？\n2. 【范围界定】包含什么？明确排除什么？\n3. 【约束条件】时间/格式/工具限制？参考文件？\n4. 【验收标准】怎么算完成？量化指标？\n5. 【优先级】必须 vs 可精简？\n6. 【背景/上下文】解决什么问题？历史背景？\n7. 【工作空间】指定目录 or 默认 tasks/[任务ID]？\n```\n\n**跳过条件：** 用户需求已包含完整信息（目标/范围/验收标准/交付位置均有）→ 直接进入 Phase 1\n\n### 6. Checkpoint + Revert 原则\n\n每次 Phase/Step 完成后自动记录 checkpoint，支持回退：\n\n```markdown\n## Checkpoint 记录\n| ID | 时间戳 | Phase/Step | 状态摘要 | 可回退 |\n|-----|---------|-----------|---------|-------|\n| ckpt-0 | 10:00 | Phase 1 | Plan已确认，3步子任务 | 是 |\n| ckpt-1 | 10:15 | Phase 3 Step1 | 收集阶段完成，10条记录 | 是 |\n```\n\n**回退操作步骤（Main Agent 执行）：**\n```\n1. 确认 ckpt-ID 存在且「可回退」= 是\n2. 备份当前 workspace/ → workspace_backup/\n3. 从备份中恢复 ckpt-ID 时 workspace/ 内容（覆盖当前）\n4. 将 ckpt-ID 时 _数据.md 内容写入（覆盖当前）\n5. 新建 checkpoint ckpt-N+1，记录：回退原因、回退到/来自哪个 checkpoint\n6. 通知用户回退完成\n7. 若 Subagent 未结束，sessions_send 通知从 ckpt-ID 状态继续\n```\n\n**不执行回退：** 任务已完成（Phase 4 结束）或 ckpt「可回退」= 否\n\n### 7. Queued Messages 原则\n\nSubagent 执行期间，用户可追加指令，Main Agent 将其追加到 `_MessageQueue.md`，Subagent 每步执行前检查：\n\n```markdown\n## Message Queue\n| # | 时间戳 | 来源 | 消息内容 | 状态 | 执行时机 |\n|---|--------|------|---------|------|---------|\n| 1 | 10:05 | 微信 | \"加一个 XX 字段\" | ⏳ | 下一步执行前 |\n| 2 | 10:07 | WebChat | \"这个先暂停\" | ⏳ | 当前步完成后检查 |\n```\n\n**处理规则（按优先级）：**\n- 工具调用**执行前**收到暂停/停止 → **立即停止**，状态文件标记 `⏸️ 暂停`，报告 Main Agent\n- 工具调用**执行中**收到暂停/停止 → **完成当前调用再停止**（防止半写入文件）\n- 追加类消息 → append 到 `_状态.md` 的「用户追加指令」区，继续执行\n- Phase 4 整合时清空已处理的队列\n\n### 8. 失败阈值原则\n\n| 类型 | 可自行重试 | 超过5次 → 暂停 |\n|------|-----------|----------------|\n| 网络临时故障 | 等10秒再试 | 连续5次 → 暂停 |\n| 验证码/风控 | 写状态→暂停 | — |\n| 信息不足/参数错误 | 修复后重试 | 连续5次 → 暂停 |\n| 权限/认证失败 | — | 立即暂停，报告用户 |\n\n### 9. 交付验证原则\n\n```\n📤 交付验证（必须全部提供，否则视为未交付）\n- 目标渠道：[channel/thread id 或具体位置描述]\n- 消息ID：[message_id 或 object_id]\n- 人类可查位置：[可验证的链接或描述]\n```\n缺少任一 → **任务视为未完成**，不得标记 `done`。\n\n### 10. Memory 固化原则（按需写入，不爆炸）\n\n| 条件 | 是否写 memory | 写什么 | 写多少 |\n|------|-------------|--------|--------|\n| 子任务数 ≥ 3 且正常完成 | 写一行摘要 | 任务目标+关键成果+文件路径 | ~100字 |\n| 有失败/异常/阻塞 | 写 | 失败原因+解决建议 | ~50字 |\n| 正常完成（子任务数 < 3） | **不写** | — | 0 |\n| 发现更好方案/工具 | 写 | 替代方案+使用条件 | ~50字 |\n| 用户做了特殊决策 | 写 | 用户偏好（下次自动用） | ~30字 |\n\n### 11. 模型分级原则\n\n| Agent | 简单 | 中等（默认） | 复杂 |\n|-------|------|------------|------|\n| Claude Code | `claude-haiku-4-5@20251001` | `claude-sonnet-4-6@default` | `claude-opus-4-6@default` |\n| OpenCode | `dobest/MiniMaxM2.5` | `dobest/glm-5.1` | `dobest-claude/claude-opus-4-6@default` |\n| 信息收集子 Agent | `dobest/MiniMaxM2.1` | `dobest/MiniMaxM2.5` | `dobest/gpt-5.4` |\n| 部署子 Agent | `dobest/MiniMaxM2.1` | `dobest/MiniMaxM2.5` | `dobest/glm-5.1` |\n| 学习子 Agent | `dobest/MiniMaxM2.1` | `dobest/MiniMaxM2.5` | `Qwen3.5-397B` |\n\n**难度判断标准：**\n\n| 难度 | 判断标准 |\n|------|---------|\n| **简单** | 一次性任务、常识性输出、不需要深度推理、单步或两步完成 |\n| **中等（默认）** | 需要一定上下文、简单推理、多步操作 |\n| **复杂** | 多步骤、深度推理、长上下文、跨域知识、需反复迭代 |\n\n### 12. 其他原则\n\n- **资源整合度：** 引用的路径/资源使用前验证可达性（ls 检查目录/文件），不可达则报告用户\n- **资源独占：** 共享资源不可并发（浏览器/数据库），独立资源可并发（web_fetch/只读API）\n- **数据纯正性：** 不擅自切换来源，每个来源有验证方法，切换需用户同意\n\n---\n\n## 自动触发场景\n\n**满足任一即触发，不只是用户主动要求：**\n\n1. **预估超出上下文**：3+文件、>10轮对话、多轮浏览器操作、单次输出>1500字 → 立即拆分分流\n2. **Context 即将 compact**：回复变慢/开始遗忘/大量工具调用 → 紧急落盘三文件 + spawn 接续\n3. **单任务天然拆分**：2+独立信息源/平台、分阶段结构 → 按正常流程执行 Phase 0.5-4\n4. **执行中途发现上下文不够**：数据量超预期/Subagent 自身快爆 → 三文件分离，嵌套 spawn 需用户确认\n5. **任务略复杂（3步以上）**：多步推理/搜索/文件操作组合 → 优先拆分\n6. **Subagent 连续失败5次**：停止重试，报告 Main Agent\n7. **Queued Messages 包含暂停/停止指令**：立即停止 Subagent，报告 Main Agent\n\n---\n\n## 执行流程\n\n## Phase 0: 拆分必要性预判\n\n| 判断维度 | 是 → 拆分 | 否 → 直接执行 |\n|---------|----------|--------------|\n| 独立信息源数量 | ≥2个 | 只有1个 |\n| 步骤数 | 明确超过3步 | 1-2步可一次性完成 |\n| 资源冲突风险 | 有共享资源需串行 | 完全无共享资源 |\n| 预期token消耗 | 多来源→拆分收益高 | 单来源→拆分开销大于收益 |\n\n预判结论写入任务文件：\n```markdown\n## 拆分判断\n- 预判结论：[拆分 / 不拆分]\n- 理由：[一句话说明]\n```\n\n---\n\n## Phase 0.5: 需求完善（Main Agent）\n\n**触发：** 任务需要拆分（Phase 0 判定为拆分），且用户未在需求中提供足够信息\n\n**目的：** 主动询问 3-5 个问题，完善以下维度，避免执行中反复确认\n\n**问题清单（选择性使用，选最关键的 3-5 个问）：**\n\n```\n1. 【目标明确化】最终交付物？格式？位置？\n2. 【范围界定】包含什么？明确排除什么？\n3. 【约束条件】时间/格式/工具限制？参考文件？\n4. 【验收标准】怎么算完成？量化指标？\n5. 【优先级】必须 vs 可精简？\n6. 【背景/上下文】解决什么问题？历史背景？\n7. 【工作空间】指定目录 or 默认 ~/.openclaw/workspace/tasks/[任务ID]/？\n```\n\n**确认话术示例：**\n```\n收到，我来帮你做这个调研。\n有几个问题先确认一下：\n1. 最终交付物是报告还是摘要文档？格式偏好？\n2. 需要覆盖哪些平台/来源？\n3. 有没有参考的模板或风格要求？\n确认后开始执行。\n```\n\n**输出：** 收到用户回复 → 综合 Phase 0 判断 → 进入 Phase 1\n\n---\n\n## Phase 1: 任务拆解与准备（Main Agent）\n\n1. **明确目标：** 最终交付物是什么？验收标准？（综合 Phase 0.5 用户回复）\n2. **输出 Plan：** 将任务拆分为 **3 轮以内**的可执行步骤，每步标记预期工具/产出\n3. **判断串行/并行：** 共享资源串行，独立资源并行\n4. **创建任务空间（执行此命令）：**\n```bash\nmkdir -p ~/.openclaw/workspace/tasks/[任务ID]/workspace/[子任务目录按需创建]\ntouch ~/.openclaw/workspace/tasks/[任务ID]/_Plan.md\ntouch ~/.openclaw/workspace/tasks/[任务ID]/_Checkpoints.md\ntouch ~/.openclaw/workspace/tasks/[任务ID]/_MessageQueue.md\n```\n> 三文件（_任务.md / _状态.md / _数据.md / _交付清单.md）由 Main Agent 在后续步骤写入。\n\n**Plan 文件模板（_Plan.md）：**\n```markdown\n# [任务名] Plan\n\n## 基本信息\n- 创建时间: [时间戳]\n- 最后更新: [时间戳]\n\n## Plan（共 N 步，3 轮以内）\n- [ ] Step 1: [描述]（工具：[预期工具]，产出：[中间/最终产物]）\n- [ ] Step 2: [描述]（工具：[预期工具]，产出：[中间/最终产物]）\n- [ ] Step 3: [描述]（工具：[预期工具]，产出：[中间/最终产物]）\n\n## 进度记录\n| Step | 状态 | 开始时间 | 完成时间 | 实际工具 | 实际产出 |\n|------|------|---------|---------|---------|---------|\n| Step 1 | ⏳ | — | — | — | — |\n| Step 2 | ⏳ | — | — | — | — |\n| Step 3 | ⏳ | — | — | — | — |\n```\n\n**Checkpoint 初始记录（_Checkpoints.md）：**\n```markdown\n## Checkpoint 记录\n| ID | 时间戳 | Phase | 状态摘要 | 可回退 |\n|-----|---------|-------|---------|-------|\n| ckpt-0 | [时间戳] | Phase 1 | Plan已确认，N步子任务 | 是（Plan确认后） |\n```\n\n**状态文件初始内容：**\n```markdown\n# [任务名] 状态\n\n## 基本信息\n- 任务空间: ~/.openclaw/workspace/tasks/[任务ID]/\n- Plan 路径: _Plan.md（Subagent 每次执行前只读此文件，不读 _任务.md）\n\n## Plan 进度\n- [ ] Step 1: [描述] — ⏳ 等待中\n- [ ] Step 2: [描述] — ⏳ 等待中\n- [ ] Step 3: [描述] — ⏳ 等待中\n\n## 当前指向\n- 当前执行到：Step N\n- 下一步：Step N 的具体操作\n\n## Checkpoint\n- 最新：ckpt-0（Phase 1 完成）\n- 可回退到：[ckpt-0]\n\n## Queued Messages\n- 待处理：0 条\n\n## 任务状态\n- 状态：⏳ Plan 已就绪（Phase 0.5 需求确认完成）\n\n## 用户追加指令\n- （空）\n\n## 待解决问题\n- 无\n```\n\n---\n\n## Phase 2: 启动 Subagent 前确认（Main Agent）\n\n**⚠️ Spawn 前必须确认：** 向用户展示 Plan + 子任务列表 + 并行/串行策略 + 预计执行顺序，获明确回复后再 spawn。\n\n**确认话术模板：**\n```\n📋 需求已确认，开始执行：\n\n📝 Plan（共 N 步，3 轮以内）\n  Step 1: [描述] → 产出：[文件/数据]\n  Step 2: [描述] → 产出：[文件/数据]\n  ...\n\n📁 任务空间：~/.openclaw/workspace/tasks/[任务ID]/\n  所有中间文件和最终产物都存在这里\n  交付时包含所有文件的变更 diff\n\n🔀 执行策略：[A || B 先行] → C 串行\n📊 实时进度：每步完成后推送微信，完成后推送完整交付清单\n开始执行？\n```\n\n**每次 spawn 四必填：**\n- ✅ `mode: \"session\"`\n- ✅ `sessionKey: \"[任务ID]-[子任务名]\"`\n- ✅ 完整 `task` 参数（塞满所有细节，包括 Plan、任务空间路径）\n- ✅ 三文件路径告知（强调 workspace/ 下的中间文件都存在任务空间里）\n- ✅ 交付证明要求（如有外部交付：`proof` 字段说明需要的证明类型）\n\n**最小 spawn 模板：**\n```javascript\nsessions_spawn({\n  label: \"[子任务描述]\",\n  mode: \"session\",\n  sessionKey: \"[任务ID]-[子任务名]\",\n  task: `\n目标：[明确、可验收的目标]\n只读：_Plan.md（Plan 核心）、_任务.md（仅补充说明）\n只写：_状态.md + _数据.md + _Checkpoints.md + workspace/\n执行前：读 _MessageQueue.md，检查是否有暂停/停止指令\n执行中：每完成一个 Step → 更新 _Plan.md（打[x]） + 写 _数据.md + 打 checkpoint\n异常处理：立即写入状态文件并报告\n验收标准：[至少N条/包含XX/格式为XX]\n`\n})\n```\n\n---\n\n## Phase 3: Subagent 执行（6 步法 + 实时进度）\n\n**⚠️ 重要执行顺序（按此优先级读文件，不要读 SKILL.md 全文）：**\n```\n1. 读 _Plan.md → 找到当前 Step（第一个 [ ] 的行）\n2. 读 _MessageQueue.md → 检查暂停/停止指令\n3. 执行当前 Step（按 Plan 中的工具预期）\n4. 完成后写 _数据.md → 更新 _Plan.md（打[x]）→ 打 checkpoint → sessions_send 进度\n5. 读 _状态.md → 更新进度字段\n6. 重复 1-5，直到所有 Step 完成\n```\n\n**速查表（执行中快速对照）：**\n| 动作 | 读什么文件 | 写什么文件 |\n|------|-----------|-----------|\n| 确认当前步骤 | `_Plan.md`（不读 _任务.md） | — |\n| 检查暂停指令 | `_MessageQueue.md` | — |\n| 记录产出 | — | `_数据.md`（三段式头） |\n| 更新进度 | — | `_Plan.md`（打[x]） |\n| 打快照 | — | `_Checkpoints.md` |\n| 推送进度 | sessions_send → main | `_状态.md` |\n| 遇到问题 | — | `_状态.md` + tag=need_user |\n\n**三段式数据头格式：**\n```\n---\n\n## [子任务] · Plan-Step-N · [时间戳]\n\n[数据类型]\n[实际内容]\n```\n\n**每完成一个 Step：**\n- ✅ 更新 `_Plan.md`（打 `[x]`，填实际工具和产出）\n- ✅ append 到 `_数据.md`（带三段式标记头）\n- ✅ 打 checkpoint（写 `_Checkpoints.md`）\n- ✅ **推送实时进度**（sessions_send 给 Main，根据发起渠道推送，不跨渠道）\n\n**Checkpoint 格式（每步完成后追加到 _Checkpoints.md）：**\n```\n| ckpt-[N] | [时间戳] | Phase 3 Step N完成 | [workspace 变化描述] | 是 |\n```\n\n**实时进度推送（每步完成后）：**\n```javascript\nsessions_send({\n  sessionKey: \"main\",\n  message: `📊 [任务名] 进度\nStep N/N 完成：[step 描述]\n产出：[简要摘要]\n${is_final_step ? '最终完成，推送交付清单...' : '下一步：${next_step}...'}`\n})\n```\n\n**结构化 Return（写状态文件）：**\n```\n## Subagent Return\ntag: [autopilot | done | partial | blocked | need_user | paused]\ntask_id: [任务ID]\nPlan 进度: Step N/N（共 M 步）\nsteps_completed: [1, 2, ...]\nfiles_written: [文件路径列表]\ncheckpoints_created: [ckpt-1, ckpt-2, ...]\nnext: [下一步]\nproof: [外部交付证明 / null]\n```\n\n**tag 含义：**\n- `autopilot`：本轮完成但任务线未结束（还有未完成的 Step）→ Main Agent 必须派下一跳\n- `done`：本任务所有 Plan Step 全部完成 → 进入 Phase 4 整合\n- `partial`：部分完成，状态文件已有断点 → 等待接手或用户决定\n- `blocked`：被阻塞（验证码/权限/网络持续失败）→ 等待人工介入\n- `need_user`：需要用户决策（如 Plan 需要调整）→ 报告给用户\n- `paused`：收到暂停/停止指令 → 等待 Main Agent 决定\n\n---\n\n## Phase 3.5: Queued Messages 处理（Main Agent）\n\nSubagent 返回 `tag=paused` 或用户发送追加消息时：\n1. 读 `_MessageQueue.md`，按顺序处理\n2. 「继续」类 → `sessions_send` 通知 Subagent 继续执行\n3. 「修改 Plan」类 → 更新 `_Plan.md`，`sessions_send` 通知 Subagent\n4. 「停止/取消」类 → 标记任务为 `❌ 取消`，进入 Phase 5 清理\n5. 「追加需求」类 → append 到 `_任务.md` 的「追加需求」区，更新 Plan，`sessions_send` 通知 Subagent\n\n---\n\n## Phase 4: Main Agent 整合（7 步法）\n\n0. **收集中间产物 + 生成 diff（新增步）：**\n   - 扫描 `~/.openclaw/workspace/tasks/[任务ID]/workspace/`，列出所有文件\n   - 对已存在文件（配置/脚本/文档）用 `git diff` 或文件对比工具提取变更\n   - 将 diff 写入 `_交付清单.md` 的「文件 diff」一节\n\n1. **扫状态文件（极小，token≈0）**\n   ```bash\n   read ~/.openclaw/workspace/tasks/[任务ID]/_状态.md\n   ```\n   判断：全✅→继续 | 有⚠️/❌→汇总已有+标注 | 有⏳→汇总已完成部分\n\n2. **仅读数据文件（纯成果内容，无冗余）**\n   ```bash\n   read ~/.openclaw/workspace/tasks/[任务ID]/_数据.md\n   ```\n   按优先级顺序读，只读数据文件，不读任务文件。\n\n3. **跨数据源交叉统计**\n   - 同类项归一（忽略空格/标点差异）\n   - 提及/出现次数 +1\n   - 每项附加所有来源\n   - 按出现次数降序\n\n4. **生成最终交付清单：**\n```markdown\n# [任务名] 交付清单\n\n## 基本信息\n- Plan 执行：N/N 步\n- 完成时间：[时间戳]\n- 任务空间：~/.openclaw/workspace/tasks/[任务ID]/\n\n## 最终产物（用户明确要求）\n| 产物 | 路径/位置 | 格式 | 验证方式 |\n|------|---------|------|---------|\n| [产物名] | [路径] | [格式] | [验证方式] |\n\n## 中间产物（执行过程中产生）\n| 产物 | 路径 | 用途 | 来源 |\n|------|------|------|------|\n| [中间文件名] | workspace/[path] | [用途] | [Step N 生成] |\n\n## 文件 diff（已存在文件的变更）\n| 文件 | 变更类型 | 变更摘要 | diff 关键行 |\n|------|---------|---------|-----------|\n| [配置文件] | 修改 | [改了什么] | [diff 片段] |\n| [脚本] | 新建 | [脚本用途] | 不适用（新建） |\n\n## Checkpoint 记录（可追溯）\n| ID | 时间戳 | Phase/Step | 状态 |\n|-----|---------|-----------|------|\n| ckpt-0 | ... | Phase 1 | Plan完成 |\n| ckpt-1 | ... | Phase 3 Step 1 | 收集完成 |\n\n## 数据来源统计\n- [子任务A]：[N] 条记录\n\n## 交付验证\n- 目标渠道：[channel/thread id]\n- 消息ID：[message_id]\n- 人类可查位置：[链接/描述]\n```\n\n5. **排序与优先级计算**\n   - 定义权重维度（来源权重、时间衰减、相关性等）\n   - 计算综合优先级分\n   - 按分降序排列\n\n6. **输出完成报告：**\n```\n【任务完成】[任务名] ✅\n📊 Plan 执行：N/N 步\n📦 最终产物：X 个\n🔧 中间产物：X 个\n📄 文件 diff：X 处变更（详细见 _交付清单.md）\n💾 Checkpoint：N 个（可回退）\n📁 任务空间：~/.openclaw/workspace/tasks/[任务ID]/\n```\n\n7. **推送最终结果（必须执行）：**\n   > ⚠️ 禁止只回聊天，必须同步推送到用户发起需求的渠道，不跨渠道推送。\n   ```bash\n   openclaw message send --channel [发起渠道ID] --target [用户ID] -m \"[完成报告内容]\"\n   ```\n\n---\n\n## Phase 4.5: sessions_send 路由处理\n\n收到 Subagent 的 `sessions_send` 时：\n1. 识别为「进度更新」或「完成通知」\n2. **不要**回复 `ANNOUNCE_SKIP` 或空回复\n3. 同步推送到用户发起需求的渠道（不跨渠道）\n\n**Anti-Drop Guard：**\n每次 subagent 返回 `tag=autopilot` 后，Main Agent 确认：\n```\n✅ 确认1：任务线还在任务板上（未手动关闭）\n✅ 确认2：Plan 尚有未完成 Step\n✅ 确认3：下一跳已派发 OR 任务线已显式关闭\n→ 任一缺失 → ❌ 立即 spawn 或派给自己\n```\n\n---\n\n## Phase 5: 清理（需用户批准）\n\n**触发：** 任务完成 / 失败 / 超7天未动 / 用户主动要求\n\n**流程：**\n1. **Memory 固化（按需，见原则10）**\n2. 列出 `~/.openclaw/workspace/tasks/[任务ID]/` 下所有文件（含 workspace/）\n3. 向用户展示分类（最终产物 / 中间文件 / 保留文件）\n4. **强调 `_交付清单.md` 不删除**\n5. 未获批准前不执行任何清理\n6. 获批后用 `trash`，不用 `rm`\n\n**规则：**\n- 只清理中间文件，不删最终产出和交付清单\n- 默认保留 72h 内文件\n- 交付清单中标记为「最终产物」的文件永不删除\n\n---\n\n## 实时进度推送规则\n\n**时机：** Phase 3 每完成一个 Step → 推送一条进度（不等最终完成）\n**渠道：** 推送到用户发起需求的渠道（WebChat/Discord/微信等，不跨渠道推送）\n\n**内容要素：**\n```\n📊 [任务名] 进度\nStep N/N 完成：[step 描述]\n产出：[简要摘要]\n[下一步提示 / 最终完成预告]\n```\n\n**不推送：** 步骤内部的重试、工具调用细节、思考过程\n\n---\n\n## 常见问题速查\n\n| 问题 | 解决方案 |\n|------|---------|\n| 对话太长快撑爆上下文 | 立即执行上下文抢救：落盘三文件 + spawn Subagent 接续 |\n| Context compact 后忘了在做什么 | 读 _Plan.md 恢复进度，读 _状态.md 恢复上下文 |\n| Subagent 忘了任务 | 检查 task 参数是否完整；恢复优先级：task > 文件 > 记忆 |\n| 多个 Subagent 资源冲突 | 串行执行，一个用完再下一个 |\n| Gateway 重启导致失败 | Main Agent 重新 spawn，状态文件中有 Plan 断点 |\n| 进度卡住 | `subagents list` 检查，kill 后从断点重启 |\n| Token 消耗过大 | 确认只读数据文件汇总，不读任务文件和完整状态日志 |\n| 临时文件堆积 | Phase 5 清理，必须用户批准 |\n| Subagent 连续失败 5 次 | 停止重试，写状态文件❌，向 Main Agent 报告，等待人工介入 |\n| Subagent 返回 autopilot 但任务线停了 | 检查 anti-drop guard 三件事 |\n| 外部交付任务口头确认\"已发送\" | 要求提供 delivery-proof，缺一不可标记未完成 |\n| Plan 中的 Step 执行遇到意外情况 | 写状态文件 + tag=need_user，报告 Main Agent，等用户确认 |\n| 中间文件不知道存哪 | 存到 `workspace/[子任务]/`，交付时统一汇报 |\n| 用户在 Subagent 执行期间追加指令 | Main Agent 追加到 `_MessageQueue.md`，Subagent 下一轮读取 |\n| 用户要求回退到某 checkpoint | Main Agent 执行回退，恢复 workspace/ + _数据.md 到当时状态 |\n\n---\n\n## 辅助功能（精简）\n\n**每日 Session 清理定时任务：** 配合 `session-cleanup-pro` skill 使用。用户确认需要后，用 `cron add` 创建定时任务（每天凌晨 03:30）。\n\n---\n\n## 适用场景示例\n\n| 场景 | Plan 拆分 | 执行策略 | 中间产物 |\n|------|-----------|---------|---------|\n| 上下文即将溢出 | 未完成部分拆出 Plan | Subagent 执行，Main 只保留等待 | workspace/ 下中间文件 |\n| 多平台攻略抓取 | 按平台分 Step | 浏览器串行，web_fetch并行 | workspace/[平台]/ 数据文件 |\n| 配置修改任务 | Step1备份→Step2修改→Step3验证 | 串行，备份优先 | backup/ + diff |\n| 代码生成+review | Step 1生成→Step 2 review→Step 3修改 | 串行，review 依赖生成 | workspace/generate/ + workspace/review/ |\n| 多数据源调研 | 按来源分 Step | API限流可能需串行 | workspace/[来源]/ 原始数据 |\n\n---\n\n## 设计理念\n\n> **找的范围应该确定性，想的综合应该概率性。**\n> 三文件分离的本质是关注点分离：任务是契约，状态是心跳，数据是成果。Plan 驱动让执行有章可循，独立空间让交付有据可查，diff 让变更透明可追溯。\n\nFile v2.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn7fgm829te36r33ybgx1v7jpx82khse\",\n  \"slug\": \"subagent-orchestrator-whhh\",\n  \"version\": \"2.0.1\",\n  \"publishedAt\": 1779697892293\n}\n\nFile v2.0.1:references/paths.md\n\n# 路径规范（subagent-orchestrator）\n\n本文档列出 skill 中所有引用的路径和资源，供验证和快速查阅。\n\n## 任务文件路径\n\n| 文件 | 路径规范 | 用途 |\n|------|---------|------|\n| 任务文件 | `~/.openclaw/workspace/tasks/[子任务]_[日期]_任务.md` | Main Agent 写一次，Subagent 只读 |\n| 状态文件 | `~/.openclaw/workspace/tasks/[子任务]_[日期]_状态.md` | Subagent 增量写，Main Agent 快速扫 |\n| 数据文件 | `~/.openclaw/workspace/tasks/[子任务]_[日期]_数据.md` | Subagent 增量写，Main Agent 汇总 |\n| 最终产出 | `~/.openclaw/workspace/tasks/[项目]_[日期]_最终.md` | Phase 4 输出，用户指定的最终交付 |\n\n## SessionKey 命名规范\n\n格式：`[项目]-[子任务简称]-[YYYYMMDD]`\n示例：`travel-xiaohongshu-20260426`\n\n## 依赖 skill\n\n| Skill | 路径 | 触发时调用 |\n|-------|------|-----------|\n| xiaohongshu-crawler | `skills/xiaohongshu-crawler/SKILL.md` | 小红书攻略抓取 |\n| wechat-article-spider | `skills/wechat-article-spider/SKILL.md` | 公众号文章爬取 |\n| session-cleanup | `skills/session-cleanup/SKILL.md` | 每日 session 清理（辅助功能） |\n| agent-browser-clawdbot | `skills/agent-browser-clawdbot/SKILL.md` | 浏览器自动化（需串行） |\n\n## 依赖脚本\n\n| 脚本 | 路径 | 用途 |\n|------|------|------|\n| session 扫描 | `skills/session-cleanup/scripts/scan_sessions.sh` | session 清理扫描 |\n\n## 验证检查点\n\n执行任务前，Main Agent 应验证路径可达性：\n\n```bash\n# 验证 tasks 目录存在\nls ~/.openclaw/workspace/tasks/ 2>/dev/null || mkdir -p ~/.openclaw/workspace/tasks/\n\n# 验证依赖 skill 存在（按需）\nls ~/.openclaw/workspace/skills/[skill-name]/SKILL.md 2>/dev/null && echo \"✅ [skill] 可用\" || echo \"⚠️ [skill] 未安装\"\n```\n\n## wiki 关联\n\n最终产出可选择性输出到 wiki：\n- Wiki 路径：`~/llm-wiki/raw/articles/[目的地]综合攻略.md`（需用户确认）\n\nFile v2.0.1:skill-card.md\n\n## Description:\n\nCoordinates complex agent work by decomposing tasks into plans, spawning subagents, tracking progress in task files, and consolidating outputs, checkpoints, and diffs.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[whhh1994](https://clawhub.ai/user/whhh1994)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agent operators use this skill to split larger, multi-step work into managed subagent tasks with persistent plans, status files, checkpoints, and final delivery summaries. It is intended for complex research, coding, configuration, and data-gathering workflows that benefit from staged execution and recovery points.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Broad orchestration authority can spawn sessions, run commands, and write task artifacts.\n\nMitigation: Install only in environments where this level of agent delegation is intended, and review generated plans before subagents run.\n\nRisk: Persistent task files may store sensitive task details under ~/.openclaw/workspace/tasks.\n\nMitigation: Avoid using the skill for sensitive work unless local storage is acceptable, and clean task workspaces after review.\n\nRisk: Progress and final summaries may be sent through configured external channels.\n\nMitigation: Confirm channel routing before use and disable or restrict message behavior where the host environment allows it.\n\nRisk: Cron-related capability may create recurring behavior when enabled with companion cleanup workflows.\n\nMitigation: Review any scheduled tasks before enabling them and remove schedules that are no longer needed.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/whhh1994/skills/subagent-orchestrator-whhh)\n- [whhh1994 ClawHub profile](https://clawhub.ai/user/whhh1994)\n- [Path reference](artifact/references/paths.md)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown task plans, status updates, file paths, command snippets, and delivery summaries]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May create persistent task artifacts and send progress or final-result messages through the originating channel.]\n\n## Skill Version(s):\n\n2.0.1 (source: server release metadata; source skill frontmatter reports 2.0.0)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v2.0.0: 3 files, 11865 bytes\n\nFiles: _meta.json (145b), references/paths.md (1976b), SKILL.md (26240b)\n\nFile v2.0.0:SKILL.md\n\n---\nname: subagent-orchestrator\ndescription: 将复杂大型任务拆解为多个子任务，通过 Subagent 并行/串行执行，三文件持久化防丢失，独立任务空间管理，Plan 驱动全程，交付包含中间产物与 diff。降低触发阈值——任务步骤超过3步、涉及2个以上来源或平台、context有膨胀迹象时即触发，不等\"大型\"才拆。触发词：任务分工、子任务编排、多agent协作、上下文溢出、任务分流、context快满了。\nmetadata: { \"openclaw\": { \"emoji\": \"🔀\", \"requires\": [\"sessions_spawn\", \"sessions_send\", \"sessions_list\", \"write\", \"read\", \"exec\", \"cron\", \"sessions_yield\", \"subagents\"] }, \"version\": \"2.0.0\", \"updatedAt\": \"2026-05-25\" }\n---\n\n# Subagent Orchestrator Skill\n\n## 版本\n\n- **v2.0.0 (2026-05-25):** 重大升级（参考 Trae Solo / Windsurf Cascade / Devin）\n  1. 新增 **Phase 0.5 需求完善**——接需求后主动询问 3-5 个问题，明确后再拆解\n  2. 新增 **独立任务空间**——每个任务专属目录，中间文件和最终产物集中管理\n  3. 新增 **Plan 驱动机制**——Phase 1 输出完整 Plan，Phase 3 按 Plan 逐项打勾\n  4. 改造 **交付清单**——最终交付含中间产物列表 + 相关文件的 diff\n  5. 新增 **Checkpoint + Revert**——每步完成后打 checkpoint，支持回退\n  6. 新增 **Queued Messages**——执行期间可追加指令，进入队列依次执行\n  7. 新增 **实时进度反馈**——每步完成后推送微信，不等最终完成\n\n---\n\n## 核心原则\n\n### 1. 分工原则\n\n| 角色 | 职责 | 不做什么 |\n|------|------|----------|\n| **Main Agent** | 需求确认、三文件准备、启动 Subagent、监控进度、失败汇总、Queued Messages 路由、最终整合推送微信 | 不亲自执行信息收集/重IO操作 |\n| **Subagent** | 执行具体子任务、写数据文件、更新状态、Checkpoint、失败5次即停+报告 | 不做最终决策、不回写任务文件 |\n\n串行：共享资源（浏览器/数据库）；并行：独立资源（web_fetch/不同API）。不确定时默认串行。\n\n### 2. 三文件分离原则\n\n**Token 节流规范：**\n- `_任务.md`：Main Agent 写一次，Subagent 启动时只读一次，永不重读\n- `_状态.md`：Subagent 增量写，Main Agent 只扫进度，保持 <500字\n- `_数据.md`：Subagent 增量写，Main Agent **仅读此文件汇总**\n- 失败先写状态文件；同一错误连续失败5次立即停止，不空转\n\n### 3. 独立任务空间原则\n\n每个任务有专属目录，所有产物集中管理：\n\n```\n~/.openclaw/workspace/tasks/[任务ID]/\n├── _任务.md           # Main Agent 写入，Subagent 只读\n├── _状态.md           # Subagent 增量写\n├── _数据.md           # Subagent 增量写\n├── _交付清单.md       # Phase 4 由 Main Agent 汇总\n├── _Plan.md           # 独立 Plan 文件，Subagent 执行前只读此文件（不读 _任务.md）\n├── _Checkpoints.md    # Checkpoint 记录，支持回退\n├── _MessageQueue.md   # Queued Messages 队列\n└── workspace/         # 任务执行时的所有中间文件\n    ├── [子任务A]/\n    └── ...\n```\n\n- **用户可指定空间：** `--workspace /path/to/dir`，则使用用户指定目录\n- **命名规则：** `[任务ID]` = `任务名-日期-序号`，如 `ai-research-20260525`\n\n### 4. Plan 驱动原则\n\nPhase 1 的核心产出是 Plan，所有后续执行必须严格按 Plan 推进：\n\n```\n## Plan（共 N 步，控制在 3 轮以内）\n- [ ] Step 1: [描述]（工具：[预期工具]，产出：[中间/最终产物]）\n- [x] Step 2: [描述] ✅ 完成于 10:02（工具：[实际用到的工具]，产出：[实际产出]）\n- [ ] Step 3: [描述]\n```\n\n- Plan 总步骤数控制在 **3 轮以内**\n- Phase 3 每完成一个 Step → 在 Plan 中打 `[x]` 并标注实际工具和产出\n- Subagent 发现 Plan 有缺陷 → 写状态文件 + `tag=need_user` → Main Agent 询问用户是否更新\n\n### 5. 需求完善原则（Phase 0.5）\n\n收到任务后，**不立即拆解**，先主动完善需求，询问 3-5 个关键问题：\n\n```\n1. 【目标明确化】最终交付物？格式？位置？\n2. 【范围界定】包含什么？明确排除什么？\n3. 【约束条件】时间/格式/工具限制？参考文件？\n4. 【验收标准】怎么算完成？量化指标？\n5. 【优先级】必须 vs 可精简？\n6. 【背景/上下文】解决什么问题？历史背景？\n7. 【工作空间】指定目录 or 默认 tasks/[任务ID]？\n```\n\n**跳过条件：** 用户需求已包含完整信息（目标/范围/验收标准/交付位置均有）→ 直接进入 Phase 1\n\n### 6. Checkpoint + Revert 原则\n\n每次 Phase/Step 完成后自动记录 checkpoint，支持回退：\n\n```markdown\n## Checkpoint 记录\n| ID | 时间戳 | Phase/Step | 状态摘要 | 可回退 |\n|-----|---------|-----------|---------|-------|\n| ckpt-0 | 10:00 | Phase 1 | Plan已确认，3步子任务 | 是 |\n| ckpt-1 | 10:15 | Phase 3 Step1 | 收集阶段完成，10条记录 | 是 |\n```\n\n**回退操作步骤（Main Agent 执行）：**\n```\n1. 确认 ckpt-ID 存在且「可回退」= 是\n2. 备份当前 workspace/ → workspace_backup/\n3. 从备份中恢复 ckpt-ID 时 workspace/ 内容（覆盖当前）\n4. 将 ckpt-ID 时 _数据.md 内容写入（覆盖当前）\n5. 新建 checkpoint ckpt-N+1，记录：回退原因、回退到/来自哪个 checkpoint\n6. 通知用户回退完成\n7. 若 Subagent 未结束，sessions_send 通知从 ckpt-ID 状态继续\n```\n\n**不执行回退：** 任务已完成（Phase 4 结束）或 ckpt「可回退」= 否\n\n### 7. Queued Messages 原则\n\nSubagent 执行期间，用户可追加指令，Main Agent 将其追加到 `_MessageQueue.md`，Subagent 每步执行前检查：\n\n```markdown\n## Message Queue\n| # | 时间戳 | 来源 | 消息内容 | 状态 | 执行时机 |\n|---|--------|------|---------|------|---------|\n| 1 | 10:05 | 微信 | \"加一个 XX 字段\" | ⏳ | 下一步执行前 |\n| 2 | 10:07 | WebChat | \"这个先暂停\" | ⏳ | 当前步完成后检查 |\n```\n\n**处理规则（按优先级）：**\n- 工具调用**执行前**收到暂停/停止 → **立即停止**，状态文件标记 `⏸️ 暂停`，报告 Main Agent\n- 工具调用**执行中**收到暂停/停止 → **完成当前调用再停止**（防止半写入文件）\n- 追加类消息 → append 到 `_状态.md` 的「用户追加指令」区，继续执行\n- Phase 4 整合时清空已处理的队列\n\n### 8. 失败阈值原则\n\n| 类型 | 可自行重试 | 超过5次 → 暂停 |\n|------|-----------|----------------|\n| 网络临时故障 | 等10秒再试 | 连续5次 → 暂停 |\n| 验证码/风控 | 写状态→暂停 | — |\n| 信息不足/参数错误 | 修复后重试 | 连续5次 → 暂停 |\n| 权限/认证失败 | — | 立即暂停，报告用户 |\n\n### 9. 交付验证原则\n\n```\n📤 交付验证（必须全部提供，否则视为未交付）\n- 目标渠道：[channel/thread id 或具体位置描述]\n- 消息ID：[message_id 或 object_id]\n- 人类可查位置：[可验证的链接或描述]\n```\n缺少任一 → **任务视为未完成**，不得标记 `done`。\n\n### 10. Memory 固化原则（按需写入，不爆炸）\n\n| 条件 | 是否写 memory | 写什么 | 写多少 |\n|------|-------------|--------|--------|\n| 子任务数 ≥ 3 且正常完成 | 写一行摘要 | 任务目标+关键成果+文件路径 | ~100字 |\n| 有失败/异常/阻塞 | 写 | 失败原因+解决建议 | ~50字 |\n| 正常完成（子任务数 < 3） | **不写** | — | 0 |\n| 发现更好方案/工具 | 写 | 替代方案+使用条件 | ~50字 |\n| 用户做了特殊决策 | 写 | 用户偏好（下次自动用） | ~30字 |\n\n### 11. 模型分级原则\n\n| Agent | 简单 | 中等（默认） | 复杂 |\n|-------|------|------------|------|\n| Claude Code | `claude-haiku-4-5@20251001` | `claude-sonnet-4-6@default` | `claude-opus-4-6@default` |\n| OpenCode | `dobest/MiniMaxM2.5` | `dobest/glm-5.1` | `dobest-claude/claude-opus-4-6@default` |\n| 信息收集子 Agent | `dobest/MiniMaxM2.1` | `dobest/MiniMaxM2.5` | `dobest/gpt-5.4` |\n| 部署子 Agent | `dobest/MiniMaxM2.1` | `dobest/MiniMaxM2.5` | `dobest/glm-5.1` |\n| 学习子 Agent | `dobest/MiniMaxM2.1` | `dobest/MiniMaxM2.5` | `Qwen3.5-397B` |\n\n**难度判断标准：**\n\n| 难度 | 判断标准 |\n|------|---------|\n| **简单** | 一次性任务、常识性输出、不需要深度推理、单步或两步完成 |\n| **中等（默认）** | 需要一定上下文、简单推理、多步操作 |\n| **复杂** | 多步骤、深度推理、长上下文、跨域知识、需反复迭代 |\n\n### 12. 其他原则\n\n- **资源整合度：** 引用的路径/资源使用前验证可达性（ls 检查目录/文件），不可达则报告用户\n- **资源独占：** 共享资源不可并发（浏览器/数据库），独立资源可并发（web_fetch/只读API）\n- **数据纯正性：** 不擅自切换来源，每个来源有验证方法，切换需用户同意\n\n---\n\n## 自动触发场景\n\n**满足任一即触发，不只是用户主动要求：**\n\n1. **预估超出上下文**：3+文件、>10轮对话、多轮浏览器操作、单次输出>1500字 → 立即拆分分流\n2. **Context 即将 compact**：回复变慢/开始遗忘/大量工具调用 → 紧急落盘三文件 + spawn 接续\n3. **单任务天然拆分**：2+独立信息源/平台、分阶段结构 → 按正常流程执行 Phase 0.5-4\n4. **执行中途发现上下文不够**：数据量超预期/Subagent 自身快爆 → 三文件分离，嵌套 spawn 需用户确认\n5. **任务略复杂（3步以上）**：多步推理/搜索/文件操作组合 → 优先拆分\n6. **Subagent 连续失败5次**：停止重试，报告 Main Agent\n7. **Queued Messages 包含暂停/停止指令**：立即停止 Subagent，报告 Main Agent\n\n---\n\n## 执行流程\n\n## Phase 0: 拆分必要性预判\n\n| 判断维度 | 是 → 拆分 | 否 → 直接执行 |\n|---------|----------|--------------|\n| 独立信息源数量 | ≥2个 | 只有1个 |\n| 步骤数 | 明确超过3步 | 1-2步可一次性完成 |\n| 资源冲突风险 | 有共享资源需串行 | 完全无共享资源 |\n| 预期token消耗 | 多来源→拆分收益高 | 单来源→拆分开销大于收益 |\n\n预判结论写入任务文件：\n```markdown\n## 拆分判断\n- 预判结论：[拆分 / 不拆分]\n- 理由：[一句话说明]\n```\n\n---\n\n## Phase 0.5: 需求完善（Main Agent）\n\n**触发：** 任务需要拆分（Phase 0 判定为拆分），且用户未在需求中提供足够信息\n\n**目的：** 主动询问 3-5 个问题，完善以下维度，避免执行中反复确认\n\n**问题清单（选择性使用，选最关键的 3-5 个问）：**\n\n```\n1. 【目标明确化】最终交付物？格式？位置？\n2. 【范围界定】包含什么？明确排除什么？\n3. 【约束条件】时间/格式/工具限制？参考文件？\n4. 【验收标准】怎么算完成？量化指标？\n5. 【优先级】必须 vs 可精简？\n6. 【背景/上下文】解决什么问题？历史背景？\n7. 【工作空间】指定目录 or 默认 ~/.openclaw/workspace/tasks/[任务ID]/？\n```\n\n**确认话术示例：**\n```\n收到，我来帮你做这个调研。\n有几个问题先确认一下：\n1. 最终交付物是报告还是摘要文档？格式偏好？\n2. 需要覆盖哪些平台/来源？\n3. 有没有参考的模板或风格要求？\n确认后开始执行。\n```\n\n**输出：** 收到用户回复 → 综合 Phase 0 判断 → 进入 Phase 1\n\n---\n\n## Phase 1: 任务拆解与准备（Main Agent）\n\n1. **明确目标：** 最终交付物是什么？验收标准？（综合 Phase 0.5 用户回复）\n2. **输出 Plan：** 将任务拆分为 **3 轮以内**的可执行步骤，每步标记预期工具/产出\n3. **判断串行/并行：** 共享资源串行，独立资源并行\n4. **创建任务空间（执行此命令）：**\n```bash\nmkdir -p ~/.openclaw/workspace/tasks/[任务ID]/workspace/[子任务目录按需创建]\ntouch ~/.openclaw/workspace/tasks/[任务ID]/_Plan.md\ntouch ~/.openclaw/workspace/tasks/[任务ID]/_Checkpoints.md\ntouch ~/.openclaw/workspace/tasks/[任务ID]/_MessageQueue.md\n```\n> 三文件（_任务.md / _状态.md / _数据.md / _交付清单.md）由 Main Agent 在后续步骤写入。\n\n**Plan 文件模板（_Plan.md）：**\n```markdown\n# [任务名] Plan\n\n## 基本信息\n- 创建时间: [时间戳]\n- 最后更新: [时间戳]\n\n## Plan（共 N 步，3 轮以内）\n- [ ] Step 1: [描述]（工具：[预期工具]，产出：[中间/最终产物]）\n- [ ] Step 2: [描述]（工具：[预期工具]，产出：[中间/最终产物]）\n- [ ] Step 3: [描述]（工具：[预期工具]，产出：[中间/最终产物]）\n\n## 进度记录\n| Step | 状态 | 开始时间 | 完成时间 | 实际工具 | 实际产出 |\n|------|------|---------|---------|---------|---------|\n| Step 1 | ⏳ | — | — | — | — |\n| Step 2 | ⏳ | — | — | — | — |\n| Step 3 | ⏳ | — | — | — | — |\n```\n\n**Checkpoint 初始记录（_Checkpoints.md）：**\n```markdown\n## Checkpoint 记录\n| ID | 时间戳 | Phase | 状态摘要 | 可回退 |\n|-----|---------|-------|---------|-------|\n| ckpt-0 | [时间戳] | Phase 1 | Plan已确认，N步子任务 | 是（Plan确认后） |\n```\n\n**状态文件初始内容：**\n```markdown\n# [任务名] 状态\n\n## 基本信息\n- 任务空间: ~/.openclaw/workspace/tasks/[任务ID]/\n- Plan 路径: _Plan.md（Subagent 每次执行前只读此文件，不读 _任务.md）\n\n## Plan 进度\n- [ ] Step 1: [描述] — ⏳ 等待中\n- [ ] Step 2: [描述] — ⏳ 等待中\n- [ ] Step 3: [描述] — ⏳ 等待中\n\n## 当前指向\n- 当前执行到：Step N\n- 下一步：Step N 的具体操作\n\n## Checkpoint\n- 最新：ckpt-0（Phase 1 完成）\n- 可回退到：[ckpt-0]\n\n## Queued Messages\n- 待处理：0 条\n\n## 任务状态\n- 状态：⏳ Plan 已就绪（Phase 0.5 需求确认完成）\n\n## 用户追加指令\n- （空）\n\n## 待解决问题\n- 无\n```\n\n---\n\n## Phase 2: 启动 Subagent 前确认（Main Agent）\n\n**⚠️ Spawn 前必须确认：** 向用户展示 Plan + 子任务列表 + 并行/串行策略 + 预计执行顺序，获明确回复后再 spawn。\n\n**确认话术模板：**\n```\n📋 需求已确认，开始执行：\n\n📝 Plan（共 N 步，3 轮以内）\n  Step 1: [描述] → 产出：[文件/数据]\n  Step 2: [描述] → 产出：[文件/数据]\n  ...\n\n📁 任务空间：~/.openclaw/workspace/tasks/[任务ID]/\n  所有中间文件和最终产物都存在这里\n  交付时包含所有文件的变更 diff\n\n🔀 执行策略：[A || B 先行] → C 串行\n📊 实时进度：每步完成后推送微信，完成后推送完整交付清单\n开始执行？\n```\n\n**每次 spawn 四必填：**\n- ✅ `mode: \"session\"`\n- ✅ `sessionKey: \"[任务ID]-[子任务名]\"`\n- ✅ 完整 `task` 参数（塞满所有细节，包括 Plan、任务空间路径）\n- ✅ 三文件路径告知（强调 workspace/ 下的中间文件都存在任务空间里）\n- ✅ 交付证明要求（如有外部交付：`proof` 字段说明需要的证明类型）\n\n**最小 spawn 模板：**\n```javascript\nsessions_spawn({\n  label: \"[子任务描述]\",\n  mode: \"session\",\n  sessionKey: \"[任务ID]-[子任务名]\",\n  task: `\n目标：[明确、可验收的目标]\n只读：_Plan.md（Plan 核心）、_任务.md（仅补充说明）\n只写：_状态.md + _数据.md + _Checkpoints.md + workspace/\n执行前：读 _MessageQueue.md，检查是否有暂停/停止指令\n执行中：每完成一个 Step → 更新 _Plan.md（打[x]） + 写 _数据.md + 打 checkpoint\n异常处理：立即写入状态文件并报告\n验收标准：[至少N条/包含XX/格式为XX]\n`\n})\n```\n\n---\n\n## Phase 3: Subagent 执行（6 步法 + 实时进度）\n\n**⚠️ 重要执行顺序（按此优先级读文件，不要读 SKILL.md 全文）：**\n```\n1. 读 _Plan.md → 找到当前 Step（第一个 [ ] 的行）\n2. 读 _MessageQueue.md → 检查暂停/停止指令\n3. 执行当前 Step（按 Plan 中的工具预期）\n4. 完成后写 _数据.md → 更新 _Plan.md（打[x]）→ 打 checkpoint → sessions_send 进度\n5. 读 _状态.md → 更新进度字段\n6. 重复 1-5，直到所有 Step 完成\n```\n\n**速查表（执行中快速对照）：**\n| 动作 | 读什么文件 | 写什么文件 |\n|------|-----------|-----------|\n| 确认当前步骤 | `_Plan.md`（不读 _任务.md） | — |\n| 检查暂停指令 | `_MessageQueue.md` | — |\n| 记录产出 | — | `_数据.md`（三段式头） |\n| 更新进度 | — | `_Plan.md`（打[x]） |\n| 打快照 | — | `_Checkpoints.md` |\n| 推送进度 | sessions_send → main | `_状态.md` |\n| 遇到问题 | — | `_状态.md` + tag=need_user |\n\n**三段式数据头格式：**\n```\n---\n\n## [子任务] · Plan-Step-N · [时间戳]\n\n[数据类型]\n[实际内容]\n```\n\n**每完成一个 Step：**\n- ✅ 更新 `_Plan.md`（打 `[x]`，填实际工具和产出）\n- ✅ append 到 `_数据.md`（带三段式标记头）\n- ✅ 打 checkpoint（写 `_Checkpoints.md`）\n- ✅ **推送实时进度**（sessions_send 给 Main → 微信，中间产出摘要，不等最终完成）\n\n**Checkpoint 格式（每步完成后追加到 _Checkpoints.md）：**\n```\n| ckpt-[N] | [时间戳] | Phase 3 Step N完成 | [workspace 变化描述] | 是 |\n```\n\n**实时进度推送（每步完成后）：**\n```javascript\nsessions_send({\n  sessionKey: \"main\",\n  message: `📊 [任务名] 进度\nStep N/N 完成：[step 描述]\n产出：[简要摘要]\n${is_final_step ? '最终完成，推送交付清单...' : '下一步：${next_step}...'}`\n})\n```\n\n**结构化 Return（写状态文件）：**\n```\n## Subagent Return\ntag: [autopilot | done | partial | blocked | need_user | paused]\ntask_id: [任务ID]\nPlan 进度: Step N/N（共 M 步）\nsteps_completed: [1, 2, ...]\nfiles_written: [文件路径列表]\ncheckpoints_created: [ckpt-1, ckpt-2, ...]\nnext: [下一步]\nproof: [外部交付证明 / null]\n```\n\n**tag 含义：**\n- `autopilot`：本轮完成但任务线未结束（还有未完成的 Step）→ Main Agent 必须派下一跳\n- `done`：本任务所有 Plan Step 全部完成 → 进入 Phase 4 整合\n- `partial`：部分完成，状态文件已有断点 → 等待接手或用户决定\n- `blocked`：被阻塞（验证码/权限/网络持续失败）→ 等待人工介入\n- `need_user`：需要用户决策（如 Plan 需要调整）→ 报告给用户\n- `paused`：收到暂停/停止指令 → 等待 Main Agent 决定\n\n---\n\n## Phase 3.5: Queued Messages 处理（Main Agent）\n\nSubagent 返回 `tag=paused` 或用户发送追加消息时：\n1. 读 `_MessageQueue.md`，按顺序处理\n2. 「继续」类 → `sessions_send` 通知 Subagent 继续执行\n3. 「修改 Plan」类 → 更新 `_Plan.md`，`sessions_send` 通知 Subagent\n4. 「停止/取消」类 → 标记任务为 `❌ 取消`，进入 Phase 5 清理\n5. 「追加需求」类 → append 到 `_任务.md` 的「追加需求」区，更新 Plan，`sessions_send` 通知 Subagent\n\n---\n\n## Phase 4: Main Agent 整合（7 步法）\n\n0. **收集中间产物 + 生成 diff（新增步）：**\n   - 扫描 `~/.openclaw/workspace/tasks/[任务ID]/workspace/`，列出所有文件\n   - 对已存在文件（配置/脚本/文档）用 `git diff` 或文件对比工具提取变更\n   - 将 diff 写入 `_交付清单.md` 的「文件 diff」一节\n\n1. **扫状态文件（极小，token≈0）**\n   ```bash\n   read ~/.openclaw/workspace/tasks/[任务ID]/_状态.md\n   ```\n   判断：全✅→继续 | 有⚠️/❌→汇总已有+标注 | 有⏳→汇总已完成部分\n\n2. **仅读数据文件（纯成果内容，无冗余）**\n   ```bash\n   read ~/.openclaw/workspace/tasks/[任务ID]/_数据.md\n   ```\n   按优先级顺序读，只读数据文件，不读任务文件。\n\n3. **跨数据源交叉统计**\n   - 同类项归一（忽略空格/标点差异）\n   - 提及/出现次数 +1\n   - 每项附加所有来源\n   - 按出现次数降序\n\n4. **生成最终交付清单：**\n```markdown\n# [任务名] 交付清单\n\n## 基本信息\n- Plan 执行：N/N 步\n- 完成时间：[时间戳]\n- 任务空间：~/.openclaw/workspace/tasks/[任务ID]/\n\n## 最终产物（用户明确要求）\n| 产物 | 路径/位置 | 格式 | 验证方式 |\n|------|---------|------|---------|\n| [产物名] | [路径] | [格式] | [验证方式] |\n\n## 中间产物（执行过程中产生）\n| 产物 | 路径 | 用途 | 来源 |\n|------|------|------|------|\n| [中间文件名] | workspace/[path] | [用途] | [Step N 生成] |\n\n## 文件 diff（已存在文件的变更）\n| 文件 | 变更类型 | 变更摘要 | diff 关键行 |\n|------|---------|---------|-----------|\n| [配置文件] | 修改 | [改了什么] | [diff 片段] |\n| [脚本] | 新建 | [脚本用途] | 不适用（新建） |\n\n## Checkpoint 记录（可追溯）\n| ID | 时间戳 | Phase/Step | 状态 |\n|-----|---------|-----------|------|\n| ckpt-0 | ... | Phase 1 | Plan完成 |\n| ckpt-1 | ... | Phase 3 Step 1 | 收集完成 |\n\n## 数据来源统计\n- [子任务A]：[N] 条记录\n\n## 交付验证\n- 目标渠道：[channel/thread id]\n- 消息ID：[message_id]\n- 人类可查位置：[链接/描述]\n```\n\n5. **排序与优先级计算**\n   - 定义权重维度（来源权重、时间衰减、相关性等）\n   - 计算综合优先级分\n   - 按分降序排列\n\n6. **输出完成报告：**\n```\n【任务完成】[任务名] ✅\n📊 Plan 执行：N/N 步\n📦 最终产物：X 个\n🔧 中间产物：X 个\n📄 文件 diff：X 处变更（详细见 _交付清单.md）\n💾 Checkpoint：N 个（可回退）\n📁 任务空间：~/.openclaw/workspace/tasks/[任务ID]/\n```\n\n7. **推送微信（必须执行）：**\n   > ⚠️ 禁止只回聊天，必须同步推送微信。\n   ```bash\n   openclaw message send --channel openclaw-weixin --target [用户ID] -m \"[完成报告内容]\"\n   ```\n\n---\n\n## Phase 4.5: sessions_send 路由处理\n\n收到 Subagent 的 `sessions_send` 时：\n1. 识别为「进度更新」或「完成通知」\n2. **不要**回复 `ANNOUNCE_SKIP` 或空回复\n3. 同步推送微信（实时进度每条必推）\n\n**Anti-Drop Guard：**\n每次 subagent 返回 `tag=autopilot` 后，Main Agent 确认：\n```\n✅ 确认1：任务线还在任务板上（未手动关闭）\n✅ 确认2：Plan 尚有未完成 Step\n✅ 确认3：下一跳已派发 OR 任务线已显式关闭\n→ 任一缺失 → ❌ 立即 spawn 或派给自己\n```\n\n---\n\n## Phase 5: 清理（需用户批准）\n\n**触发：** 任务完成 / 失败 / 超7天未动 / 用户主动要求\n\n**流程：**\n1. **Memory 固化（按需，见原则10）**\n2. 列出 `~/.openclaw/workspace/tasks/[任务ID]/` 下所有文件（含 workspace/）\n3. 向用户展示分类（最终产物 / 中间文件 / 保留文件）\n4. **强调 `_交付清单.md` 不删除**\n5. 未获批准前不执行任何清理\n6. 获批后用 `trash`，不用 `rm`\n\n**规则：**\n- 只清理中间文件，不删最终产出和交付清单\n- 默认保留 72h 内文件\n- 交付清单中标记为「最终产物」的文件永不删除\n\n---\n\n## 实时进度推送规则\n\n**时机：** Phase 3 每完成一个 Step → 推送一条进度微信（不等最终完成）\n\n**内容要素：**\n```\n📊 [任务名] 进度\nStep N/N 完成：[step 描述]\n产出：[简要摘要]\n[下一步提示 / 最终完成预告]\n```\n\n**不推送：** 步骤内部的重试、工具调用细节、思考过程\n\n---\n\n## 常见问题速查\n\n| 问题 | 解决方案 |\n|------|---------|\n| 对话太长快撑爆上下文 | 立即执行上下文抢救：落盘三文件 + spawn Subagent 接续 |\n| Context compact 后忘了在做什么 | 读 _Plan.md 恢复进度，读 _状态.md 恢复上下文 |\n| Subagent 忘了任务 | 检查 task 参数是否完整；恢复优先级：task > 文件 > 记忆 |\n| 多个 Subagent 资源冲突 | 串行执行，一个用完再下一个 |\n| Gateway 重启导致失败 | Main Agent 重新 spawn，状态文件中有 Plan 断点 |\n| 进度卡住 | `subagents list` 检查，kill 后从断点重启 |\n| Token 消耗过大 | 确认只读数据文件汇总，不读任务文件和完整状态日志 |\n| 临时文件堆积 | Phase 5 清理，必须用户批准 |\n| Subagent 连续失败 5 次 | 停止重试，写状态文件❌，向 Main Agent 报告，等待人工介入 |\n| Subagent 返回 autopilot 但任务线停了 | 检查 anti-drop guard 三件事 |\n| 外部交付任务口头确认\"已发送\" | 要求提供 delivery-proof，缺一不可标记未完成 |\n| Plan 中的 Step 执行遇到意外情况 | 写状态文件 + tag=need_user，报告 Main Agent，等用户确认 |\n| 中间文件不知道存哪 | 存到 `workspace/[子任务]/`，交付时统一汇报 |\n| 用户在 Subagent 执行期间追加指令 | Main Agent 追加到 `_MessageQueue.md`，Subagent 下一轮读取 |\n| 用户要求回退到某 checkpoint | Main Agent 执行回退，恢复 workspace/ + _数据.md 到当时状态 |\n\n---\n\n## 辅助功能（精简）\n\n**每日 Session 清理定时任务：** 配合 `session-cleanup-pro` skill 使用。用户确认需要后，用 `cron add` 创建定时任务（每天凌晨 03:30）。\n\n---\n\n## 适用场景示例\n\n| 场景 | Plan 拆分 | 执行策略 | 中间产物 |\n|------|-----------|---------|---------|\n| 上下文即将溢出 | 未完成部分拆出 Plan | Subagent 执行，Main 只保留等待 | workspace/ 下中间文件 |\n| 多平台攻略抓取 | 按平台分 Step | 浏览器串行，web_fetch并行 | workspace/[平台]/ 数据文件 |\n| 配置修改任务 | Step1备份→Step2修改→Step3验证 | 串行，备份优先 | backup/ + diff |\n| 代码生成+review | Step 1生成→Step 2 review→Step 3修改 | 串行，review 依赖生成 | workspace/generate/ + workspace/review/ |\n| 多数据源调研 | 按来源分 Step | API限流可能需串行 | workspace/[来源]/ 原始数据 |\n\n---\n\n## 设计理念\n\n> **找的范围应该确定性，想的综合应该概率性。**\n> 三文件分离的本质是关注点分离：任务是契约，状态是心跳，数据是成果。Plan 驱动让执行有章可循，独立空间让交付有据可查，diff 让变更透明可追溯。\n\nFile v2.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7fgm829te36r33ybgx1v7jpx82khse\",\n  \"slug\": \"subagent-orchestrator-whhh\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1779689955178\n}\n\nFile v2.0.0:references/paths.md\n\n# 路径规范（subagent-orchestrator）\n\n本文档列出 skill 中所有引用的路径和资源，供验证和快速查阅。\n\n## 任务文件路径\n\n| 文件 | 路径规范 | 用途 |\n|------|---------|------|\n| 任务文件 | `~/.openclaw/workspace/tasks/[子任务]_[日期]_任务.md` | Main Agent 写一次，Subagent 只读 |\n| 状态文件 | `~/.openclaw/workspace/tasks/[子任务]_[日期]_状态.md` | Subagent 增量写，Main Agent 快速扫 |\n| 数据文件 | `~/.openclaw/workspace/tasks/[子任务]_[日期]_数据.md` | Subagent 增量写，Main Agent 汇总 |\n| 最终产出 | `~/.openclaw/workspace/tasks/[项目]_[日期]_最终.md` | Phase 4 输出，用户指定的最终交付 |\n\n## SessionKey 命名规范\n\n格式：`[项目]-[子任务简称]-[YYYYMMDD]`\n示例：`travel-xiaohongshu-20260426`\n\n## 依赖 skill\n\n| Skill | 路径 | 触发时调用 |\n|-------|------|-----------|\n| xiaohongshu-crawler | `skills/xiaohongshu-crawler/SKILL.md` | 小红书攻略抓取 |\n| wechat-article-spider | `skills/wechat-article-spider/SKILL.md` | 公众号文章爬取 |\n| session-cleanup | `skills/session-cleanup/SKILL.md` | 每日 session 清理（辅助功能） |\n| agent-browser-clawdbot | `skills/agent-browser-clawdbot/SKILL.md` | 浏览器自动化（需串行） |\n\n## 依赖脚本\n\n| 脚本 | 路径 | 用途 |\n|------|------|------|\n| session 扫描 | `skills/session-cleanup/scripts/scan_sessions.sh` | session 清理扫描 |\n\n## 验证检查点\n\n执行任务前，Main Agent 应验证路径可达性：\n\n```bash\n# 验证 tasks 目录存在\nls ~/.openclaw/workspace/tasks/ 2>/dev/null || mkdir -p ~/.openclaw/workspace/tasks/\n\n# 验证依赖 skill 存在（按需）\nls ~/.openclaw/workspace/skills/[skill-name]/SKILL.md 2>/dev/null && echo \"✅ [skill] 可用\" || echo \"⚠️ [skill] 未安装\"\n```\n\n## wiki 关联\n\n最终产出可选择性输出到 wiki：\n- Wiki 路径：`~/llm-wiki/raw/articles/[目的地]综合攻略.md`（需用户确认）\n\nArchive v1.9.0: 3 files, 10615 bytes\n\nFiles: _meta.json (145b), references/paths.md (1976b), SKILL.md (20994b)\n\nFile v1.9.0:SKILL.md\n\n---\nname: subagent-orchestrator\ndescription: 将复杂大型任务拆解为多个子任务，通过 Subagent 并行/串行执行，三文件持久化防丢失，Main Agent 统筹整合。适用于任何需要多步骤、多信息源、长时间运行的任务。**降低触发阈值——任务步骤超过3步、涉及2个以上来源或平台、context有膨胀迹象时即触发，不等\"大型\"才拆。**触发词：任务分工、子任务编排、多agent协作、上下文溢出、任务分流、context快满了、帮我搜索/整理/抓取/调研、多平台/多个网站/多个来源。\nmetadata:\n  { \"openclaw\": { \"emoji\": \"🔀\", \"requires\": { \"tools\": [\"sessions_spawn\", \"sessions_send\", \"sessions_list\", \"write\", \"read\", \"exec\", \"cron\", \"sessions_yield\", \"subagents\"] } }, \"version\": \"1.9.0\", \"updatedAt\": \"2026-05-13\" }\n---\n\n# Subagent Orchestrator Skill\n\n## 版本\n- **v1.9.0 (2026-05-13):** 移除所有个人定制内容（微信 ID/记忆文件路径/个人 Agent 配置），通用化为任何 OpenClaw 用户可直接使用的标准版\n- **v1.8.0 (2026-05-13):** 新增Phase 0拆分必要性预判; Phase 1新增目标分解快照+工具预期字段; Phase 3升级6步法(漂移自检三问清单+工具调用决策树); Phase 4新增目标完成度扫描; Phase 4.5 Anti-Drop Guard流程清单化; Phase 0新增不拆分执行指引表格\n- **v1.7.0 (2026-05-09):** 新增微信推送铁律; Phase 4 新增第7步推送微信+Phase 4.5 sessions_send路由处理\n\n---\n\n## 核心原则\n\n### 1. 分工原则\n\n| 角色 | 职责 | 不做什么 |\n|------|------|----------|\n| **Main Agent** | 任务拆解、文件准备、启动 Subagent、监控进度、失败汇总+询问用户、最终整合 | 不亲自执行信息收集/重IO操作 |\n| **Subagent** | 执行具体子任务、写数据文件、更新状态、失败5次即停+报告 | 不做最终决策、不回写任务文件 |\n\n串行：共享资源（浏览器/数据库）；并行：独立资源（web_fetch/不同API）。不确定时默认串行。\n\n### 2. 三文件分离原则\n\n**Subagent Token 节流规范：**\n- `_任务.md`：Main Agent 写一次，Subagent 启动时只读一次，永不重读\n- `_状态.md`：Subagent 增量写，Main Agent 只扫进度，保持 <500字\n- `_数据.md`：Subagent 增量写，Main Agent **仅读此文件汇总**\n- 失败先写状态文件；同一错误连续失败5次立即停止，不空转\n\n**路径规范：** `~/.openclaw/workspace/tasks/[子任务]_[日期]_{任务|状态|数据}.md`\n\n**四条铁律：**\n1. `_任务.md`：Main Agent 写一次，Subagent 只读，永不回写\n2. `_状态.md`：Subagent 增量写，Main Agent 只扫进度\n3. `_数据.md`：Subagent 增量写，Main Agent **仅读此文件汇总**\n4. 汇总时只读数据文件 + 极小状态文件，不读任务文件\n\n### 3. 失败阈值原则\n\n| 类型 | 可自行重试 | 超过5次 → 暂停 |\n|------|-----------|----------------|\n| 网络临时故障 | 等10秒再试 | 连续5次 → 暂停 |\n| 验证码/风控 | 写状态→暂停 | — |\n| 信息不足/参数错误 | 修复后重试 | 连续5次 → 暂停 |\n| 权限/认证失败 | — | 立即暂停，报告用户 |\n\n### 4. 交付验证原则\n\n**最低交付证明要求：**\n```\n📤 交付验证（必须全部提供，否则视为未交付）\n- 目标渠道：[channel/thread id 或具体位置描述]\n- 消息ID：[message_id 或 object_id]\n- 人类可查位置：[可验证的链接或描述]\n```\n缺少任一证明项 → **任务视为未完成**，不得标记 `done`。\n\n### 5. Memory 固化原则（按需写入，不爆炸）\n\n| 条件 | 是否写 memory | 写什么 | 写多少 |\n|------|-------------|--------|--------|\n| 子任务数 ≥ 3 且正常完成 | 写一行摘要 | 任务目标+关键成果+文件路径 | ~100字 |\n| 有失败/异常/阻塞 | 写 | 失败原因+解决建议 | ~50字 |\n| 正常完成（子任务数 < 3） | **不写** | — | 0 |\n| 发现更好方案/工具 | 写 | 替代方案+使用条件 | ~50字 |\n| 用户做了特殊决策 | 写 | 用户偏好（下次自动用） | ~30字 |\n\n### 6. 模型分级原则（完整保留）\n\n| Agent | 简单 | 中等（默认） | 复杂 |\n|-------|------|------------|------|\n| Claude Code | `claude-haiku-4-5@20251001` | `claude-sonnet-4-6@default` | `claude-opus-4-6@default` |\n| OpenCode | `dobest/MiniMaxM2.5` | `dobest/glm-5.1` | `dobest-claude/claude-opus-4-6@default` |\n| 信息收集子 Agent | `dobest/MiniMaxM2.1` | `dobest/MiniMaxM2.5` | `dobest/gpt-5.4` |\n| 部署子 Agent | `dobest/MiniMaxM2.1` | `dobest/MiniMaxM2.5` | `dobest/glm-5.1` |\n| 学习子 Agent | `dobest/MiniMaxM2.1` | `dobest/MiniMaxM2.5` | `Qwen3.5-397B` |\n\n**难度判断标准：**\n\n| 难度 | 判断标准 |\n|------|---------|\n| **简单** | 一次性任务、常识性输出、不需要深度推理、单步或两步完成 |\n| **中等（默认）** | 需要一定上下文、简单推理、多步操作 |\n| **复杂** | 多步骤、深度推理、长上下文、跨域知识、需反复迭代 |\n\n**调用方式：** Claude Code 通过 `/acp model` 指定；OpenCode 和子 Agent 在 `task` 中直接指定 `provider/model`。完成后通过 `sessions_send` 发给 main session，由 Main Agent 向用户推送最终结果。\n> ⚠️ isolated session 没有外部 channel 权限（微信/Discord/Telegram），推送必须通过 `sessions_send` 路由到 Main Agent。\n\n### 7. 其他原则（一句话+关键要点）\n\n- **资源整合度：** 引用的路径/资源使用前验证可达性（ls 检查目录/文件），不可达则报告用户\n- **资源独占：** 共享资源不可并发（浏览器/数据库），独立资源可并发（web_fetch/只读API）\n- **数据纯正性：** 不擅自切换来源，每个来源有验证方法，切换需用户同意\n\n---\n\n## 自动触发场景\n\n**满足任一即触发，不只是用户主动要求：**\n\n1. **预估超出上下文**：3+文件、>10轮对话、多轮浏览器操作、单次输出>1500字且继续 → 立即拆分分流\n2. **Context 即将 compact**：回复变慢/开始遗忘/大量工具调用 → 紧急落盘三文件 + spawn 接续 Subagent\n3. **单任务天然拆分**：2+独立信息源/平台、有分阶段结构 → 按正常流程执行 Phase 1-5\n4. **执行中途发现上下文不够**：数据量超预期/Subagent 自身快爆 → 三文件分离，嵌套 spawn 需用户确认\n5. **任务略复杂（3步以上）**：多步推理/搜索/文件操作组合 → 优先拆分，不必等\"很大\"才触发\n6. **Subagent 连续失败5次**：同一子任务持续失败 → 停止重试，写状态文件❌，向 Main Agent 报告\n\n---\n\n## 执行流程\n\n## Phase 0: 拆分必要性预判\n\n| 判断维度 | 是 → 拆分 | 否 → 直接执行或谨慎拆分 |\n|---------|----------|----------------------|\n| 独立信息源数量 | ≥2个 | 只有1个 |\n| 步骤数 | 明确超过3步 | 1-2步可一次性完成 |\n| 资源冲突风险 | 有共享资源需串行 | 完全无共享资源 |\n| 预期token消耗 | 多来源→拆分收益高 | 单来源→拆分开销大于收益 |\n| 漂移风险 | 长任务多轮→高风险 | 短任务→漂移概率低 |\n\n预判结论写入任务文件：\n```markdown\n## 拆分判断\n- 预判结论：[拆分 / 不拆分 / 视情况拆分]\n- 理由：[一句话说明]\n- 不拆分风险：[如不拆分，最坏情况是什么？]\n```\n\n**不拆分时的执行指引：**\n\n| 预判结论 | 后续动作 |\n|---------|---------|\n| **简单任务** | 直接执行，无需三文件，节省 spawn 开销 |\n| **边界任务（1-2步但用户期望质量高）** | 写极简 `_任务.md` 供自己参考 |\n| **中等任务（3步以上但只有1个来源）** | 拆分步骤不拆来源，Main Agent 做2-3个短 Subagent 串行 |\n| **任务简单但用户主动要求拆分** | 尊重用户，按正常流程走 |\n\n---\n\n## Phase 1: 任务拆解与准备（Main Agent）\n\n1. **明确目标：** 最终交付物是什么？验收标准？\n2. **识别子任务：** 按信息源/执行步骤/资源依赖拆分\n3. **判断串行/并行：** 共享资源串行，独立资源并行\n4. **创建三文件：**\n\n```bash\nwrite ~/.openclaw/workspace/tasks/[子任务]_[日期]_任务.md\nwrite ~/.openclaw/workspace/tasks/[子任务]_[日期]_状态.md\nwrite ~/.openclaw/workspace/tasks/[子任务]_[日期]_数据.md\n```\n\n**任务文件模板：**\n```markdown\n# [子任务名称]（[日期]）\n\n## 任务要求\n- 目标：[明确、可量化的目标]\n- 信息来源：[指定来源及验证方法]\n- 输出文件：~/.openclaw/workspace/tasks/[子任务]_[日期]_数据.md\n\n## 目标分解与进度快照\n\n**原始目标（必须原文保留，不允许改写）：**\n[从用户的原始请求中提取，完整抄写]\n\n**子目标清单：**\n- [ ] 子目标1：[描述]，预期步骤数：1-2步\n- [ ] 子目标2：[描述]，预期步骤数：1-2步\n- [ ] 子目标3：[描述]，预期步骤数：1-2步\n\n**进度快照规则（Phase 3 每完成一个子目标时执行）：**\n- 已完成子目标：N/M\n- 完成度：N/M × 100%\n- 最后推进目标时间：[时间戳]\n- 超过预期步骤数2倍且完成度<20% → 触发漂移报告\n\n## 工具预期\n- 预期调用工具：[如 web_fetch / read / exec / image 等]\n- 不应调用的工具：[明确列出]\n- 调用频率上限：单次任务内同类工具不超过N次\n- 异常处理约定：错误信息→结构化转译，不直接暴露\n\n## 共享资源\n- [资源名称]：[端口/路径等]\n- 执行顺序：第N个\n\n## 验收标准\n- [标准1]\n- [标准2]\n\n## 数据文件格式（Subagent 按此格式写入数据文件）\n\n每条数据记录必须包含三段式标记头：\n\n```\n---\n\n## [数据来源] · [阶段/步骤] · [时间戳]\n\n[数据类型]\n[实际内容，可多行]\n\n```\n\n**字段：**\n- `[数据来源]`：哪个子任务产生的（如 `子任务A`）\n- `[阶段/步骤]`：任务进行到哪个阶段（如 `收集` / `分析-阶段1`）\n- `[时间戳]`：ISO 格式时间（如 `2026-04-29T06:00:00+08:00`）\n- `[数据类型]`：本次产出的类型（`# 原始数据` / `# 分析结果` / `# 汇总摘要` 等）\n- `[实际内容]`：纯成果内容，不含任务描述、进度说明等冗余信息\n```\n\n**状态文件初始内容：**\n```markdown\n# [子任务名称]状态（[日期]）\n\n## 执行进度\n- [时间] ⏳ 等待启动\n\n## 断点记录\n- 上次完成：0/N\n- 下一步：[第一步操作]\n\n## 步骤指纹\n- 当前步骤类型：[search/fetch/write/analyze/其他]\n- 连续同类步骤：N次\n- 重复检测阈值：连续3次同类步骤 → 触发警告\n\n## 漂移自检\n- 最后检查时间：[时间戳]\n- 检查结果：[on_track / drift_detected / unknown]\n- 目标完成进度：X%（定性描述）\n\n## 任务状态\n- 状态：⏳ 等待启动\n- 完成进度：0/N\n\n## 待解决问题\n- 无\n```\n\n---\n\n## Phase 2: 启动 Subagent（Main Agent）\n\n**⚠️ Spawn 前必须确认（检查点）：** 向用户展示子任务列表 + 并行/串行策略 + 预计执行顺序，获用户明确回复后再 spawn。\n\n**确认话术模板：**\n```\n准备好启动子任务了：\n- 子任务 A（并行，独立资源）\n- 子任务 B（串行，等待 A 完成）\n- 预计执行顺序：A → B\n开始执行？\n```\n\n**每次 spawn 四必填：**\n- ✅ `mode: \"session\"`\n- ✅ `sessionKey: \"[project]-[subtask]-[yyyymmdd]\"`\n- ✅ 完整 `task` 参数（塞满所有细节）\n- ✅ 三文件路径告知\n- ✅ 交付证明要求（如有外部交付：`delivery-proof` 字段说明需要的证明类型）\n\n**最小 spawn 模板：**\n```javascript\nsessions_spawn({\n  label: \"[子任务描述]\",\n  mode: \"session\",\n  sessionKey: \"[project]-[subtask]-[yyyymmdd]\",\n  task: `\n目标：[明确、可验收的目标]\n只读：_任务.md\n只写：_状态.md + _数据.md\n共享资源：[浏览器/端口/API等，如无需则删]\n异常处理：立即写入状态文件并提示人工介入\n验收标准：[至少N条/包含XX/格式为XX]\n`\n})\n```\n\n---\n\n## Phase 3: Subagent 执行（6 步法）\n\n1. **漂移自检：** 回顾原始目标，判断当前步骤是否与原始目标直接相关。\n   **自检三问（满足任一即触发漂移报告）：**\n   - 当前步骤与原始目标是否直接相关？**连续2步无关** → 漂移\n   - 是否**连续3次**同类操作（search→search→search）？ → 漂移\n   - M ≥ 2N 且 N/M < 20%？（已完成子目标数 / 已执行步骤数） → 漂移\n   **触发后动作：** 写状态文件 + tag=need_user，报告 Main Agent「目标漂移：具体原因」\n2. **工具调用必要性判断：** 执行工具前自问：\n   - ❓ 必要性：这个步骤是否真的需要调工具？\n   - ❓ 权限：该工具是否在「工具预期」列表中？不在 → 先输出到数据文件，再报告\n   - ❓ 格式：调用参数是否明确？不明确 → 先输出推理结论到数据文件\n   **决策树：** 三个问题全部通过 → 执行调用 | 任一不通过 → 先输出到数据文件，再决定\n3. 按步骤执行；遇异常立即写状态文件并暂停\n4. 每完成一个单位 → append 到 `_数据.md`（**必须带三段式标记头**）\n5. 每次进度变化 → 更新 `_状态.md`（同时更新「步骤指纹」字段）\n6. 完成写 `✅ 完成`；中断写 `⚠️ 部分完成` / `❌ 失败`\n\n**结构化 Return 协议：**\n\n每次向 Main Agent 汇报前，按以下格式写入状态文件：\n\n```\n## Subagent Return\ntag: [autopilot | done | partial | blocked | need_user]\ntask_id: [子任务名]\ncompleted: N/N\nfiles_written: [文件路径列表]\nnext: [下一步做什么]\nproof: [外部交付证明：message_id/channel/路径等，若无外部交付则填 null]\n```\n\n**tag 含义：**\n- `autopilot`：本轮完成但任务线未结束 → Main Agent 必须派下一跳\n- `done`：本子任务完全完成 → 进入 Phase 4 整合\n- `partial`：部分完成，状态文件已有断点 → 等待接手或用户决定\n- `blocked`：被阻塞（验证码/权限/网络持续失败）→ 等待人工介入\n- `need_user`：需要用户决策（如来源不可用/参数不明确）→ 报告给用户\n\n**⚠️ 注意：** `tag=autopilot` 不等于任务线结束。Main Agent 收到此 tag 后，**必须立即派下一跳或显式关闭任务线**，不得停等用户。\n\n---\n\n## Phase 4: Main Agent 整合（6 步法）\n\n**第1步补充：目标完成度扫描**\n- 读取每个子任务的状态文件，提取「目标完成进度」\n- 若发现步骤数远超预期 + 完成度极低 → 标注「⚠️ 目标漂移风险」\n\n---\n\n1. **扫状态文件（极小，token≈0）**\n   ```bash\n   read ~/.openclaw/workspace/tasks/*_状态.md\n   ```\n   判断：全✅→继续 | 有⚠️/❌→汇总已有+标注 | 有⏳→汇总已完成部分\n\n2. **仅读数据文件（纯成果内容，无冗余）**\n   ```bash\n   read ~/.openclaw/workspace/tasks/*_数据.md\n   ```\n   按优先级顺序读，只读数据文件，不读任务文件。\n\n3. **跨数据源交叉统计**\n   - 同类项归一（忽略空格/标点差异）\n   - 提及/出现次数 +1\n   - 每项附加所有来源\n   - 按出现次数降序\n\n4. **排序与优先级计算**\n   - 定义权重维度（来源权重、时间衰减、相关性等）\n   - 计算综合优先级分\n   - 按分降序排列\n\n5. **生成最终输出文件**\n   ```bash\n   write [最终输出路径]\n   ```\n   输出前逐项检查验收标准。\n\n6. **输出完成报告**\n   ```\n   【任务完成】\n   📊 数据来源：[各子任务及数量]\n   📋 成果统计：[关键指标]\n   📁 输出文件：[路径]\n   ```\n\n7. **推送微信（必须执行）**\n   > ⚠️ 禁止只回聊天，必须同步推送微信。\n   主 Agent 整合完成后，立即 `exec` 推送：\n   ```bash\n   ```\n\n---\n\n## Phase 4.5: sessions_send 路由处理\n\n**收到子 Agent 发来的 `sessions_send` 时：**\n1. 识别为「微信推送请求」\n3. **不要**回复 `ANNOUNCE_SKIP` 或空回复（会丢失微信推送）\n4. 不要只回聊天，必须**同步发微信**\n\n**Anti-Drop Guard：**\n\n每次 subagent 返回 `tag=autopilot` 后，Main Agent **必须确认三件事**：\n\n```\n✅ 确认1：任务线还在任务板上（未手动关闭）\n   → 读状态文件，检查任务线是否被显式关闭\n✅ 确认2：任务线未完成（有下一节点）\n   → 检查是否还有未派发的子任务，有 → 确认3 | 没有 → 跳到确认3\n✅ 确认3：下一跳已派发 OR 任务线已显式关闭\n   → 下一跳已派发？→ 正常，结束本轮\n   → 任务线已关闭（idle/blocked/need_user/done）？→ 正常，结束本轮\n   → 有下一节点但未派发 → ❌ 立即 spawn 或派给自己\n```\n\n**三件事任一缺失 → 本轮 Turn 不完整：**\n- 不能仅因 subagent 说\"这轮完成了\"就停等用户\n- 不能仅因 Phase 4 第6步报告了就结束 Turn\n- **Turn 只有在节点已推进 + 下一跳已派发（或任务线已关闭）后才算真正完成**\n\n**正确做法：**\n```\nSubagent 返回 tag=autopilot\n→ Main Agent 读取状态文件解析 tag\n→ 确认三件事\n→ 如有下一跳，立即 spawn 下一 Subagent（或派给自己）\n→ 向用户简短汇报进度（不等待）\n```\n\n**4个\"不要\"的 Anti-Drop 原则：**\n- 不要在 subagent 返回后停等用户而不派下一跳\n- 不要在 tag=autopilot 时认为本轮 Turn 已完成\n- 不要在任务线未关闭时结束 Turn\n- 不要用 ANNOUNCE_SKIP 或空回复替代微信推送\n\n---\n\n## Phase 5: 清理（需用户批准）\n\n**触发：** 任务完成 / 失败 / 超7天未动 / 用户主动要求\n\n**流程：**\n1. **Memory 固化（按需，见原则5）**\n   - 判断：子任务数 ≥ 3 或有异常/失败/新发现？\n   - 是 → 从 `_数据.md` 提取一行摘要，写入 `memory/YYYY-MM-DD.md`\n   - 否 → 跳过\n2. 列出 `tasks/` 下候选文件\n3. 向用户展示分类（本次任务 / 历史文件 / 保留文件）\n4. 未获明确批准前，不执行任何清理\n5. 获批后使用 `trash`，不用 `rm`\n\n**规则：**\n- 只清理中间文件，不删最终产出\n- 默认保留 72h 内文件\n- \"可以清理/全删了/只清这次\"算批准；\"先看看\"不算\n\n---\n\n## 进度汇报模板\n\n```\n## 📊 进度汇报\n\n| 子任务 | 状态 | 结果 | 问题 |\n|--------|------|------|------|\n| [子任务A] | 🔄/✅/⚠️/❌ | [成果摘要] | — |\n| [子任务B] | 🔄/✅/⚠️/❌ | [成果摘要] | — |\n\n下一步：xxx\n```\n\n---\n\n## 常见问题速查\n\n| 问题 | 解决方案 |\n|------|----------|\n| 对话太长快撑爆上下文 | 立即执行上下文抢救：落盘三文件 + spawn Subagent 接续 |\n| Context compact 后忘了在做什么 | 读 _状态.md 恢复断点，读 _任务.md 恢复目标 |\n| Subagent 自己也快溢出 | 优先三文件分离+断点续传；嵌套 spawn 需先告知用户获确认 |\n| Subagent 忘了任务 | 检查 task 参数是否完整；恢复优先级：task > 文件 > 记忆 |\n| 多个 Subagent 资源冲突 | 串行执行，一个用完再下一个 |\n| Gateway 重启导致失败 | Main Agent 重新 spawn，状态文件中有断点 |\n| 进度卡住 | `subagents list` 检查，kill 后从断点重启 |\n| Token 消耗过大 | 确认只读数据文件汇总，不读任务文件和完整状态日志 |\n| 临时文件堆积 | Phase 5 清理，必须用户批准 |\n| Subagent 连续失败 5 次 | 停止重试，写状态文件❌，向 Main Agent 报告，等待人工介入 |\n| Subagent 返回 autopilot 但任务线停了 | 检查 anti-drop guard 三件事：任务线存在？未完成？下一跳已派发？ |\n| 外部交付任务口头确认\"已发送\" | 要求提供 delivery-proof（message_id/channel/location），缺一不可标记未完成 |\n\n---\n\n## 辅助功能（精简）\n\n**每日 Session 清理定时任务：** 配合 `session-cleanup-pro` skill 使用。用户确认需要后，用 `cron add` 创建定时任务（每天凌晨 03:30），在 `isolated` session 以 `announce` 方式汇报结果。如需取消：`cron remove [jobId]`\n\n---\n\n## 适用场景示例\n\n| 场景 | 子任务拆分 | 共享资源 |\n|------|-----------|----------|\n| 上下文即将溢出 | 未完成部分拆出，Main 只保留等待状态 | 文件系统读写 |\n| Context compact 前抢救 | 紧急落盘三文件 + spawn 接续 Subagent | 无，纯文件操作 |\n| 单任务数据量超预期 | Subagent 自身也用三文件分离，必要时嵌套 spawn | 视情况 |\n| 多平台攻略抓取 | 按平台拆：小红书/马蜂窝/携程/公众号 | 浏览器串行，web_fetch并行 |\n| 多数据源调研 | 按来源拆：论文/新闻/内部文档/社交媒体 | API限流可能需串行 |\n\n---\n\n## 设计理念\n\n> **找的范围应该确定性，想的综合应该概率性。**\n> 三文件分离的本质是关注点分离：任务是契约，状态是心跳，数据是成果。混在一起 token 浪费在重复读取不变的任务说明；分开了，每次只读需要的部分。\n\nFile v1.9.0:_meta.json\n\n{\n  \"ownerId\": \"kn7fgm829te36r33ybgx1v7jpx82khse\",\n  \"slug\": \"subagent-orchestrator-whhh\",\n  \"version\": \"1.9.0\",\n  \"publishedAt\": 1778661588886\n}\n\nFile v1.9.0:references/paths.md\n\n# 路径规范（subagent-orchestrator）\n\n本文档列出 skill 中所有引用的路径和资源，供验证和快速查阅。\n\n## 任务文件路径\n\n| 文件 | 路径规范 | 用途 |\n|------|---------|------|\n| 任务文件 | `~/.openclaw/workspace/tasks/[子任务]_[日期]_任务.md` | Main Agent 写一次，Subagent 只读 |\n| 状态文件 | `~/.openclaw/workspace/tasks/[子任务]_[日期]_状态.md` | Subagent 增量写，Main Agent 快速扫 |\n| 数据文件 | `~/.openclaw/workspace/tasks/[子任务]_[日期]_数据.md` | Subagent 增量写，Main Agent 汇总 |\n| 最终产出 | `~/.openclaw/workspace/tasks/[项目]_[日期]_最终.md` | Phase 4 输出，用户指定的最终交付 |\n\n## SessionKey 命名规范\n\n格式：`[项目]-[子任务简称]-[YYYYMMDD]`\n示例：`travel-xiaohongshu-20260426`\n\n## 依赖 skill\n\n| Skill | 路径 | 触发时调用 |\n|-------|------|-----------|\n| xiaohongshu-crawler | `skills/xiaohongshu-crawler/SKILL.md` | 小红书攻略抓取 |\n| wechat-article-spider | `skills/wechat-article-spider/SKILL.md` | 公众号文章爬取 |\n| session-cleanup | `skills/session-cleanup/SKILL.md` | 每日 session 清理（辅助功能） |\n| agent-browser-clawdbot | `skills/agent-browser-clawdbot/SKILL.md` | 浏览器自动化（需串行） |\n\n## 依赖脚本\n\n| 脚本 | 路径 | 用途 |\n|------|------|------|\n| session 扫描 | `skills/session-cleanup/scripts/scan_sessions.sh` | session 清理扫描 |\n\n## 验证检查点\n\n执行任务前，Main Agent 应验证路径可达性：\n\n```bash\n# 验证 tasks 目录存在\nls ~/.openclaw/workspace/tasks/ 2>/dev/null || mkdir -p ~/.openclaw/workspace/tasks/\n\n# 验证依赖 skill 存在（按需）\nls ~/.openclaw/workspace/skills/[skill-name]/SKILL.md 2>/dev/null && echo \"✅ [skill] 可用\" || echo \"⚠️ [skill] 未安装\"\n```\n\n## wiki 关联\n\n最终产出可选择性输出到 wiki：\n- Wiki 路径：`~/llm-wiki/raw/articles/[目的地]综合攻略.md`（需用户确认）\n\nArchive v1.3.0: 3 files, 11727 bytes\n\nFiles: _meta.json (145b), references/paths.md (1976b), SKILL.md (23900b)\n\nFile v1.3.0:SKILL.md\n\n---\nname: subagent-orchestrator\ndescription: 将复杂大型任务拆解为多个子任务，通过 Subagent 并行/串行执行，三文件持久化防丢失，Main Agent 统筹整合。适用于任何需要多步骤、多信息源、长时间运行的任务，也适用于即将超出上下文窗口时的任务分流。触发词：任务分工、子任务编排、多agent协作、上下文溢出、任务分流、context快满了。\nmetadata:\n  { \"openclaw\": { \"emoji\": \"🔀\", \"requires\": { \"tools\": [\"sessions_spawn\", \"sessions_send\", \"sessions_list\", \"write\", \"read\", \"exec\", \"cron\", \"sessions_yield\", \"subagents\"] } }, \"version\": \"1.3.0\", \"updatedAt\": \"2026-04-26\" }\n---\n\n# Subagent Orchestrator Skill\n\n## 版本\n- **v1.3.0 (2026-04-26):** 新增：结构化 Return 协议（tag/证明格式）+ Anti-Drop Guard + 交付验证规则 + 按需 Memory 固化（第2轮达尔文优化）\n- **v1.2.0 (2026-04-26):** 新增：Subagent token 节流规范、连续失败 5 次暂停机制；辅助用户创建每日 session 清理定时任务\n- **v1.0.0 (2026-04-26):** 从 tourism-guide-harvester 提炼，泛化为通用大型任务分工框架\n\n## 技能描述\n将复杂大型任务拆解为多个子任务，通过 Subagent 并行/串行执行，三文件持久化防丢失，Main Agent 统筹整合。适用于任何需要多步骤、多信息源、长时间运行的任务，**也适用于即将超出上下文窗口时的任务分流——在 context 被压缩前，将未完成工作迁移到 Subagent，避免记忆丢失。**\n\n## 触发词\n- 大型任务拆分\n- 任务分工\n- 子任务编排\n- 多agent协作\n- 复杂任务执行\n- 上下文溢出\n- context快满了\n- 任务分流\n\n---\n\n## 自动触发场景（🆕 重点）\n\n**不只是用户主动要求时才用，以下情况应自动启用本 skill：**\n\n### 场景1：预估任务将超出上下文窗口\n\n**信号：**\n- 任务需要读取/处理大量文件或网页（>10个源）\n- 预计对话轮次 > 20 轮\n- 需要多轮浏览器操作 + 大量文本提取\n- 单次输出预计 > 2000 字且还要继续\n\n**动作：** 立即将任务拆分为 Subagent 子任务，把重IO/重token的部分分流出去，Main Session 只保留轻量统筹。\n\n### 场景2：Context 即将被 compact\n\n**信号：**\n- 对话已经很长，感觉到近期回复变慢或开始遗忘早期内容\n- 系统发出 context window 接近上限的信号\n- 已执行大量工具调用，对话历史膨胀\n\n**动作：** 在 compact 发生前，紧急执行「上下文抢救」：\n1. 将当前未完成的任务要点写入 `_任务.md`\n2. 将已完成的中间成果写入 `_数据.md`\n3. 将当前进度和断点写入 `_状态.md`\n4. spawn Subagent 接续执行，task 参数中包含完整上下文\n5. Main Session 只保留极简状态等待结果\n\n> **关键：compact 会丢信息，文件不会。compact 前落盘 = 零损失。**\n\n### 场景3：单任务天然适合拆分\n\n**信号：**\n- 任务涉及多个独立信息源/平台/API\n- 任务有天然的分阶段结构（收集→分析→输出）\n- 不同部分可以由不同 agent 并行完成\n\n**动作：** 按本 skill 正常流程执行 Phase 1-5。\n\n### 场景4：任务执行中途发现上下文不够用\n\n**信号：**\n- 执行过程中发现数据量远超预期\n- 单个 Subagent 自己也快撑爆上下文\n\n**动作：** Subagent 自身也应用三文件分离——把中间结果写入文件，避免在对话历史中累积。\n\n**⚠️ 嵌套 spawn 需谨慎：** Subagent 再 spawn 子 Subagent（嵌套分工）会增加编排复杂度和资源消耗，**必须在嵌套前告知用户并获得确认**，不得自行决定嵌套。优先尝试通过三文件分离 + 断点续传解决问题，嵌套是最后手段。\n\n### 场景5：Subagent 执行失败超过 5 次（🆕）\n\n**信号：**\n- 同一子任务连续失败 5 次（网络/权限/验证码/信息不足等）\n- 状态文件中出现连续失败标记\n\n**动作：**\n1. 停止重试，避免空转浪费 token\n2. 在 `_状态.md` 中记录：`❌ 暂停：连续失败 5 次`\n3. 向 Main Agent 报告：「任务 X 失败 5 次，需要人工介入」\n4. Main Agent 接到报告后：汇总已完成的成果，分析失败原因，向用户询问下一步（调整参数/换方案/放弃）\n\n**为什么停：** 反复失败不解决会无限消耗 token，及时暂停并上报是最优策略。\n\n### 上下文抢救清单（Compact 前必做）\n\n```\n☐ 当前任务目标 → 写入 _任务.md\n☐ 已完成成果 → 写入 _数据.md\n☐ 进度断点 → 写入 _状态.md\n☐ 关键决策/用户偏好 → 写入 _任务.md 备注\n☐ spawn Subagent → task 参数包含完整恢复信息\n☐ Main Session 释放上下文 → 只保留等待结果的轻量状态\n```\n\n---\n\n## 核心原则\n\n### 1. 分工原则\n\n| 角色 | 职责 | 不做什么 |\n|------|------|----------|\n| **Main Agent** | 任务拆解、文件准备、启动 Subagent、监控进度、失败汇总+询问用户、最终整合 | 不亲自执行信息收集/重IO操作 |\n| **Subagent** | 执行具体子任务、写数据文件、更新状态、失败5次即停+报告 | 不做最终决策、不回写任务文件 |\n\n**串行 vs 并行判断：**\n- 共享资源（如浏览器、数据库连接）→ **串行**\n- 独立资源（如 web_fetch、不同API）→ **可并行**\n- 不确定时 → 默认串行，安全优先\n\n### 2. Subagent 记忆固化原则（防止任务丢失）\n\n**核心：三重保险——session + task参数 + 文件。缺一不可。**\n\n| 机制 | 用法 | 为什么 |\n|------|------|--------|\n| 持久化 Session | `mode: \"session\"` + 固定 `sessionKey` | 任务累积不丢失，跨 compact 恢复 |\n| 完整 task 参数 | 所有关键要求写进 `sessions_spawn(task=...)` | 每次回复都能看到完整指令 |\n| 文件持久化 | 三文件（任务/状态/数据）落盘 | session 彻底丢失时也能恢复 |\n\n**SessionKey 命名规范：** `[项目]-[子任务简称]-[YYYYMMDD]`\n\n**最小 spawn 模板：**\n```javascript\nsessions_spawn({\n  label: \"[子任务描述]\",\n  mode: \"session\",\n  sessionKey: \"[project]-[subtask]-[yyyymmdd]\",\n  task: `\n目标：[明确、可验收的目标]\n只读：_任务.md\n只写：_状态.md + _数据.md\n共享资源：[浏览器/端口/API等，如无需则删]\n异常处理：立即写入状态文件并提示人工介入\n验收标准：[至少N条/包含XX/格式为XX]\n`\n})\n```\n\n**恢复优先级：** task 参数 > 任务文件 > 会话记忆\n\n**原则：task 参数是运行真迹，文件是恢复真迹，session 只是执行容器。**\n\n### 3. 三文件分离原则（降低 token 消耗）\n\n**Subagent Token 节流规范（🆕）：**\n- **只读一次任务文件**：任务文件 `_任务.md` 只在启动时读一次，后续按状态文件断点续做，不重复读\n- **增量落盘**：每完成一个子步骤，立即写数据文件，不要攒到全部完成再写（Subagent 崩溃时保底）\n- **状态文件极小化**：只记关键断点（完成到哪、下一步），不写流水日志，保持在 500 字以内\n- **Main Agent 汇总只读数据**：汇总阶段只看 `_数据.md`，不看 `_任务.md` 和大段状态日志\n- **失败写状态即停**：遇到错误先写状态文件再试；同一错误连续失败 5 次立即停止，不空转\n\n| 文件 | 谁写 | 谁读 | 作用 | 大小趋势 |\n|------|------|------|------|----------|\n| `_任务.md` | Main Agent 写一次 | Subagent 启动时读一次 | 任务要求/验收标准 | 固定不变 |\n| `_状态.md` | Subagent 增量写 | Main Agent 快速读 | 进度/断点/问题 | 小，可控 |\n| `_数据.md` | Subagent 增量写 | Main Agent 汇总只读它 | 纯成果数据 | 随任务增长 |\n\n**路径规范：** `~/.openclaw/workspace/tasks/[子任务]_[日期]_{任务|状态|数据}.md`\n\n**四条铁律：**\n1. `_任务.md`：Main Agent 写一次，Subagent 只读，永不回写\n2. `_状态.md`：Subagent 增量写，Main Agent 只扫进度\n3. `_数据.md`：Subagent 增量写，Main Agent **仅读此文件汇总**\n4. 汇总时只读数据文件 + 极小状态文件，不读任务文件，不重复读状态\n\n**token 节省原理：**\n```\n旧方案（任务+进度+数据混在一起）：\n  任务说明(500) + 进度日志(800) × N项 = 大量重复 token\n\n三文件分离 + 节流规范：\n  任务文件（只读一次） + 状态文件（极小） + 数据文件（增量纯成果）\n  ≈ 减少 60-75% token\n\nSubagent 自身也这样做：\n  避免 Subagent 自身撑爆上下文，延长可执行步数\n```\n\n### 4. 资源整合度原则（🆕）\n\n**引用的路径和资源必须在使用前验证可达性：**\n\n| 资源类型 | 验证方法 |\n|---------|---------|\n| tasks 目录 | `ls ~/.openclaw/workspace/tasks/`，不存在则 `mkdir -p` |\n| 依赖 skill | `ls skills/[name]/SKILL.md`，不存在则提示用户未安装 |\n| 依赖脚本 | `ls scripts/[name].sh`，不存在则报告路径错误 |\n| 最终 wiki 输出 | `ls ~/llm-wiki/raw/articles/`，不存在则跳过或创建 |\n\n**Phase 1 开头增加路径验证步骤（检查点）：**\n```\nPhase 1 第0步：验证路径\n- 验证 tasks/ 目录存在\n- 验证依赖 skill 的 SKILL.md 可达\n- 验证依赖脚本可执行\n- 如有不可达 → 报告给用户，说明缺少什么\n- 全部通过后再进入任务拆解\n```\n\n**references/paths.md** 包含所有引用的路径，可随时查阅。\n\n### 5. 资源独占原则\n\n- **共享资源不可并发：** 浏览器(CDP)、数据库连接、文件写锁等，同时间只有一个 Subagent 使用\n- **独立资源可并发：** web_fetch、只读API、不同端口的服务等\n- **执行顺序由 Main Agent 在 spawn 时明确指定：** \"第N个执行，等前面的完成\"\n\n### 6. 数据纯正性原则\n\n- **不擅自切换信息来源：** 用户指定了什么来源就用什么\n- **每个来源有验证方法：** 提取该来源特有的指标/字段，用于验证数据确实来自该来源\n- **切换来源需用户同意：** 不可用时要报告问题，征求确认\n\n### 7. 失败阈值原则（🆕）\n\n**连续失败 5 次即暂停，不空转：**\n\n| 类型 | 可自行重试 | 超过5次 → 暂停 |\n|------|-----------|----------------|\n| 网络临时故障 | 等10秒再试 | 连续5次 → 暂停 |\n| 验证码/风控 | 写状态→暂停 | — |\n| 信息不足/参数错误 | 修复后重试 | 连续5次 → 暂停 |\n| 权限/认证失败 | — | 立即暂停，报告用户 |\n\n**状态文件标记：** `❌ 暂停：连续失败 N 次`\n**Main Agent 处理：** 汇总已完成部分 + 失败原因 → 向用户报告并询问下一步\n\n### 8. 交付验证原则（🆕）\n\n**适用于有外部交付的任务：** 推送到 Discord/微信/群/板等外部渠道的任务，不能只凭\"已发送\"就认为完成。\n\n**最低交付证明要求：**\n```\n📤 交付验证（必须全部提供，否则视为未交付）\n- 目标渠道：[channel/thread id 或具体位置描述]\n- 消息ID：[message_id 或 object_id]\n- 人类可查位置：[可验证的链接或描述]\n```\n\n**处理规则：**\n- 缺少任一证明项 → **任务视为未完成**，不得标记 `done`\n- 不接受\"已发送/已上屏/已交付\"等口头确认\n- 如果外部渠道无 ID 机制 → 改用截图描述（描述中含时间戳+内容特征）\n\n### 9. Memory 固化原则（🆕，按需写入，不爆炸）\n\n**Phase 5 清理前，按以下规则决定是否写入 memory：**\n\n| 条件 | 是否写 memory | 写什么 | 写多少 |\n|------|-------------|--------|--------|\n| 子任务数 ≥ 3 且正常完成 | 写一行摘要 | 任务目标 + 关键成果 + 文件路径 | ~100字 |\n| 有失败/异常/阻塞 | 写 | 失败原因 + 解决建议 | ~50字 |\n| 正常完成（子任务数 < 3） | **不写** | — | 0 |\n| 发现更好方案/工具 | 写 | 替代方案 + 使用条件 | ~50字 |\n| 用户做了特殊决策 | 写 | 用户偏好（下次自动用） | ~30字 |\n\n**理由：** 每个 subagent 完成都写 memory 会导致 memory 爆炸（每天5个大任务≈5000字/天）。三文件已持久化成果，memory 只保留\"规律和异常\"，是最优平衡。\n\n**写法：**\n```\n## [日期] 任务记忆（按需）\n- [任务类型]: [一句话成果摘要] → [文件路径]\n- 新失败类型: [错误] → [解决方式]\n```\n\n---\n\n## 执行流程\n\n### Phase 1: 任务拆解与准备（Main Agent）\n\n1. **明确目标：** 最终交付物是什么？验收标准？\n2. **识别子任务：** 按信息源/执行步骤/资源依赖拆分\n3. **判断串行/并行：** 共享资源串行，独立资源并行\n4. **为每个子任务创建三文件：**\n\n```bash\nwrite ~/.openclaw/workspace/tasks/[子任务]_[日期]_任务.md   # 任务要求\nwrite ~/.openclaw/workspace/tasks/[子任务]_[日期]_状态.md   # 初始状态\nwrite ~/.openclaw/workspace/tasks/[子任务]_[日期]_数据.md   # 空数据文件\n```\n\n**任务文件模板：**\n```markdown\n# [子任务名称]（[日期]）\n\n## 任务要求\n- 目标：[明确、可量化的目标]\n- 信息来源：[指定来源及验证方法]\n- 输出文件：~/.openclaw/workspace/tasks/[子任务]_[日期]_数据.md\n\n## 共享资源\n- [资源名称]：[端口/路径等]\n- 执行顺序：第N个\n\n## 验收标准\n- [标准1]\n- [标准2]\n\n## 数据文件格式（Subagent 按此格式写入数据文件）\n[定义输出格式模板]\n```\n\n**状态文件初始内容：**\n```markdown\n# [子任务名称]状态（[日期]）\n\n## 执行进度\n- [时间] ⏳ 等待启动\n\n## 断点记录\n- 上次完成：0/N\n- 下一步：[第一步操作]\n\n## 任务状态\n- 状态：⏳ 等待启动\n- 完成进度：0/N\n\n## 待解决问题\n- 无\n```\n\n### Phase 2: 启动 Subagent（Main Agent）\n\n**⚠️ 前提条件：已获用户明确确认（见上方 Spawn 前确认节点）**\n\n**串行执行：**\n```\n子任务A → 完成后 → 子任务B → 完成后 → 子任务C\n```\n\n**可并行的：**\n```\n子任务A（用浏览器）  ──→ 完成后 ──→ 子任务B（用浏览器）\n子任务C（不用浏览器）──→ 立即启动，与A并行\n```\n\n**每次 spawn 四必填：**\n- ✅ `mode: \"session\"`\n- ✅ `sessionKey: \"[project]-[subtask]-[yyyymmdd]\"`\n- ✅ 完整 `task` 参数（塞满所有细节）\n- ✅ 三文件路径告知\n- ✅ 交付证明要求（如有外部交付：`delivery-proof` 字段说明需要的证明类型）\n\n**⚠️ Spawn 前必须确认（检查点）：**\n> 每个 Phase 2 启动 Subagent 之前，必须向用户展示：**子任务列表 + 并行/串行策略 + 预计执行顺序**，获得用户明确回复（如「好/开始/执行」）后再 spawn。未获确认不得自行启动。嵌套 spawn 已在原则中强制要求确认，此处强调是为了覆盖普通 spawn 也需要确认。\n\n**确认话术模板：**\n```\n准备好启动子任务了：\n- 子任务 A（并行，独立资源）\n- 子任务 B（串行，等待 A 完成）\n- 预计执行顺序：A → B\n开始执行？\n```\n\n### Phase 3: Subagent 执行（5 步法）\n\n1. 读 `task` 参数，必要时核对 `_任务.md`\n2. 按步骤执行；遇异常立即写状态文件并暂停\n3. 每完成一个单位 → append 到 `_数据.md`\n4. 每次进度变化 → 更新 `_状态.md`\n5. 完成写 `✅ 完成`；中断写 `⚠️ 部分完成` / `❌ 失败`\n\n**原则：task 参数优先；任务文件只读；状态/数据文件读写**\n\n**结构化 Return 协议（🆕）：**\n\n每次向 Main Agent 汇报前，按以下格式写入状态文件：\n\n```\n## Subagent Return\ntag: [autopilot | done | partial | blocked | need_user]\ntask_id: [子任务名]\ncompleted: N/N\nfiles_written: [文件路径列表]\nnext: [下一步做什么]\nproof: [外部交付证明：message_id/channel/路径等，若无外部交付则填 null]\n```\n\n**tag 含义：**\n- `autopilot`：本轮完成但任务线未结束 → Main Agent 必须派下一跳\n- `done`：本子任务完全完成 → 进入 Phase 4 整合\n- `partial`：部分完成，状态文件已有断点 → 等待接手或用户决定\n- `blocked`：被阻塞（验证码/权限/网络持续失败）→ 等待人工介入\n- `need_user`：需要用户决策（如来源不可用/参数不明确）→ 报告给用户\n\n**⚠️ 注意：** `tag=autopilot` 不等于任务线结束。Main Agent 收到此 tag 后，**必须立即派下一跳或显式关闭任务线**，不得停等用户。\n\n### Phase 4: Main Agent 整合（6 步法）\n\n**第1步：扫状态文件（极小，token≈0）**\n```bash\nread ~/.openclaw/workspace/tasks/*_状态.md\n```\n判断：全✅→继续 | 有⚠️/❌→汇总已有+标注 | 有⏳→汇总已完成部分\n\n**第2步：仅读数据文件（纯成果内容，无冗余）**\n```bash\nread ~/.openclaw/workspace/tasks/*_数据.md\n```\n按优先级顺序读，只读数据文件，不读任务文件。\n\n**第3步：跨数据源交叉统计**\n- 同类项归一（忽略空格/标点差异）\n- 提及/出现次数 +1\n- 每项附加所有来源\n- 按出现次数降序\n\n**第4步：排序与优先级计算**\n- 定义权重维度（来源权重、时间衰减、相关性等）\n- 计算综合优先级分\n- 按分降序排列\n\n**第5步：生成最终输出文件**\n```bash\nwrite [最终输出路径]\n```\n输出前逐项检查验收标准。\n\n**第6步：输出完成报告**\n```\n【任务完成】\n📊 数据来源：[各子任务及数量]\n📋 成果统计：[关键指标]\n📁 输出文件：[路径]\n```\n\n**Anti-Drop Guard（🆕）：**\n\n每次 subagent 返回 `tag=autopilot` 后，Main Agent **必须确认三件事**，否则本轮未完成：\n\n```\n✅ 确认1：任务线还在任务板上（未手动关闭）\n✅ 确认2：任务线未完成（有下一节点）\n✅ 确认3：下一跳已派发 OR 任务线已显式关闭（idle/blocked/need_user/done）\n```\n\n**三件事任一缺失 → 本轮 Turn 不完整：**\n- 不能仅因 subagent 说\"这轮完成了\"就停等用户\n- 不能仅因 Phase 4 第6步报告了就结束 Turn\n- **Turn 只有在节点已推进 + 下一跳已派发（或任务线已关闭）后才算真正完成**\n\n**正确做法：**\n```\nSubagent 返回 tag=autopilot\n→ Main Agent 读取状态文件解析 tag\n→ 确认三件事\n→ 如有下一跳，立即 spawn 下一 Subagent（或派给自己）\n→ 向用户简短汇报进度（不等待）\n```\n\n### Phase 5: 清理（需用户批准）\n\n**触发：** 任务完成 / 失败 / 超7天未动 / 用户主动要求\n\n**流程：**\n1. **Memory 固化（按需，见 9. Memory 固化原则）**\n   - 判断：子任务数 ≥ 3 或有异常/失败/新发现？\n   - 是 → 从 `_数据.md` 提取一行摘要，写入 `memory/YYYY-MM-DD.md`\n   - 否 → 跳过（避免 memory 爆炸）\n2. 列出 `tasks/` 下候选文件\n3. 向用户展示分类（本次任务 / 历史文件 / 保留文件）\n4. 未获明确批准前，不执行任何清理\n5. 获批后使用 `trash`，不用 `rm`\n\n**规则：**\n- 只清理中间文件，不删最终产出\n- 默认保留 72h 内文件\n- \"可以清理/全删了/只清这次\"算批准；\"先看看\"不算\n\n---\n\n## 进度汇报模板\n\n```\n## 📊 进度汇报\n\n| 子任务 | 状态 | 结果 | 问题 |\n|--------|------|------|------|\n| [子任务A] | 🔄/✅/⚠️/❌ | [成果摘要] | — |\n| [子任务B] | 🔄/✅/⚠️/❌ | [成果摘要] | — |\n\n下一步：xxx\n```\n\n---\n\n## 常见问题速查\n\n| 问题 | 解决方案 |\n|------|----------|\n| **🆕 对话太长快撑爆上下文** | 立即执行上下文抢救：落盘三文件 + spawn Subagent 接续 |\n| **🆕 Context compact 后忘了在做什么** | 读 _状态.md 恢复断点，读 _任务.md 恢复目标，不需要会话记忆 |\n| **🆕 Subagent 自己也快溢出** | 优先三文件分离+断点续传；嵌套 spawn 需先告知用户获确认，不得自行嵌套 |\n| Subagent 忘了任务 | 检查 task 参数是否完整；恢复优先级：task > 文件 > 记忆 |\n| 多个 Subagent 资源冲突 | 串行执行，一个用完再下一个 |\n| Gateway 重启导致失败 | Main Agent 重新 spawn，状态文件中有断点 |\n| 进度卡住 | `subagents list` 检查，kill 后从断点重启 |\n| Token 消耗过大 | 确认只读数据文件汇总，不读任务文件和完整状态日志 |\n| 数据来源不纯 | 每个来源设验证指标，发现混入立即停止报告 |\n| 临时文件堆积 | Phase 5 清理，必须用户批准 |\n| **🆕 Subagent 连续失败 5 次** | 停止重试，写状态文件❌，向 Main Agent 报告，等待人工介入 |\n| **🆕 Subagent 返回 autopilot 但任务线停了** | 检查 anti-drop guard 三件事：任务线存在？未完成？下一跳已派发？ |\n| **🆕 外部交付任务口头确认\"已发送\"** | 要求提供 delivery-proof（message_id/channel/location），缺一不可标记未完成 |\n\n---\n\n## 🆕 辅助功能：每日 Session 清理定时任务\n\n**作用：** 自动清理过期/孤儿 session 文件，释放磁盘空间，避免会话列表杂乱。\n\n**使用流程：**\n1. 用户确认需要创建定时任务（由 Main Agent 询问）\n2. Main Agent 使用 `cron add` 创建每日定时任务（详见下方配置）\n3. 任务运行在 `isolated` session，以 `announce` 方式汇报结果\n4. 用户可随时用 `cron list` 查看或 `cron remove` 取消\n\n**Cron 任务配置：**\n```javascript\ncron.add({\n  name: \"每日 Session 清理\",\n  schedule: { kind: \"cron\", expr: \"30 3 * * *\", tz: \"Asia/Shanghai\" }, // 每天凌晨 03:30\n  payload: {\n    kind: \"agentTurn\",\n    message: `\n执行以下步骤完成 session 清理：\n\n1. 运行扫描：~/.openclaw/workspace/skills/session-cleanup/scripts/scan_sessions.sh scan\n2. 解析 JSON 输出，汇总：孤儿文件数、过期会话数、预计可释放空间\n3. 默认保护 72 小时内的会话，不删除 agent:main:main\n4. 删除所有孤儿 jsonl 文件（磁盘存在但 sessions.json 未登记的）\n5. 删除所有过期会话（72小时以上且非受保护的）\n6. 更新 sessions.json 去除对应的条目\n\n报告格式：\n🧹 每日 Session 清理完成\n- 扫描时间：[时间]\n- 清理孤儿文件：N 个（约 X MB）\n- 清理过期会话：N 个（约 X MB）\n- 本次共释放：约 X MB\n- 当前注册会话：N`,\n    timeoutSeconds: 300,\n  },\n  delivery: { mode: \"announce\", bestEffort: false },\n  sessionTarget: \"isolated\",\n  enabled: true,\n})\n```\n\n**⚠️ 注意事项：**\n- 必须先确认用户要创建，再执行 cron add\n- 定时任务在 isolated session 运行，不需要 Main Agent 常驻\n- 如需取消：`cron remove [jobId]`\n\n---\n\n## 适用场景示例\n\n| 场景 | 子任务拆分 | 共享资源 |\n|------|-----------|----------|\n| **🆕 上下文即将溢出** | 将未完成部分拆出，Main 只保留等待状态 | 文件系统读写 |\n| **🆕 Context compact 前抢救** | 紧急落盘三文件 + spawn 接续 Subagent | 无，纯文件操作 |\n| **🆕 单任务数据量超预期** | Subagent 自身也用三文件分离，必要时嵌套 spawn | 视情况 |\n| 多平台攻略抓取 | 按平台拆：小红书/马蜂窝/携程/公众号 | 浏览器串行，web_fetch并行 |\n| 多文件格式转换 | 按格式拆：PDF/Word/Excel/HTML | 无，可全部并行 |\n| 多数据源调研 | 按来源拆：论文/新闻/内部文档/社交媒体 | API限流可能需串行 |\n| 代码项目重构 | 按模块拆：前端/后端/数据库/测试 | 文件系统，需协调避免冲突 |\n| 多语言翻译 | 按语言拆：EN/JP/KR/FR | 无，可全部并行 |\n\n---\n\n## 设计理念\n\n> **找的范围应该确定性，想的综合应该概率性。**\n> —— 找的部分用工具/子任务精确筛选，想的部分交给 Main Agent 推理整合。\n\n> **三文件分离的本质是关注点分离：** 任务是契约，状态是心跳，数据是成果。混在一起，token 浪费在重复读取不变的任务说明；分开了，每次只读需要的部分。\n\nFile v1.3.0:_meta.json\n\n{\n  \"ownerId\": \"kn7fgm829te36r33ybgx1v7jpx82khse\",\n  \"slug\": \"subagent-orchestrator-whhh\",\n  \"version\": \"1.3.0\",\n  \"publishedAt\": 1777217102722\n}\n\nFile v1.3.0:references/paths.md\n\n# 路径规范（subagent-orchestrator）\n\n本文档列出 skill 中所有引用的路径和资源，供验证和快速查阅。\n\n## 任务文件路径\n\n| 文件 | 路径规范 | 用途 |\n|------|---------|------|\n| 任务文件 | `~/.openclaw/workspace/tasks/[子任务]_[日期]_任务.md` | Main Agent 写一次，Subagent 只读 |\n| 状态文件 | `~/.openclaw/workspace/tasks/[子任务]_[日期]_状态.md` | Subagent 增量写，Main Agent 快速扫 |\n| 数据文件 | `~/.openclaw/workspace/tasks/[子任务]_[日期]_数据.md` | Subagent 增量写，Main Agent 汇总 |\n| 最终产出 | `~/.openclaw/workspace/tasks/[项目]_[日期]_最终.md` | Phase 4 输出，用户指定的最终交付 |\n\n## SessionKey 命名规范\n\n格式：`[项目]-[子任务简称]-[YYYYMMDD]`\n示例：`travel-xiaohongshu-20260426`\n\n## 依赖 skill\n\n| Skill | 路径 | 触发时调用 |\n|-------|------|-----------|\n| xiaohongshu-crawler | `skills/xiaohongshu-crawler/SKILL.md` | 小红书攻略抓取 |\n| wechat-article-spider | `skills/wechat-article-spider/SKILL.md` | 公众号文章爬取 |\n| session-cleanup | `skills/session-cleanup/SKILL.md` | 每日 session 清理（辅助功能） |\n| agent-browser-clawdbot | `skills/agent-browser-clawdbot/SKILL.md` | 浏览器自动化（需串行） |\n\n## 依赖脚本\n\n| 脚本 | 路径 | 用途 |\n|------|------|------|\n| session 扫描 | `skills/session-cleanup/scripts/scan_sessions.sh` | session 清理扫描 |\n\n## 验证检查点\n\n执行任务前，Main Agent 应验证路径可达性：\n\n```bash\n# 验证 tasks 目录存在\nls ~/.openclaw/workspace/tasks/ 2>/dev/null || mkdir -p ~/.openclaw/workspace/tasks/\n\n# 验证依赖 skill 存在（按需）\nls ~/.openclaw/workspace/skills/[skill-name]/SKILL.md 2>/dev/null && echo \"✅ [skill] 可用\" || echo \"⚠️ [skill] 未安装\"\n```\n\n## wiki 关联\n\n最终产出可选择性输出到 wiki：\n- Wiki 路径：`~/llm-wiki/raw/articles/[目的地]综合攻略.md`（需用户确认）\n\nArchive v1.2.0: 3 files, 9894 bytes\n\nFiles: _meta.json (145b), references/paths.md (1976b), SKILL.md (19509b)\n\nFile v1.2.0:SKILL.md\n\n---\nname: subagent-orchestrator\ndescription: 将复杂大型任务拆解为多个子任务，通过 Subagent 并行/串行执行，三文件持久化防丢失，Main Agent 统筹整合。适用于任何需要多步骤、多信息源、长时间运行的任务，也适用于即将超出上下文窗口时的任务分流。触发词：任务分工、子任务编排、多agent协作、上下文溢出、任务分流、context快满了。\nmetadata:\n  { \"openclaw\": { \"emoji\": \"🔀\", \"requires\": { \"tools\": [\"sessions_spawn\", \"sessions_send\", \"sessions_list\", \"write\", \"read\", \"exec\", \"cron\", \"sessions_yield\", \"subagents\"] } }, \"version\": \"1.2.0\", \"updatedAt\": \"2026-04-26\" }\n---\n\n# Subagent Orchestrator Skill\n\n## 版本\n- **v1.2.0 (2026-04-26):** 新增：Subagent token 节流规范、连续失败 5 次暂停机制；辅助用户创建每日 session 清理定时任务\n- **v1.0.0 (2026-04-26):** 从 tourism-guide-harvester 提炼，泛化为通用大型任务分工框架\n\n## 技能描述\n将复杂大型任务拆解为多个子任务，通过 Subagent 并行/串行执行，三文件持久化防丢失，Main Agent 统筹整合。适用于任何需要多步骤、多信息源、长时间运行的任务，**也适用于即将超出上下文窗口时的任务分流——在 context 被压缩前，将未完成工作迁移到 Subagent，避免记忆丢失。**\n\n## 触发词\n- 大型任务拆分\n- 任务分工\n- 子任务编排\n- 多agent协作\n- 复杂任务执行\n- 上下文溢出\n- context快满了\n- 任务分流\n\n---\n\n## 自动触发场景（🆕 重点）\n\n**不只是用户主动要求时才用，以下情况应自动启用本 skill：**\n\n### 场景1：预估任务将超出上下文窗口\n\n**信号：**\n- 任务需要读取/处理大量文件或网页（>10个源）\n- 预计对话轮次 > 20 轮\n- 需要多轮浏览器操作 + 大量文本提取\n- 单次输出预计 > 2000 字且还要继续\n\n**动作：** 立即将任务拆分为 Subagent 子任务，把重IO/重token的部分分流出去，Main Session 只保留轻量统筹。\n\n### 场景2：Context 即将被 compact\n\n**信号：**\n- 对话已经很长，感觉到近期回复变慢或开始遗忘早期内容\n- 系统发出 context window 接近上限的信号\n- 已执行大量工具调用，对话历史膨胀\n\n**动作：** 在 compact 发生前，紧急执行「上下文抢救」：\n1. 将当前未完成的任务要点写入 `_任务.md`\n2. 将已完成的中间成果写入 `_数据.md`\n3. 将当前进度和断点写入 `_状态.md`\n4. spawn Subagent 接续执行，task 参数中包含完整上下文\n5. Main Session 只保留极简状态等待结果\n\n> **关键：compact 会丢信息，文件不会。compact 前落盘 = 零损失。**\n\n### 场景3：单任务天然适合拆分\n\n**信号：**\n- 任务涉及多个独立信息源/平台/API\n- 任务有天然的分阶段结构（收集→分析→输出）\n- 不同部分可以由不同 agent 并行完成\n\n**动作：** 按本 skill 正常流程执行 Phase 1-5。\n\n### 场景4：任务执行中途发现上下文不够用\n\n**信号：**\n- 执行过程中发现数据量远超预期\n- 单个 Subagent 自己也快撑爆上下文\n\n**动作：** Subagent 自身也应用三文件分离——把中间结果写入文件，避免在对话历史中累积。\n\n**⚠️ 嵌套 spawn 需谨慎：** Subagent 再 spawn 子 Subagent（嵌套分工）会增加编排复杂度和资源消耗，**必须在嵌套前告知用户并获得确认**，不得自行决定嵌套。优先尝试通过三文件分离 + 断点续传解决问题，嵌套是最后手段。\n\n### 场景5：Subagent 执行失败超过 5 次（🆕）\n\n**信号：**\n- 同一子任务连续失败 5 次（网络/权限/验证码/信息不足等）\n- 状态文件中出现连续失败标记\n\n**动作：**\n1. 停止重试，避免空转浪费 token\n2. 在 `_状态.md` 中记录：`❌ 暂停：连续失败 5 次`\n3. 向 Main Agent 报告：「任务 X 失败 5 次，需要人工介入」\n4. Main Agent 接到报告后：汇总已完成的成果，分析失败原因，向用户询问下一步（调整参数/换方案/放弃）\n\n**为什么停：** 反复失败不解决会无限消耗 token，及时暂停并上报是最优策略。\n\n### 上下文抢救清单（Compact 前必做）\n\n```\n☐ 当前任务目标 → 写入 _任务.md\n☐ 已完成成果 → 写入 _数据.md\n☐ 进度断点 → 写入 _状态.md\n☐ 关键决策/用户偏好 → 写入 _任务.md 备注\n☐ spawn Subagent → task 参数包含完整恢复信息\n☐ Main Session 释放上下文 → 只保留等待结果的轻量状态\n```\n\n---\n\n## 核心原则\n\n### 1. 分工原则\n\n| 角色 | 职责 | 不做什么 |\n|------|------|----------|\n| **Main Agent** | 任务拆解、文件准备、启动 Subagent、监控进度、失败汇总+询问用户、最终整合 | 不亲自执行信息收集/重IO操作 |\n| **Subagent** | 执行具体子任务、写数据文件、更新状态、失败5次即停+报告 | 不做最终决策、不回写任务文件 |\n\n**串行 vs 并行判断：**\n- 共享资源（如浏览器、数据库连接）→ **串行**\n- 独立资源（如 web_fetch、不同API）→ **可并行**\n- 不确定时 → 默认串行，安全优先\n\n### 2. Subagent 记忆固化原则（防止任务丢失）\n\n**核心：三重保险——session + task参数 + 文件。缺一不可。**\n\n| 机制 | 用法 | 为什么 |\n|------|------|--------|\n| 持久化 Session | `mode: \"session\"` + 固定 `sessionKey` | 任务累积不丢失，跨 compact 恢复 |\n| 完整 task 参数 | 所有关键要求写进 `sessions_spawn(task=...)` | 每次回复都能看到完整指令 |\n| 文件持久化 | 三文件（任务/状态/数据）落盘 | session 彻底丢失时也能恢复 |\n\n**SessionKey 命名规范：** `[项目]-[子任务简称]-[YYYYMMDD]`\n\n**最小 spawn 模板：**\n```javascript\nsessions_spawn({\n  label: \"[子任务描述]\",\n  mode: \"session\",\n  sessionKey: \"[project]-[subtask]-[yyyymmdd]\",\n  task: `\n目标：[明确、可验收的目标]\n只读：_任务.md\n只写：_状态.md + _数据.md\n共享资源：[浏览器/端口/API等，如无需则删]\n异常处理：立即写入状态文件并提示人工介入\n验收标准：[至少N条/包含XX/格式为XX]\n`\n})\n```\n\n**恢复优先级：** task 参数 > 任务文件 > 会话记忆\n\n**原则：task 参数是运行真迹，文件是恢复真迹，session 只是执行容器。**\n\n### 3. 三文件分离原则（降低 token 消耗）\n\n**Subagent Token 节流规范（🆕）：**\n- **只读一次任务文件**：任务文件 `_任务.md` 只在启动时读一次，后续按状态文件断点续做，不重复读\n- **增量落盘**：每完成一个子步骤，立即写数据文件，不要攒到全部完成再写（Subagent 崩溃时保底）\n- **状态文件极小化**：只记关键断点（完成到哪、下一步），不写流水日志，保持在 500 字以内\n- **Main Agent 汇总只读数据**：汇总阶段只看 `_数据.md`，不看 `_任务.md` 和大段状态日志\n- **失败写状态即停**：遇到错误先写状态文件再试；同一错误连续失败 5 次立即停止，不空转\n\n| 文件 | 谁写 | 谁读 | 作用 | 大小趋势 |\n|------|------|------|------|----------|\n| `_任务.md` | Main Agent 写一次 | Subagent 启动时读一次 | 任务要求/验收标准 | 固定不变 |\n| `_状态.md` | Subagent 增量写 | Main Agent 快速读 | 进度/断点/问题 | 小，可控 |\n| `_数据.md` | Subagent 增量写 | Main Agent 汇总只读它 | 纯成果数据 | 随任务增长 |\n\n**路径规范：** `~/.openclaw/workspace/tasks/[子任务]_[日期]_{任务|状态|数据}.md`\n\n**四条铁律：**\n1. `_任务.md`：Main Agent 写一次，Subagent 只读，永不回写\n2. `_状态.md`：Subagent 增量写，Main Agent 只扫进度\n3. `_数据.md`：Subagent 增量写，Main Agent **仅读此文件汇总**\n4. 汇总时只读数据文件 + 极小状态文件，不读任务文件，不重复读状态\n\n**token 节省原理：**\n```\n旧方案（任务+进度+数据混在一起）：\n  任务说明(500) + 进度日志(800) × N项 = 大量重复 token\n\n三文件分离 + 节流规范：\n  任务文件（只读一次） + 状态文件（极小） + 数据文件（增量纯成果）\n  ≈ 减少 60-75% token\n\nSubagent 自身也这样做：\n  避免 Subagent 自身撑爆上下文，延长可执行步数\n```\n\n### 4. 资源整合度原则（🆕）\n\n**引用的路径和资源必须在使用前验证可达性：**\n\n| 资源类型 | 验证方法 |\n|---------|---------|\n| tasks 目录 | `ls ~/.openclaw/workspace/tasks/`，不存在则 `mkdir -p` |\n| 依赖 skill | `ls skills/[name]/SKILL.md`，不存在则提示用户未安装 |\n| 依赖脚本 | `ls scripts/[name].sh`，不存在则报告路径错误 |\n| 最终 wiki 输出 | `ls ~/llm-wiki/raw/articles/`，不存在则跳过或创建 |\n\n**Phase 1 开头增加路径验证步骤（检查点）：**\n```\nPhase 1 第0步：验证路径\n- 验证 tasks/ 目录存在\n- 验证依赖 skill 的 SKILL.md 可达\n- 验证依赖脚本可执行\n- 如有不可达 → 报告给用户，说明缺少什么\n- 全部通过后再进入任务拆解\n```\n\n**references/paths.md** 包含所有引用的路径，可随时查阅。\n\n### 5. 资源独占原则\n\n- **共享资源不可并发：** 浏览器(CDP)、数据库连接、文件写锁等，同时间只有一个 Subagent 使用\n- **独立资源可并发：** web_fetch、只读API、不同端口的服务等\n- **执行顺序由 Main Agent 在 spawn 时明确指定：** \"第N个执行，等前面的完成\"\n\n### 6. 数据纯正性原则\n\n- **不擅自切换信息来源：** 用户指定了什么来源就用什么\n- **每个来源有验证方法：** 提取该来源特有的指标/字段，用于验证数据确实来自该来源\n- **切换来源需用户同意：** 不可用时要报告问题，征求确认\n\n### 7. 失败阈值原则（🆕）\n\n**连续失败 5 次即暂停，不空转：**\n\n| 类型 | 可自行重试 | 超过5次 → 暂停 |\n|------|-----------|----------------|\n| 网络临时故障 | 等10秒再试 | 连续5次 → 暂停 |\n| 验证码/风控 | 写状态→暂停 | — |\n| 信息不足/参数错误 | 修复后重试 | 连续5次 → 暂停 |\n| 权限/认证失败 | — | 立即暂停，报告用户 |\n\n**状态文件标记：** `❌ 暂停：连续失败 N 次`\n**Main Agent 处理：** 汇总已完成部分 + 失败原因 → 向用户报告并询问下一步\n\n---\n\n## 执行流程\n\n### Phase 1: 任务拆解与准备（Main Agent）\n\n1. **明确目标：** 最终交付物是什么？验收标准？\n2. **识别子任务：** 按信息源/执行步骤/资源依赖拆分\n3. **判断串行/并行：** 共享资源串行，独立资源并行\n4. **为每个子任务创建三文件：**\n\n```bash\nwrite ~/.openclaw/workspace/tasks/[子任务]_[日期]_任务.md   # 任务要求\nwrite ~/.openclaw/workspace/tasks/[子任务]_[日期]_状态.md   # 初始状态\nwrite ~/.openclaw/workspace/tasks/[子任务]_[日期]_数据.md   # 空数据文件\n```\n\n**任务文件模板：**\n```markdown\n# [子任务名称]（[日期]）\n\n## 任务要求\n- 目标：[明确、可量化的目标]\n- 信息来源：[指定来源及验证方法]\n- 输出文件：~/.openclaw/workspace/tasks/[子任务]_[日期]_数据.md\n\n## 共享资源\n- [资源名称]：[端口/路径等]\n- 执行顺序：第N个\n\n## 验收标准\n- [标准1]\n- [标准2]\n\n## 数据文件格式（Subagent 按此格式写入数据文件）\n[定义输出格式模板]\n```\n\n**状态文件初始内容：**\n```markdown\n# [子任务名称]状态（[日期]）\n\n## 执行进度\n- [时间] ⏳ 等待启动\n\n## 断点记录\n- 上次完成：0/N\n- 下一步：[第一步操作]\n\n## 任务状态\n- 状态：⏳ 等待启动\n- 完成进度：0/N\n\n## 待解决问题\n- 无\n```\n\n### Phase 2: 启动 Subagent（Main Agent）\n\n**⚠️ 前提条件：已获用户明确确认（见上方 Spawn 前确认节点）**\n\n**串行执行：**\n```\n子任务A → 完成后 → 子任务B → 完成后 → 子任务C\n```\n\n**可并行的：**\n```\n子任务A（用浏览器）  ──→ 完成后 ──→ 子任务B（用浏览器）\n子任务C（不用浏览器）──→ 立即启动，与A并行\n```\n\n**每次 spawn 四必填：**\n- ✅ `mode: \"session\"`\n- ✅ `sessionKey: \"[project]-[subtask]-[yyyymmdd]\"`\n- ✅ 完整 `task` 参数（塞满所有细节）\n- ✅ 三文件路径告知\n\n**⚠️ Spawn 前必须确认（检查点）：**\n> 每个 Phase 2 启动 Subagent 之前，必须向用户展示：**子任务列表 + 并行/串行策略 + 预计执行顺序**，获得用户明确回复（如「好/开始/执行」）后再 spawn。未获确认不得自行启动。嵌套 spawn 已在原则中强制要求确认，此处强调是为了覆盖普通 spawn 也需要确认。\n\n**确认话术模板：**\n```\n准备好启动子任务了：\n- 子任务 A（并行，独立资源）\n- 子任务 B（串行，等待 A 完成）\n- 预计执行顺序：A → B\n开始执行？\n```\n\n### Phase 3: Subagent 执行（5 步法）\n\n1. 读 `task` 参数，必要时核对 `_任务.md`\n2. 按步骤执行；遇异常立即写状态文件并暂停\n3. 每完成一个单位 → append 到 `_数据.md`\n4. 每次进度变化 → 更新 `_状态.md`\n5. 完成写 `✅ 完成`；中断写 `⚠️ 部分完成` / `❌ 失败`\n\n**原则：task 参数优先；任务文件只读；状态/数据文件读写**\n\n### Phase 4: Main Agent 整合（6 步法）\n\n**第1步：扫状态文件（极小，token≈0）**\n```bash\nread ~/.openclaw/workspace/tasks/*_状态.md\n```\n判断：全✅→继续 | 有⚠️/❌→汇总已有+标注 | 有⏳→汇总已完成部分\n\n**第2步：仅读数据文件（纯成果内容，无冗余）**\n```bash\nread ~/.openclaw/workspace/tasks/*_数据.md\n```\n按优先级顺序读，只读数据文件，不读任务文件。\n\n**第3步：跨数据源交叉统计**\n- 同类项归一（忽略空格/标点差异）\n- 提及/出现次数 +1\n- 每项附加所有来源\n- 按出现次数降序\n\n**第4步：排序与优先级计算**\n- 定义权重维度（来源权重、时间衰减、相关性等）\n- 计算综合优先级分\n- 按分降序排列\n\n**第5步：生成最终输出文件**\n```bash\nwrite [最终输出路径]\n```\n输出前逐项检查验收标准。\n\n**第6步：输出完成报告**\n```\n【任务完成】\n📊 数据来源：[各子任务及数量]\n📋 成果统计：[关键指标]\n📁 输出文件：[路径]\n```\n\n### Phase 5: 清理（需用户批准）\n\n**触发：** 任务完成 / 失败 / 超7天未动 / 用户主动要求\n\n**流程：**\n1. 列出 `tasks/` 下候选文件\n2. 向用户展示分类（本次任务 / 历史文件 / 保留文件）\n3. 未获明确批准前，不执行任何清理\n4. 获批后使用 `trash`，不用 `rm`\n\n**规则：**\n- 只清理中间文件，不删最终产出\n- 默认保留 72h 内文件\n- \"可以清理/全删了/只清这次\"算批准；\"先看看\"不算\n\n---\n\n## 进度汇报模板\n\n```\n## 📊 进度汇报\n\n| 子任务 | 状态 | 结果 | 问题 |\n|--------|------|------|------|\n| [子任务A] | 🔄/✅/⚠️/❌ | [成果摘要] | — |\n| [子任务B] | 🔄/✅/⚠️/❌ | [成果摘要] | — |\n\n下一步：xxx\n```\n\n---\n\n## 常见问题速查\n\n| 问题 | 解决方案 |\n|------|----------|\n| **🆕 对话太长快撑爆上下文** | 立即执行上下文抢救：落盘三文件 + spawn Subagent 接续 |\n| **🆕 Context compact 后忘了在做什么** | 读 _状态.md 恢复断点，读 _任务.md 恢复目标，不需要会话记忆 |\n| **🆕 Subagent 自己也快溢出** | 优先三文件分离+断点续传；嵌套 spawn 需先告知用户获确认，不得自行嵌套 |\n| Subagent 忘了任务 | 检查 task 参数是否完整；恢复优先级：task > 文件 > 记忆 |\n| 多个 Subagent 资源冲突 | 串行执行，一个用完再下一个 |\n| Gateway 重启导致失败 | Main Agent 重新 spawn，状态文件中有断点 |\n| 进度卡住 | `subagents list` 检查，kill 后从断点重启 |\n| Token 消耗过大 | 确认只读数据文件汇总，不读任务文件和完整状态日志 |\n| 数据来源不纯 | 每个来源设验证指标，发现混入立即停止报告 |\n| 临时文件堆积 | Phase 5 清理，必须用户批准 |\n| **🆕 Subagent 连续失败 5 次** | 停止重试，写状态文件❌，向 Main Agent 报告，等待人工介入 |\n\n---\n\n## 🆕 辅助功能：每日 Session 清理定时任务\n\n**作用：** 自动清理过期/孤儿 session 文件，释放磁盘空间，避免会话列表杂乱。\n\n**使用流程：**\n1. 用户确认需要创建定时任务（由 Main Agent 询问）\n2. Main Agent 使用 `cron add` 创建每日定时任务（详见下方配置）\n3. 任务运行在 `isolated` session，以 `announce` 方式汇报结果\n4. 用户可随时用 `cron list` 查看或 `cron remove` 取消\n\n**Cron 任务配置：**\n```javascript\ncron.add({\n  name: \"每日 Session 清理\",\n  schedule: { kind: \"cron\", expr: \"30 3 * * *\", tz: \"Asia/Shanghai\" }, // 每天凌晨 03:30\n  payload: {\n    kind: \"agentTurn\",\n    message: `\n执行以下步骤完成 session 清理：\n\n1. 运行扫描：~/.openclaw/workspace/skills/session-cleanup/scripts/scan_sessions.sh scan\n2. 解析 JSON 输出，汇总：孤儿文件数、过期会话数、预计可释放空间\n3. 默认保护 72 小时内的会话，不删除 agent:main:main\n4. 删除所有孤儿 jsonl 文件（磁盘存在但 sessions.json 未登记的）\n5. 删除所有过期会话（72小时以上且非受保护的）\n6. 更新 sessions.json 去除对应的条目\n\n报告格式：\n🧹 每日 Session 清理完成\n- 扫描时间：[时间]\n- 清理孤儿文件：N 个（约 X MB）\n- 清理过期会话：N 个（约 X MB）\n- 本次共释放：约 X MB\n- 当前注册会话：N`,\n    timeoutSeconds: 300,\n  },\n  delivery: { mode: \"announce\", bestEffort: false },\n  sessionTarget: \"isolated\",\n  enabled: true,\n})\n```\n\n**⚠️ 注意事项：**\n- 必须先确认用户要创建，再执行 cron add\n- 定时任务在 isolated session 运行，不需要 Main Agent 常驻\n- 如需取消：`cron remove [jobId]`\n\n---\n\n## 适用场景示例\n\n| 场景 | 子任务拆分 | 共享资源 |\n|------|-----------|----------|\n| **🆕 上下文即将溢出** | 将未完成部分拆出，Main 只保留等待状态 | 文件系统读写 |\n| **🆕 Context compact 前抢救** | 紧急落盘三文件 + spawn 接续 Subagent | 无，纯文件操作 |\n| **🆕 单任务数据量超预期** | Subagent 自身也用三文件分离，必要时嵌套 spawn | 视情况 |\n| 多平台攻略抓取 | 按平台拆：小红书/马蜂窝/携程/公众号 | 浏览器串行，web_fetch并行 |\n| 多文件格式转换 | 按格式拆：PDF/Word/Excel/HTML | 无，可全部并行 |\n| 多数据源调研 | 按来源拆：论文/新闻/内部文档/社交媒体 | API限流可能需串行 |\n| 代码项目重构 | 按模块拆：前端/后端/数据库/测试 | 文件系统，需协调避免冲突 |\n| 多语言翻译 | 按语言拆：EN/JP/KR/FR | 无，可全部并行 |\n\n---\n\n## 设计理念\n\n> **找的范围应该确定性，想的综合应该概率性。**\n> —— 找的部分用工具/子任务精确筛选，想的部分交给 Main Agent 推理整合。\n\n> **三文件分离的本质是关注点分离：** 任务是契约，状态是心跳，数据是成果。混在一起，token 浪费在重复读取不变的任务说明；分开了，每次只读需要的部分。\n\nFile v1.2.0:_meta.json\n\n{\n  \"ownerId\": \"kn7fgm829te36r33ybgx1v7jpx82khse\",\n  \"slug\": \"subagent-orchestrator-whhh\",\n  \"version\": \"1.2.0\",\n  \"publishedAt\": 1777216471771\n}\n\nFile v1.2.0:references/paths.md\n\n# 路径规范（subagent-orchestrator）\n\n本文档列出 skill 中所有引用的路径和资源，供验证和快速查阅。\n\n## 任务文件路径\n\n| 文件 | 路径规范 | 用途 |\n|------|---------|------|\n| 任务文件 | `~/.openclaw/workspace/tasks/[子任务]_[日期]_任务.md` | Main Agent 写一次，Subagent 只读 |\n| 状态文件 | `~/.openclaw/workspace/tasks/[子任务]_[日期]_状态.md` | Subagent 增量写，Main Agent 快速扫 |\n| 数据文件 | `~/.openclaw/workspace/tasks/[子任务]_[日期]_数据.md` | Subagent 增量写，Main Agent 汇总 |\n| 最终产出 | `~/.openclaw/workspace/tasks/[项目]_[日期]_最终.md` | Phase 4 输出，用户指定的最终交付 |\n\n## SessionKey 命名规范\n\n格式：`[项目]-[子任务简称]-[YYYYMMDD]`\n示例：`travel-xiaohongshu-20260426`\n\n## 依赖 skill\n\n| Skill | 路径 | 触发时调用 |\n|-------|------|-----------|\n| xiaohongshu-crawler | `skills/xiaohongshu-crawler/SKILL.md` | 小红书攻略抓取 |\n| wechat-article-spider | `skills/wechat-article-spider/SKILL.md` | 公众号文章爬取 |\n| session-cleanup | `skills/session-cleanup/SKILL.md` | 每日 session 清理（辅助功能） |\n| agent-browser-clawdbot | `skills/agent-browser-clawdbot/SKILL.md` | 浏览器自动化（需串行） |\n\n## 依赖脚本\n\n| 脚本 | 路径 | 用途 |\n|------|------|------|\n| session 扫描 | `skills/session-cleanup/scripts/scan_sessions.sh` | session 清理扫描 |\n\n## 验证检查点\n\n执行任务前，Main Agent 应验证路径可达性：\n\n```bash\n# 验证 tasks 目录存在\nls ~/.openclaw/workspace/tasks/ 2>/dev/null || mkdir -p ~/.openclaw/workspace/tasks/\n\n# 验证依赖 skill 存在（按需）\nls ~/.openclaw/workspace/skills/[skill-name]/SKILL.md 2>/dev/null && echo \"✅ [skill] 可用\" || echo \"⚠️ [skill] 未安装\"\n```\n\n## wiki 关联\n\n最终产出可选择性输出到 wiki：\n- Wiki 路径：`~/llm-wiki/raw/articles/[目的地]综合攻略.md`（需用户确认）","readmeExcerpt":"Skill: Subagent Orchestrator (汪哈哈版) Owner: whhh1994 Summary: 将复杂大型任务拆解为多个子任务，通过 Subagent 并行/串行执行，三文件持久化防丢失，独立任务空间管理，Plan 驱动全程，交付包含中间产物与 diff。降低触发阈值——任务步骤超过3步、涉及2个以上来源或平台、context有膨胀迹象时即触发，不等\"大型\"才拆。触发词：任务分工、子任务编排、多agent协... Tags: latest:2.0.1 Version history: v2.0.1 | 2026-05-25T08:31:32.293Z | user fix: 进度/完成结果推送到用户发起需求的渠道，不强制微信（渠道跟随，不跨渠道推送） v2.0.0 | 2026-05-25T06:19:15.178Z | user v2.0.0 (2026-05-25): Phase 0.5需求确认/独","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"~/.openclaw/workspace/tasks/[任务ID]/\n├── _任务.md           # Main Agent 写入，Subagent 只读\n├── _状态.md           # Subagent 增量写\n├── _数据.md           # Subagent 增量写\n├── _交付清单.md       # Phase 4 由 Main Agent 汇总\n├── _Plan.md           # 独立 Plan 文件，Subagent 执行前只读此文件（不读 _任务.md）\n├── _Checkpoints.md    # Checkpoint 记录，支持回退\n├── _MessageQueue.md   # Queued Messages 队列\n└── workspace/         # 任务执行时的所有中间文件\n    ├── [子任务A]/\n    └── ..."},{"language":"text","snippet":"## Plan（共 N 步，控制在 3 轮以内）\n- [ ] Step 1: [描述]（工具：[预期工具]，产出：[中间/最终产物]）\n- [x] Step 2: [描述] ✅ 完成于 10:02（工具：[实际用到的工具]，产出：[实际产出]）\n- [ ] Step 3: [描述]"},{"language":"text","snippet":"1. 【目标明确化】最终交付物？格式？位置？\n2. 【范围界定】包含什么？明确排除什么？\n3. 【约束条件】时间/格式/工具限制？参考文件？\n4. 【验收标准】怎么算完成？量化指标？\n5. 【优先级】必须 vs 可精简？\n6. 【背景/上下文】解决什么问题？历史背景？\n7. 【工作空间】指定目录 or 默认 tasks/[任务ID]？"},{"language":"markdown","snippet":"## Checkpoint 记录\n| ID | 时间戳 | Phase/Step | 状态摘要 | 可回退 |\n|-----|---------|-----------|---------|-------|\n| ckpt-0 | 10:00 | Phase 1 | Plan已确认，3步子任务 | 是 |\n| ckpt-1 | 10:15 | Phase 3 Step1 | 收集阶段完成，10条记录 | 是 |"},{"language":"text","snippet":"1. 确认 ckpt-ID 存在且「可回退」= 是\n2. 备份当前 workspace/ → workspace_backup/\n3. 从备份中恢复 ckpt-ID 时 workspace/ 内容（覆盖当前）\n4. 将 ckpt-ID 时 _数据.md 内容写入（覆盖当前）\n5. 新建 checkpoint ckpt-N+1，记录：回退原因、回退到/来自哪个 checkpoint\n6. 通知用户回退完成\n7. 若 Subagent 未结束，sessions_send 通知从 ckpt-ID 状态继续"},{"language":"markdown","snippet":"## Message Queue\n| # | 时间戳 | 来源 | 消息内容 | 状态 | 执行时机 |\n|---|--------|------|---------|------|---------|\n| 1 | 10:05 | 微信 | \"加一个 XX 字段\" | ⏳ | 下一步执行前 |\n| 2 | 10:07 | WebChat | \"这个先暂停\" | ⏳ | 当前步完成后检查 |"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: subagent-orchestrator\ndescription: 将复杂大型任务拆解为多个子任务，通过 Subagent 并行/串行执行，三文件持久化防丢失，独立任务空间管理，Plan 驱动全程，交付包含中间产物与 diff。降低触发阈值——任务步骤超过3步、涉及2个以上来源或平台、context有膨胀迹象时即触发，不等\"大型\"才拆。触发词：任务分工、子任务编排、多agent协作、上下文溢出、任务分流、context快满了。\nmetadata: { \"openclaw\": { \"emoji\": \"🔀\", \"requires\": [\"sessions_spawn\", \"sessions_send\", \"sessions_list\", \"write\", \"read\", \"exec\", \"cron\", \"sessions_yield\", \"subagents\"] }, \"version\": \"2.0.0\", \"updatedAt\": \"2026-05-25\" }\n---\n\n# Subagent Orchestrator Skill\n\n## 版本\n\n- **v2.0.0 (2026-05-25):** 重大升级（参考 Trae Solo / Windsurf Cascade / Devin）\n  1. 新增 **Phase 0.5 需求完善**——接需求后主动询问 3-5 个问题，明确后再拆解\n  2. 新增 **独立任务空间**——每个任务专属目录，中间文件和最终产物集中管理\n  3. 新增 **Plan 驱动机制**——Phase 1 输出完整 Plan，Phase 3 按 Plan 逐项打勾\n  4. 改造 **交付清单**——最终交付含中间产物列表 + 相关文件的 diff\n  5. 新增 **Checkpoint + Revert**——每步完成后打 checkpoint，支持回退\n  6. 新增 **Queued Messages**——执行期间可追加指令，进入队列依次执行\n  7. 新增 **实时进度反馈**——每步完成后推送微信，不等最终完成\n\n---\n\n## 核心原则\n\n### 1. 分工原则\n\n| 角色 | 职责 | 不做什么 |\n|------|------|----------|\n| **Main Agent** | 需求确认、三文件准备、启动 Subagent、监控进度、失败汇总、Queued Messages 路由、最终整合推送微信 | 不亲自执行信息收集/重IO操作 |\n| **Subagent** | 执行具体子任务、写数据文件、更新状态、Checkpoint、失败5次即停+报告 | 不做最终决策、不回写任务文件 |\n\n串行：共享资源（浏览器/数据库）；并行：独立资源（web_fetch/不同API）。不确定时默认串行。\n\n### 2. 三文件分离原则\n\n**Token 节流规范：**\n- `_任务.md`：Main Agent 写一次，Subagent 启动时只读一次，永不重读\n- `_状态.md`：Subagent 增量写，Main Agent 只扫进度，保持 <500字\n- `_数据.md`：Subagent 增量写，Main Agent **仅读此文件汇总**\n- 失败先写状态文件；同一错误连续失败5次立即停止，不空转\n\n### 3. 独立任务空间原则\n\n每个任务有专属目录，所有产物集中管理：\n\n```\n~/.openclaw/workspace/tasks/[任务ID]/\n├── _任务.md           # Main Agent 写入，Subagent 只读\n├── _状态.md           # Subagent 增量写\n├── _数据.md           # Subagent 增量写\n├── _交付清单.md       # Phase 4 由 Main Agent 汇总\n├── _Plan.md           # 独立 Plan 文件，Subagent 执行前只读此文件（不读 _任务.md）\n├── _Checkpoints.md    # Checkpoint 记录，支持回退\n├── _MessageQueue.md   # Queued Messages 队列\n└── workspace/         # 任务执行时的所有中间文件\n    ├── [子任务A]/\n    └── ...\n```\n\n- **用户可指定空间：** `--workspace /path/to/dir`，则使用用户指定目录\n- **命名规则：** `[任务ID]` = `任务名-日期-序号`，如 `ai-research-20260525`\n\n### 4. Plan 驱动原则\n\nPhase 1 的核心产出是 Plan，所有后续执行必须严格按 Plan 推进：\n\n```\n## Plan（共 N 步，控制在 3 轮以内）\n- [ ] Step 1: [描述]（工具：[预期工具]，产出：[中间/最终产物]）\n- [x] Step 2: [描述] ✅ 完成于 10:02（工具：[实际用到的工具]，产出：[实际产出]）\n- [ ] Step 3: [描述]\n```\n\n- Plan 总步骤数控制在 **3 轮以内**\n- Phase 3 每完成一个 Step → 在 Plan 中打 `[x]` 并标注实际工具和产出\n- Subagent 发现 Plan 有缺陷 → 写状态文件 + `tag=need_user` → Main Agent 询问用户是否更新\n\n### 5. 需求完善原则（Phase 0.5）\n\n收到任务后，**不立即拆解**，先主动完善需求，询问 3-5 个关键问题：\n\n```\n1. 【目标明确化】最终交付物？格式？位置？\n2. 【范围界定】包含什么？明确排除什么？\n3. 【约束条件】时间/格式/工具限制？参考文件？\n4. 【验收标准】怎么算完成？量化指标？\n5. 【优先级】必须 vs 可精简？\n6. 【背景/上下文】解决什么问题？历史背景？\n7. 【工作空间】指定目录 or 默认 tasks/[任务ID]？\n```\n\n**跳过条件：** 用户需求已包含完整信息（目标/范围/验收标准/交付位置均有）→ 直接进入 Phase 1\n\n### 6. Checkpoint + Revert 原则\n\n每次 Phase/Step 完成后自动记录 checkpoint，支持回退：\n\n```markdown\n## Checkpoint 记录\n| ID | 时间戳 | Phase/Step | 状态摘要 | 可回退 |\n|-----|---------|-----------|---------|-------|\n| ckpt-0 | 10:00 | Phase 1 | Plan已确认，3步子任务 | 是 |\n| ckpt-1 | 10:15 | Phase 3 Step1 | 收集阶段完成，10条记录 | 是 |\n```\n\n**回退操作步骤（Main Agent 执行）：**\n```\n1. 确认 ckpt-ID 存在且「可回退"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7fgm829te36r33ybgx1v7jpx82khse\",\n  \"slug\": \"subagent-orchestrator-whhh\",\n  \"version\": \"2.0.1\",\n  \"publishedAt\": 1779697892293\n}"},{"path":"references/paths.md","content":"# 路径规范（subagent-orchestrator）\n\n本文档列出 skill 中所有引用的路径和资源，供验证和快速查阅。\n\n## 任务文件路径\n\n| 文件 | 路径规范 | 用途 |\n|------|---------|------|\n| 任务文件 | `~/.openclaw/workspace/tasks/[子任务]_[日期]_任务.md` | Main Agent 写一次，Subagent 只读 |\n| 状态文件 | `~/.openclaw/workspace/tasks/[子任务]_[日期]_状态.md` | Subagent 增量写，Main Agent 快速扫 |\n| 数据文件 | `~/.openclaw/workspace/tasks/[子任务]_[日期]_数据.md` | Subagent 增量写，Main Agent 汇总 |\n| 最终产出 | `~/.openclaw/workspace/tasks/[项目]_[日期]_最终.md` | Phase 4 输出，用户指定的最终交付 |\n\n## SessionKey 命名规范\n\n格式：`[项目]-[子任务简称]-[YYYYMMDD]`\n示例：`travel-xiaohongshu-20260426`\n\n## 依赖 skill\n\n| Skill | 路径 | 触发时调用 |\n|-------|------|-----------|\n| xiaohongshu-crawler | `skills/xiaohongshu-crawler/SKILL.md` | 小红书攻略抓取 |\n| wechat-article-spider | `skills/wechat-article-spider/SKILL.md` | 公众号文章爬取 |\n| session-cleanup | `skills/session-cleanup/SKILL.md` | 每日 session 清理（辅助功能） |\n| agent-browser-clawdbot | `skills/agent-browser-clawdbot/SKILL.md` | 浏览器自动化（需串行） |\n\n## 依赖脚本\n\n| 脚本 | 路径 | 用途 |\n|------|------|------|\n| session 扫描 | `skills/session-cleanup/scripts/scan_sessions.sh` | session 清理扫描 |\n\n## 验证检查点\n\n执行任务前，Main Agent 应验证路径可达性：\n\n```bash\n# 验证 tasks 目录存在\nls ~/.openclaw/workspace/tasks/ 2>/dev/null || mkdir -p ~/.openclaw/workspace/tasks/\n\n# 验证依赖 skill 存在（按需）\nls ~/.openclaw/workspace/skills/[skill-name]/SKILL.md 2>/dev/null && echo \"✅ [skill] 可用\" || echo \"⚠️ [skill] 未安装\"\n```\n\n## wiki 关联\n\n最终产出可选择性输出到 wiki：\n- Wiki 路径：`~/llm-wiki/raw/articles/[目的地]综合攻略.md`（需用户确认）"},{"path":"skill-card.md","content":"## Description:\n\nCoordinates complex agent work by decomposing tasks into plans, spawning subagents, tracking progress in task files, and consolidating outputs, checkpoints, and diffs.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[whhh1994](https://clawhub.ai/user/whhh1994)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agent operators use this skill to split larger, multi-step work into managed subagent tasks with persistent plans, status files, checkpoints, and final delivery summaries. It is intended for complex research, coding, configuration, and data-gathering workflows that benefit from staged execution and recovery points.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Broad orchestration authority can spawn sessions, run commands, and write task artifacts.\n\nMitigation: Install only in environments where this level of agent delegation is intended, and review generated plans before subagents run.\n\nRisk: Persistent task files may store sensitive task details under ~/.openclaw/workspace/tasks.\n\nMitigation: Avoid using the skill for sensitive work unless local storage is acceptable, and clean task workspaces after review.\n\nRisk: Progress and final summaries may be sent through configured external channels.\n\nMitigation: Confirm channel routing before use and disable or restrict message behavior where the host environment allows it.\n\nRisk: Cron-related capability may create recurring behavior when enabled with companion cleanup workflows.\n\nMitigation: Review any scheduled tasks before enabling them and remove schedules that are no longer needed.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/whhh1994/skills/subagent-orchestrator-whhh)\n- [whhh1994 ClawHub profile](https://clawhub.ai/user/whhh1994)\n- [Path reference](artifact/references/paths.md)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown task plans, status updates, file paths, command snippets, and delivery summaries]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May create persistent task artifacts and send progress or final-result messages through the originating channel.]\n\n## Skill Version(s):\n\n2.0.1 (source: server release metadata; source skill frontmatter reports 2.0.0)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"将复杂大型任务拆解为多个子任务，通过 Subagent 并行/串行执行，三文件持久化防丢失，独立任务空间管理，Plan 驱动全程，交付包含中间产物与 diff。降低触发阈值——任务步骤超过3步、涉及2个以上来源或平台、context有膨胀迹象时即触发，不等\"大型\"才拆。触发词：任务分工、子任务编排、多agent协... Skill: Subagent Orchestrator (汪哈哈版) Owner: whhh1994 Summary: 将复杂大型任务拆解为多个子任务，通过 Subagent 并行/串行执行，三文件持久化防丢失，独立任务空间管理，Plan 驱动全程，交付包含中间产物与 diff。降低触发阈值——任务步骤超过3步、涉及2个以上来源或平台、context有膨胀迹象时即触发，不等\"大型\"才拆。触发词：任务分工、子任务编排、多agent协... Tags: latest:2.0.1 Version history: v2.0.1 | 2026-05-25T08:31:32.293Z | user fix: 进度/完成结果推送到用户发起需求的渠道，不强制微信（渠道跟随，不跨渠道推送） v2.0.0 | 2026-05-25T06:19:15.178Z | user v2.0.0 (2026-05-25): Phase 0.5需求确认/独","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":877,"uniquenessScore":57,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T15:58:23.226Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T15:58:23.226Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T20:59:36.627Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}