审慎开发(/dev-prud)
Prudent-dev(prud 取自 prudent,审慎)在任何代码存在之前前置执行 FMEA 式失效模式枚举,然后让这份风险登记册驱动后续的计划、实现与验证。它是五档开发流之一——风险优先哲学:其他流关注代码写出后的审查,dev-prud 则在第一行代码写下之前就制造好审查弹药。
方法论根基:FMEA(IEC 60812——设计阶段失效模式枚举与 RPN 排序)、ISTQB 基于风险的测试(Risk Exposure = Likelihood × Impact)、Boehm 风险驱动螺旋模型(每圈迭代以风险分析开场)。
工作流
1. 澄清 @advisor 苏格拉底循环——批量提问、矛盾检测,
最多 3 轮;悬而未决项转为显式假设
2. 枚举 @advisor 表面模型 → 绑定表面元素的失效模式
→ SEV×PROB 评分 → 可移植性自检 → top-N 排序
3. 存档 docs/risk/<topic>.md——Tier A(强制层)/ Tier B(观察层)
4. 确认 用户门禁——或 auto-advisor full 模式代理确认(FACTUAL、≥ 8)
5. 计划 @architect——每条 Tier A 风险映射到一个具名设计决策
6. 实现 @<lang>-dev(域路由)——Tier A 缓解措施是硬性要求;
完成前按 test-scope.md 层级跑测试
7. 验证 循环(默认 5 轮):@qa 从 Tier A 验收标准派生登记册测试
(第 1 轮)→ 主 agent 跑套件(bug-fix floor 层级)→
@code-review 登记册审计 + 完全独立的登记册外红队派发
(永不见登记册)→ 域路由修复 → 复跑复核
8. 汇报 验收报告——四分类 + 非穷尽声明风险登记册
存放在 docs/risk/<topic>.md(与 docs/plan/ 同一惯例)。每条风险按如下评分:
Risk Exposure = SEV × PROB(各 1–5)
| 层级 | 规则 | 义务 |
|---|---|---|
| A——强制层 | 分数 ≥ 16,或 SEV 5 × PROB ≥ 3 | 具名缓解措施、验收标准、计划映射、逐条验证。Tier A uncovered 即阻断循环。 |
| B——观察层 | 其余全部 | 仅存档;抽查;永不阻断。 |
Tier A 验收标准不会停留在文字层面:验证循环第 1 轮即派发 @qa 把每条标准物化为可执行的回归测试。一条风险能携带的最强证据,就是一个断言其失效模式不会发生的测试——测试失败与 Tier A uncovered 同级阻断循环,通过的登记册测试则是审计中的最高证据等级。
防泛化机制
直接问"这个功能可能有什么 bug"只会产出万金油填充物。枚举 dispatch 强制:
- 表面模型先行——数据对象与不变量、状态与转移、外部接口、actor 与权限、时序/并发。没有锚点的风险不允许存在。
- 绑定——每条风险指名它攻击的表面元素并给出具体触发条件。"竞态条件"不合法;"退款回调先于本地事务提交到达 → PAID→REFUNDING 读到不一致状态"才合法。
- 可移植性自检——把 feature 名逐字替换成别的 feature 后仍然成立的风险即为泛型填充物,划掉。
对盲区的诚实
登记册的召回率事前不可知,因此验证循环会发起一次完全独立的 @code-review 派发,全程不接触登记册——锚定效应会使其失效——其在登记册之外的每个发现都回写登记册并打上 missed-by-enumeration 标签。最终报告把每条风险归入四类——已缓解 / 设计上不可达 / 遗留接受 / 登记册外新发现;Tier A 的遗留项必须用户明确签核;报告永远携带声明:登记册非穷尽。
选型指南
| 场景 | 选择 |
|---|---|
| 晚期 bug 代价高昂(支付、鉴权、迁移、不可逆操作) | /dev-prud |
| 需求含糊,只想澄清、暂不开发 | /grill-me |
| 事后双审足够 | /dev-review |
| 大型自主多阶段目标 | /dev-ultra |
| 小改动、文档、一次性脚本 | /dev-quick |
用法
# 关键任务功能——默认完整登记册(top 50)
/dev-prud 实现退款 API,要求幂等与部分退款
# 较小变更的聚焦登记册
/dev-prud 为 webhook 增加指数退避重试 --top=20
# 大型 diff 的深验证循环
/dev-prud 用户表迁移到分区表 --top=80 --max-rounds=8参数:--top=N(枚举上限,默认 50,范围 10–200)、--max-rounds=N(验证-修复循环,默认 5,范围 1–99)。