---
name: requirement-convergence
description: 将变更必须产生的结果与为达成该结果而提出的需求区分开来，记录用户明确排除的内容，并根据结构对成本进行分级评估。当需求进入某个工作流时、设计开始之前，或提到“做到什么程度/范围外是什么/是否值得做”时使用。
---

# 需求收敛

## 目的

收到的需求往往过于臃肿、含糊不清，或指向错误的目标。能力足够的模型会将这三者调和为一个连贯的计划，并忠实地构建它——当被要求的内容本身就是错的时，也精确地交付被要求的内容。

本技能收敛的是**要构建什么**。如何构建，以及该变更需要哪些文档，都在“要构建什么”确定之后再解决。

## 收敛字段

| 字段 | 通过条件 |
|-------|----------------|
| `outcome` | 一个可观测的结果。不服务于该结果的需求即为多余。 |
| `requirements[]` | 每个与构建相关的项都标注为 `current-state` 或 `desired-future`。 |
| `nonGoals[]` | 由用户撰写，或用户声明没有范围外项。 |
| `cost` | 一个带有结构性依据支撑的分级，加上仍然存在的未知项。 |

`cost` 是一个粗略的分级，不是工作计划据以排期的工作量估算；需求无法支撑以人天为单位的估算。其未知项在决策权重上比其规模更重要。

依据所保留的用户原话进行分类，而不是依据分析器对原话的转述。要求评估的措辞、描述设想性想法的措辞，或建议某种机制的措辞，在当前收敛上下文中仅作为供判断参考的候选项保留。只有在用户明确确认之后，候选项才能进入 `requirements[]` 及长期保留的文档。

每个字段都带有各自的就绪标签：`ready`、`weak`，或 `weak-but-explicit`（弱，且用户同意暂不解决）。只有用户可以设置 `weak-but-explicit`。当所有适用字段都为 `ready` 或 `weak-but-explicit` 时，需求即视为已收敛。

各字段的判断规则见：[references/criteria.md](references/criteria.md)。

## 询问协议

使用现有的范围与成本依据来引出信息并做出判断，然后只就仓库无法回答的产品选择进行提问。`requirements[]` 和排除项的询问都依据用户提出的能力构建；分析中发现的相邻能力两者都不纳入，因此用户无需拒绝一项自己并未提出的能力。仅当某个答案会改变分析目标或所需的范围依据时，才重新分析范围与成本。

在开始前登记以下步骤，并在每个步骤完成时记录其依据：

| 步骤 | 动作 | 完成依据 |
|------|--------|---------------------|
| 1 | 陈述现有的范围事实，然后单独说明这些事实对需求意味着什么 | 列出事实及其分析依据 |
| 2 | 就低于 `ready` 的字段提问，每条消息最多两个问题 | 每个低于 `ready` 的字段一个问题 |
| 3 | 将每个答案记录为该字段的值 | 该值是用户明确选定的选项，或用户自己提供的措辞 |
| 4 | 当已记录的值仍未通过其通过条件时，重新询问一次；若用户同意将第二次回答维持原状，则将该字段标记为 `weak-but-explicit` | 两次已记录的答案，或用户同意停止 |
| 5 | 依据每个字段的通过条件进行判断，并完成该记录 | 一份每个字段都已标注的收敛记录 |

## 存储协议

| 载体 | 承载内容 |
|---------|-------|
| 当前收敛记录 | 每个字段及其就绪标签 |
| PRD 的 `成功标准` 和 `范围外` | `outcome`；用户撰写的 `nonGoals` |
| 设计文档的 `需求收敛` | 在没有 PRD 时承载同样内容，且在任何情况下都承载被标为 `weak-but-explicit` 的字段 |

不产生上述任一文档时，将记录保留在当前上下文中。

## 引用协议

1. 从提示词中读取收敛记录。
2. 将 `nonGoals` 视为当前变更排除在外的内容，将 `desired-future` 需求视为可构建的范围。未被采纳的评估性请求、设想性想法、指定的实现机制以及由智能体提出的能力不产生任何实现义务；已被采纳的 ADR 可以将已评估过的选项保留作为决策历史。
3. 将 `weak-but-explicit` 的字段视为已记录的悬而未决的问题，而非已敲定的决策，当工作依赖于该问题的解决时应上报处理。

## 质量检查清单

- [ ] 范围事实在提问之前已呈现
- [ ] `nonGoals` 来自用户，或用户声明没有范围外项
- [ ] 每个适用字段都为 `ready`，或经用户同意后为 `weak-but-explicit`

## 参考资料

- [references/criteria.md](references/criteria.md) — 各字段的判断规则、成本输入、挑战力度、伪装成方案的需求测试
