le-spec v1.0.0:Le SPEC 智能需求分析与 SPEC 生成总控 skill——真实集成 grilling/grill-with-docs(domain-modeling) + think + openspec(CLI 1.16.1 + 7 个 openspec-* skills,均经 skills.sh 装入 ~/.agents/skills 并软链四 runtime);七阶段工作流(识别/十类分拣/Grill 访谈/Think 挑战/反向验收/OpenSpec 生成/四视角审查)复杂度三档自适应;状态 state.md + 调用账本 ledger.jsonl 双持久化支撑中断恢复与真实调用核验;依赖检查 deps_check.py 分级报缺+精确安装命令,ledger.py append/check/tail;四类回合终止停点(批准前不编码为硬约束);测试 A-I 九项全过:两场景 fresh-context 子代理多轮实测(4 轮访谈+变更+中断恢复+strict validate 双项目通过),账本 28 条真实调用(grilling×9/think×2/openspec CLI×14),独立子代理审查实测抓出自审遗漏的 2 blocking;已知限制 7 项如实入库(reports/test-report.md)
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
# Phase 4:需求反向验收规程
|
||||
|
||||
**问题意识**:Phase 4 检查的不是"文档漂不漂亮",而是**需求是否明确到足以形成规格**。核心一问:
|
||||
|
||||
> "一个完全没有参与讨论的资深工程师现在接手开发,哪些重要产品行为仍然需要他自己猜测?哪些必须回头找需求负责人确认?"
|
||||
|
||||
## 执行方式(按优先级)
|
||||
|
||||
1. **子代理独立审查(首选)**:用 Agent 工具派 fresh-context 子代理(general-purpose 或 Explore)。提示词要点:
|
||||
- 角色:资深开发工程师,第一次见到这个项目;
|
||||
- 输入:只给 state.md 路径(+ 已有 openspec specs 路径,如有)——**不给会话历史、不给 Le SPEC 的阶段叙事**,确保视角独立;
|
||||
- 任务:逐条检查下列清单,输出"我会被迫猜测/必须确认"的清单,每条注明影响哪个功能点与后果严重度;
|
||||
- 产出格式:问题列表(问题/影响/严重度建议/建议澄清方式)。
|
||||
2. **无子代理能力时的降级**:自审前显式重置角色("放下前文立场,作为首次接手的工程师仅凭 state.md 判断"),只允许引用 state.md 与项目文件内容。**必须在产出中声明"本轮为同上下文自审,独立性弱于子代理审查"**——不装作独立。
|
||||
|
||||
## 检查清单
|
||||
|
||||
- [ ] 用户流程有断点(走不到下一步/回不去)
|
||||
- [ ] 功能之间缺关联规则(A 发生时 B 如何)
|
||||
- [ ] 数据关系歧义(谁拥有谁、一对多还是多对多、删除级联)
|
||||
- [ ] 状态机不完整(缺状态、缺转换、缺终态)
|
||||
- [ ] 权限与业务边界不明(谁能做什么、越界怎样)
|
||||
- [ ] 异常场景缺处理原则(失败/超时/并发/空数据)
|
||||
- [ ] 需求间冲突(同一对象两种定义)
|
||||
- [ ] 未经确认的重要默认假设(state.md 里的 [默认] 项逐条复核用户知情度)
|
||||
- [ ] 验收判据缺失(做完了怎么算"对")
|
||||
|
||||
## 分级与处置
|
||||
|
||||
| 级别 | 判定 | 处置 |
|
||||
|---|---|---|
|
||||
| blocking | 不澄清就无法实现核心行为 / 两种理解导致完全不同的产品 | 终止回合向用户澄清(用 grilling 单轮格式,记账本) |
|
||||
| major | 影响正确性但可从已确认决策推导 | 推导入 state.md 并标注依据;推导不了升 blocking |
|
||||
| minor | 边缘场景、可延后 | 记开放问题,进 SPEC 的"非阻塞事项" |
|
||||
|
||||
更新后**只复核受影响项**,不重跑全清单。清零 blocking → 进 Phase 5。
|
||||
Reference in New Issue
Block a user