SuperAPI AI 工具集

dwf-orchestrator

编程与开发

查看项目

更新于 10-16 08:54

技能介绍

用途

dwf-orchestrator 是 DWF(Dev Workflow)开发工作流的统一调度入口。它负责读取状态、判断阶段、分派子技能、维护状态机骨架,但不生成阶段文档正文,也不修改项目代码。

与旧的 dev-workflow 一体化技能不同,本技能把流程编排和阶段实现解耦:编排层只持有状态机与路由表,阶段产出由 dwf-requirement、dwf-design、dwf-development、dwf-coding 完成。

主要能力

  • 管理 .dwf/state.json、_meta.json、_context.md、.dwf/pending/<迭代目录名>/state.json、spec 目录骨架等状态。
  • 执行首次初始化、阶段推进、拆分迭代、迭代完成、新增迭代、暂停插队、重新开始、待确认事项处理、递延提醒、恢复或 state.json 重建。
  • 分派到子技能时,读取并遵守对应子技能的 SKILL.md;子技能只处理当前阶段内容,队列结构仍由本技能控制。
  • 统一控制队列变更:spec 入队、出队、active/pending/paused/done 切换、拆分兄弟 spec、优先插入。
  • 统一发起待确认事项:逐项确认、已确认事项回写、未确认事项记录、激活 spec 前的递延提醒。

使用方式

先读本文件,再按动作读取引用文件:

  • 写入、修复或解释 .dwf/state.json、_meta.json、_context.md、.dwf/pending/<迭代目录名>/state.json、spec 目录骨架前,读取 references/state-model.md。
  • 执行首次初始化、阶段推进、拆分迭代、迭代完成、新增迭代、暂停插队、重新开始、待确认事项处理、递延提醒、恢复或 state.json 重建前,读取 references/orchestration-flows.md。
  • 分派到子技能时,读取并遵守对应子技能的 SKILL.md。

每次触发流程:

  1. 读取 .dwf/state.json。
  2. 若不存在:若 .dwf/specs/ 也不存在,走首次初始化;若 .dwf/specs/ 仍在,按 state.json 缺失重建流程恢复。
  3. 若 specs 为空:项目处于稳定态。用户提出新变更时走新增迭代。
  4. 若有 active spec:按其 current_step 分派子技能;若用户提出紧急变更,走暂停与优先插入。
  5. 若无 active 但有 paused 或 pending:先按递延项提醒流程处理 .dwf/pending/ 中的未确认状态,再用 question 让用户选择恢复 paused 或激活首个 pending。
  6. 若 active.current_step == "code" 且实现清单全部完成并验证通过,走迭代完成。

分派子技能后,本次 orchestrator 编排动作结束。后续阶段必须等待用户再次确认或下一次触发后,重新读取 state.json 再分派。

阶段与分派目标

current_step 阶段 子技能
requirements 需求文档待确认 dwf-requirement
design 设计稿待确认 dwf-design
breakdown 需求分析待确认 dwf-development
plans 技术方案待选择 dwf-development
todos 实现清单待确认 dwf-development
code 编码执行中或待收尾 dwf-coding

默认阶段顺序:requirements → design → breakdown → plans → todos → code。实际推进以当前 spec 的 affected_stages 为准。

适用场景

  • 用户要启动、继续、恢复或重启 DWF 开发工作流。
  • 需要编排 .dwf/state.json、specs 队列、阶段推进与迭代管理。
  • 存在 .dwf/state.json,或用户要求按开发工作流推进。

限制

以下规则不可违反:

  • 只编排,不实现。不生成 01-需求/、02-设计稿/、03-需求分析/、04-技术方案/、05-实现清单/ 的正文内容,不修改工作区根目录下的项目代码。唯一例外:处理待确认事项时,可把用户的明确决策回写到对应阶段文档的“待确认项/待确认事项/待解决问题”段。
  • 每次调用先读 state.json。state.json 与 _meta.json 分歧时以 state.json 为准并修正 _meta.json。
  • 禁止未经确认的自动推进。阶段文档整体确认和阶段间推进都必须有显式用户确认。
  • 禁止跳过阶段。用户说“直接写代码”“只是小 bug”不是跳过流程的理由。
  • 队列变更由本技能统一控制,必须经 question 确认后写入 state.json,并同步 _meta.json。
  • 状态只写 _meta.json,不重命名 spec 目录。
  • 重新开始必须二次确认并限制删除范围,默认只删除 .dwf/;确需删除根目录项目代码时须先生成逐项待删清单并逐项确认。
  • 全程使用中文(除非用户明确要求其他语言)。
  • 待确认事项扫描不可跳过。
  • 一次触发只执行一个编排动作。允许的复合动作只有:首次初始化后分派 requirements;新增/插队 spec 经确认后激活并分派其第一个阶段;恢复经确认后激活并分派当前阶段。
  • 阶段推进后必须停下,不得自动调用下一阶段子技能。
  • 禁止批量生成阶段产物。

状态摘要

.dwf/state.json 是工作流权威来源。顶层维护有序 specs 队列和 completed_specs 历史;每个 spec 目录内的 _meta.json 是镜像。完整字段、示例 JSON、目录结构和台账 schema 见 references/state-model.md。

spec 队列状态:pending(排队等待执行)、active(当前正在执行,同一时刻最多一个)、paused(被高优先级 spec 中断,保留进度待恢复)、done(已完成,从 specs 移入 completed_specs)。

阶段推进要点

子技能完成当前阶段后,只有在阶段文档整体已被用户显式确认时才能推进状态:判断用户确认、读取刚确认阶段文档检查待确认段、进入待确认事项逐项确认循环、将当前阶段加入 confirmed_stages、按 affected_stages 推进 current_step、同步更新 state.json 与 _meta.json 及顶层 updated_at,然后停止本次编排。

特殊规则:跳过设计稿时把 design_skipped 设为 true 并从 affected_stages 移除 design;plans 阶段必须由 dwf-development 给出至少两个方案经 question 供用户选择并写入 selected_plan;初始化 spec 的 breakdown 确认后若需求覆盖多个页面或复杂模块,必须询问是否拆分兄弟 spec;推进到 code 并完成编码验证后进入迭代完成流程。

待确认事项处理

阶段推进前必须读取刚确认阶段文档并解析标题 ## 待确认项、## 待确认事项 或 ## 待解决问题,列表项匹配 ^-\s+。逐项用 question 让用户选择“已解决,给出答案”“跳过,留待后续迭代”“已在文档中直接修改”。用户已确认或已修改的决策回写到对应阶段文档的待确认段,不写入 .dwf/pending/;用户跳过或未确认的写入 .dwf/pending/<迭代目录名>/state.json 中对应阶段数组(含 requirements、design、breakdown、plans、todos 五个数组字段)。任意 spec 即将转为 active 前,先扫描 .dwf/pending/*/state.json 中的未确认项,用 question 提醒用户选择逐项处理、全部继续递延或只处理来自本 spec 的项。