sm-flow v4.1: add pre-apply research checkpoint to reduce rework

Based on real execution review (shandong-intent-sync), apply phase
suffered from 4-5 rework cycles due to insufficient upfront research.

Changes:
- grill: add technical implementation dimension to question pool
- apply: add mandatory pre-apply checkpoint (15-20min research)
  - read reference implementations thoroughly
  - grep key tech stack patterns
  - form tech stack checklist in decisions.md
- apply: add incremental implementation guidance
- apply: add first-module alignment check
- apply: add fast-fail rule (≥2 rework → pause)

Expected impact:
- Rework: 4-5 cycles → 0-1 cycle (-80%)
- Core feature empty impl: 100% → 0%
- ROI: 200% (invest 20min, save 60min)

Complexity: +55 lines to phase-contracts.md (+20%)
Approach: simplified version (plan B) to balance value vs overhead

Docs:
- phase-contracts.md: updated grill + apply phases
- workflow.md: added v4.1 evolution chapter
- phase-contracts-v4.1-changelog.md: detailed change log
- sm-flow-execution-review-shandong-intent-sync.md: source review
This commit is contained in:
zhuyongxin
2026-06-23 11:27:32 +08:00
parent 9b44dc1395
commit b94ee31cb1
4 changed files with 688 additions and 0 deletions
+134
View File
@@ -819,3 +819,137 @@ v4:
### 后续观察项
问题 1 和 2 暂不改协议,如果多次验证中反复出现再考虑加约束。问题 3 需要在下次 specify 阶段验证:spec scenario 是否自然地描述用户行为而非实现细节。
## v4.1:Apply 阶段前置调研增强(2026-06-23)
### 背景
基于"山东商客意向单同步接口"的执行复盘(`skill-workbench/docs/sm-flow/sm-flow-execution-review-shandong-intent-sync.md`),发现 apply 阶段存在严重的返工问题:
- **返工次数**:4-5 次重大返工
- **核心问题**:apply 阶段"想当然"开始写代码,缺少充分调研和分步验证
- **主要表现**:
- 参考实现利用不充分(设计文档提到参考实现,但直到用户提醒才去看)
- 技术栈不熟悉(RequestMsg 结构、Kafka 发送方式、Consumer 位置全部返工)
- 设计-实现偏离(验签/解密/查询接口只有 TODO 注释)
### 核心改进:Pre-apply Checkpoint
在 apply 阶段开始前增加强制性调研检查点(方案 B 简化版):
#### 修改 1:grill 阶段增加技术实现维度
在 question pool 中新增"技术实现维度":
```markdown
**技术实现维度**(新增):当 proposal 提到参考实现、或涉及项目现有基础设施时,增加技术澄清问题:
- 参考实现的具体文件路径是什么?
- 项目现有的 [请求结构/MQ/缓存/加密/工具类] 标准是什么?
- 有哪些技术点需要先调研或新建?
```
**目的**:在 grill 阶段就识别技术调研需求,避免 apply 时才发现技术栈不熟悉。
#### 修改 2:apply 阶段增加 Pre-apply Checkpoint
在 apply 阶段开始前增加 15-20 分钟的强制调研步骤:
**触发条件**(3 条):
- design 或 tasks 中提到"参考 XXX 实现"
- 需要调用项目现有基础设施(MQ/统一请求结构/工具类等)
- 技术栈不熟悉或第一次在该项目实现类似功能
**执行步骤**(3 步):
1. **完整阅读所有参考实现**(约 10 分钟)
- 从 OpenSpec design 或 tasks 中定位参考实现文件
- 如果路径不明确,通过 Grep 搜索关键类名或模式
- 逐行理解关键逻辑,提取可复用代码片段和模式
2. **Grep 关键技术栈**(约 5 分钟)
- 请求/响应结构模式
- 消息队列模式
- 统一工具类
- 异常处理和日志记录标准
3. **形成技术栈清单并写入 decisions.md**
- 项目使用的请求/响应结构标准
- MQ 消息定义和发送标准
- Consumer 标准位置和写法
- 加密/验签/工具类的标准用法
- 识别需要新建的工具类或基础设施
**输出要求**(3 条):
- ✅ 技术栈清单已写入 `decisions.md` 的 "Pre-apply Research" 章节
- ✅ 已列出所有参考实现的文件路径
- ✅ 已识别需要新建的工具类/基础设施
**快速模式支持**:micro 分档可缩短为 5-10 分钟快速扫描,但仍需形成清单。
#### 修改 3:apply 实现过程增强
**分步实现**:建议按 Controller → Service → MQ/异步组件 → Consumer/下游 顺序,每完成一层验证后再继续。
**首模块完成后对齐检查**:完成第一个接口/模块后,对比 OpenSpec design/tasks,标记"已完成/TODO";核心功能(加密/验签/核心业务逻辑)不允许空实现或纯 TODO 注释。
**快速失败**:连续返工 ≥ 2 次时,暂停并重新执行 pre-apply checkpoint 或向用户汇报。
#### 修改 4:apply 退出条件增强
新增退出条件:
- ✅ 已完成 pre-apply checkpoint(如触发条件满足),技术栈清单已写入 `decisions.md`
- ✅ 核心功能已实现或明确标注"待联调",无纯 TODO 占位
### 预期效果
| 指标 | 当前 | 目标 | 改善 |
|------|------|------|------|
| 返工次数 | 4-5 次 | 0-1 次 | -80% |
| 核心功能空实现率 | 高(3/3 核心功能) | 0% | -100% |
| 实现时间(含返工) | 2 小时 | 1.5 小时 | -25% |
| 前置调研时间 | 0 分钟 | 15-20 分钟 | +20 分钟 |
**ROI 分析**:
```
投入:15-20 分钟调研
回报:节省 60 分钟返工 + 避免核心功能遗漏
ROI = (60 - 20) / 20 = 200%
```
### 复杂度评估
**本次修改复杂度**:中等
- 文本增量:+55 行(从 281 行 → 336 行,+20%)
- 概念层级:+1 层(apply 内部增加 Pre-apply Checkpoint 子阶段)
- 强制规则:+5 条(pre-apply 触发条件、执行步骤、输出要求)
**整体复杂度**:高(但合理)
- 总行数:606 行 → ~700 行(+15%)
- 阶段数:9 个(不变)
- 门控数:4 个 → 6 个(+propose checkpoint, +pre-apply checkpoint)
**简化设计**:
- 采用方案 B(简化版),相比完整方案减少 45% 文本量和 44% 规则数
- 保留核心价值(前置调研、技术栈清单、核心功能质量保证)
- 去掉过度约束(严格执行顺序、频繁检查点、详细操作模板)
### 适用场景
✅ **强烈推荐**:
- 中等及以上规模需求(3+ 接口或涉及多模块)
- 涉及项目现有基础设施(MQ/统一请求结构/工具类)
- 第一次在该项目实现类似功能
- 设计文档提到"参考 XXX 实现"
🟡 **可选执行**:
- micro 分档的简单需求(可缩短为 5-10 分钟)
- 纯数据处理或工具脚本(技术栈熟悉)
❌ **不推荐**:
- 紧急热修复(时间紧急)
- 一次性脚本(不涉及项目标准)
### 相关文档
- 执行复盘:`skill-workbench/docs/sm-flow/sm-flow-execution-review-shandong-intent-sync.md`
- 更新日志:`skill-workbench/docs/sm-flow/phase-contracts-v4.1-changelog.md`
- 修改文件:`.agents/skills/sm-flow/references/phase-contracts.md`