- proposal/design/specs/tasks:将固定 5 阶段重构为可配置 pipeline(discuss + pipeline + archive 三明治结构) - 引入 stage 完成判定(文档落地基线 + 可选 validate 实质门禁)与 finish 硬门禁 - 保留 explore 会话记录 session-ses_1357.md 作为思考溯源
3.7 KiB
3.7 KiB
Why
当前 Rune 把 5 个固定阶段(discuss→plan→task→build→archive)硬编码在 6 处源码里(types/cli/assembler/scanner/defaults/adapters),用户无法自定义阶段流程。不同项目需要不同的工作流(有的要 code-review 阶段,有的不需要 design),但框架不给出任何灵活性。更严重的是,唯一的不可逆操作 finish(归档移动目录)不校验前置阶段是否完成——agent 可以跳过任意阶段直接归档,流程约束形同虚设。
需要一套可配置但可强制的流水线模型:用户自定义阶段,CLI 用"文档落地 + 可选 validate"作为完成判据,finish 硬门禁拦住跳过。
What Changes
- BREAKING 移除固定的 STAGES 常量和 5 个 Stage 接口,替换为通用 StageConfig 结构
- BREAKING 移除 cli.ts 里 5 个硬编码 command,替换为从配置动态生成的 stage 命令
- BREAKING 移除 assembler.ts 里 5 个专用 assembleXxxPrompt 函数,替换为 1 个通用 assembleStagePrompt
- BREAKING 移除 scanner.ts 里 planCompleted/buildUnlocked 等固定语义函数,替换为配置驱动的完成判定
- 引入三明治结构:
discuss(固定,pipeline 之前,无门禁,不产文档)+pipeline(可配置的线性阶段序列)+archive(固定,pipeline 之后,终端收尾) - 每个 pipeline 阶段产出且仅产出一个
<stage-id>.md文档;文档存在 = 基线完成 - 每个阶段可配置可选的
validate函数(JS,接收 changeDir),通过 = 实质完成 finish升级为硬门禁:所有阶段实质完成才允许归档- 默认 pipeline 拆成 5 个阶段:
[requirements, design, plan, task, build](把旧 plan 的 3 文档拆成 3 个线性阶段,消除多文档特例) discuss命令保留,行为不变(输出讨论提示词)- 新增配置 schema:
stages数组,每项含id/prompt/可选validate
Capabilities
New Capabilities
pipeline: 可配置的流水线模型——配置格式、stage 结构(id/prompt/validate)、默认流水线、stage id 命名规则stage-completion: 阶段完成判定机制——文档落地(基线 done)+ validate 函数(实质 done)、两档门禁(软门禁挡 stage 命令、硬门禁挡 finish)flow-commands: 流程驱动 CLI 命令——discuss(固定前置)、动态 stage 命令(软门禁)、finish(硬门禁+归档)、status(审计可见性)
Modified Capabilities
(无——openspec/specs/ 为空,全部为新建。)
Impact
- 源码重构(6 处固定阶段渗透点全部替换):
src/types.ts:移除 STAGES + 5 个 Stage 接口,新增 StageConfig/PipelineConfig 类型src/cli.ts:5 个硬编码 command → 从配置动态注册 stage 命令src/core/assembler.ts:5 个专用函数 → 1 个通用 assembleStagePromptsrc/core/scanner.ts:固定语义 → 配置驱动的通用扫描+完成判定src/core/config.ts:新增 pipeline schema 校验(stage id 唯一性、字符集、validate 语法)src/defaults/config.ts:5 个固定 prompt → 默认 5 阶段 pipeline 配置src/adapters/opencode.ts、src/adapters/claude-code.ts:for(stage of STAGES) → 从配置注入
- validate 执行引擎(新增):解析 JS 函数字符串 + 注入 changeDir + 执行 + 捕获结果/异常
- finish 门禁(新增/修复):归档前校验所有阶段实质完成
- 配置 schema 变更:用户现有
.rune/config.yaml的 stage 配置不兼容(BREAKING),需提供迁移指引或 init 重新生成 - 测试:scanner 完成判定、validate 执行、gate 逻辑、动态命令注册均需新测试覆盖