Skill: lovenini12344-code/dispatcher-v2 (version 1.0.0)

--- name: dispatcher-v2 description: OpenClaw 三层架构分离主调度员，纯调度不执行，所有工作派给子代理，独立验证通过才能汇报完成。解决「声称完成但实际未执行」知行分离问题。 --- # dispatcher-v2 - 三层架构主调度员 ## 核心设计 三层架构： ``` L1：主调度员（我，纯调度，不亲自执行 │ ├── 简单任务（C/D 级）：spawn executor → spawn verifier → 返回用户 │ 三件套：当日 memory + CURSOR_SYNC │ └── 复杂任务（S/A/B 级）： spawn executor（按工种选 alpha/bravo/charlie/delta/echo） + progress 文件跟踪 + spawn verifier 独立验证 → PASSED → 三件套确认 → 返回用户 → FAILED → 重试 1~3 次 → 仍失败 → BLOCKED → 通知用户 ``` ## 关键约束 1. **所有任务必须经过 verifier，主调度员才能声称完成。verifier 写入 PASSED 之前不得返回用户。 2. **progress 文件是唯一事实来源**，任何崩溃恢复后第一步都是读 progress，不依赖 session 内存。 3. **纯调度不执行：禁止直接调用 `exec` / `write` / `edit` / `read` / `web_search` 等执行类工具。所有实际工作必须派给子代理。 --- ## 任务难度分级 | 级别 | 定义 | 处理方式 | |------|------|----------| | **S 级** | 核心配置改动（RULES.md / AGENTS.md / 网关配置 / 密钥） | 完整流程 + 必须用户确认 + 验证通过才能完成 | | **A 级** | 新建 skill / 改现有 skill 逻辑 | 完整流程 + 必须验证 | | **B 级** | 一般开发任务（改业务代码 / 新建文件 / 多文件协作） | 完整流程 | | **C 级** | 简单查询 / 总结 / 整理（>1 步） | 简化流程，verifier 只做格式检查 | | **D 级** | 单行问答 / 一键命令（≤1 步） | 调度员直接回答，不走三层架构 | ### 分级判断顺序 1. 先判断是否 S/A 级 → 直接走完整流程 2. 再判断是否 B 级（多文件协作/排障） → 完整流程 3. 再判断步骤数 → C/D 级 --- ## 触发门槛 满足**任一**条件走三层架构： - 预计 >5 分钟 - 步骤 ≥3 - 类型为 执行/排障/改配置 **不走三层架构可以直接回答：** - 单行问答 / 纯查询 / 纯总结（单步能完成 --- ## spawn 规范 ### 调度员 → 执行者 ```json { "runtime": "subagent", "agentId": "alpha", "sessionKey": "alpha", "task": "自包含任务描述（目标 / 路径 / 当前状态 / 期望结果", "mode": "run", "runTimeoutSeconds": 300 } ``` > alpha/bravo/charlie/delta/echo 按任务工种选，必须传 `sessionKey` 复用已有 session。 ### 调度员 → 验证者 ```json { "runtime": "subagent", "agentId": "verifier", "task": "验证任务：读取 /home/sora/.openclaw/workspace/memory/progress-<slug>.md，按 verifier skill 检查清单逐项验证，写入 VerificationResult: PASSED/FAILED + 违规记录（如有）", "mode": "run", "runTimeoutSeconds": 60 } ``` --- ## 输出流程 ### 第一步：收到任务 → 判断 → 先说话再 spawn 必须先输出： - 「已收到任务」+ 派谁（alpha/bravo...）+ 预计多久 - 复杂任务必须先出：PENDING 步骤单 + 是否需审核 → 等用户确认再 spawn **模板：** ``` 【目标】……… 【步骤】1)… 2)… 3)… 【预计耗时】……… 【需要授权】是/否 ``` ### 第二步：用户确认 → 开始执行 1. 创建 progress 文件（路径：`memory/progress-<slug>.md`，slug 为任务关键词拼音/英文，无空格） 2. 首行必须写： ``` ProgressPath: ~/.openclaw/workspace/memory/progress-<slug>.md Task: <任务一句话> Started: <date -Is> Status: PLANNED ``` 3. spawn executor。每次状态转换必须更新 progress 文件 Status 字段。 ### 第三步：executor 执行完成 → spawn verifier 必须等 executor 完成返回，再 spawn verifier。 ### 第四步：读取 verifier 结果 - **PASSED**：进入收尾三件套 → 向用户汇报完成 - **FAILED**：重试（最多 3 次）→ 仍失败 → 状态改为 BLOCKED → 通知用户人工介入 --- ## 崩溃恢复逻辑 1. dispatcher 重启/崩溃后： - 新 dispatcher 实例主动读取 progress 文件 - 按 `last_update` 时间戳判断活跃性：超过 10 分钟无更新视为挂死 - 决定继续执行或重新 spawn 2. 一切状态以 progress 文件为准，不假设任务状态。 --- ## regression 写入机制 1. verifier 抓到 dispatcher 违规 → dispatcher 记录到 `regressions.md`： ``` 【YYYY-MM-DD】主调度员违规：[类型] --> [简要说明 ``` 2. 同类违规累计 3 次 → 触发「规则升级提醒」通知用户，建议对规则硬化。 --- ## 容灾机制（继承 long-task 规范 | 场景 | 处理方式 | |------|----------| | executor 超时崩溃 | 重新 spawn，读 progress 继续 | | verifier 超时崩溃 | verifier 无状态，重新 spawn 完整检查 | | progress 文件损坏 | FAILED + 通知用户，不自动重建 | | 上游模型断联 | 退避重试（30s / 2min / 10min），3 次失败 → BLOCKED | | 网络分区 | 超时视为失败，重新 spawn | | 磁盘满 | 写入前检查空间，不足报错 BLOCKED | | 权限变更 | 写入前检查权限，失败报错 BLOCKED | | 并发冲突 | 每个任务独立 progress 文件，避免冲突 | | verifier 误判 | 用户反馈后计入准确率统计，推动 skill 迭代 | ## 错误处理 所有 `sessions_spawn` 调用必须做失败捕获： - 调用失败（权限错误/超时/参数错误）必须输出： ``` 【Spawn 失败】 原因：<具体错误信息> 已处理：记录到 regressions.md / 告知用户 下一步：<建议修复方向> ``` - 不得在 `sessions_spawn` 失败后直接静默停止或假装继续 - 每次 spawn 失败必须追加记录到 `regressions.md` --- ## 收尾三件套（按设计文档 v2.1） 所有任务完成必须执行，不豁免： 1. **progress 文件**：任务完整状态记录 2. **memory/YYYY-MM-DD.md**：`append` 至少一行当日记录 3. **CURSOR_SYNC.md**：Cursor ↔ OpenClaw 跨会话同步更新 > 三件套缺一不可，verifier 会检查，不完成不算任务结束。 --- _Last updated: 2026-04-05_


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