benchmark_v1.md 19.1 KB

PRD 质量评分基准 v1 — prd-methodology-trial

生成者:innovator-digest(Phase 2 Digest) 输入:../hunt/knowhow_v1.md(167行)+ ../hunt/sources.json(14条来源) 日期:2026-08-23 训练对象:「工程类方法论」技能(PRD 撰写质量评分),非爬虫抓取类技能


〇、设计前提(写给后续读者,避免误判本文档意图)

这套 benchmark 不是给 prd-planning 自己用的写作检查表——那份检查表已经存在,就是 prd-planning/agent.md 本身(knowhow §3 摘录)。这套 benchmark 回答的是一个更上游的问题: 一份字面上不违反 prd-planning 任何一条判据的 PRD,能不能保证下游产出不单薄?

knowhow §4 的核心发现是:答案是"不能"。e2e-demo 反面案例的 PRD 在结构完整性/可追溯性上 接近满分,但产出依然单薄,根因是"四类东西"检查表本身对内容深度/视觉丰富度/转化路径三类 维度没有覆盖。所以这套 benchmark 必须比 prd-planning 自查表多看一层——不只是"四类东西写全 了没有",还要看"写全的东西够不够撑住产出天花板"。


一、最终维度设计(6 维度 + 权重)

维度 名称 判据来源 权重 所属组
D1 功能清单可执行性 knowhow §5-A1/A2,agent.md 表 #1/#2 20 A(结构/可追溯)
D2 异常边界覆盖度 knowhow §5-A3,agent.md 表 #3 12 A
D3 验收线索可度量性(核心锚点) knowhow §5-A4,agent.md 第16-17行+表#4 18 A
D4 BRD 可追溯性与技术中立性 knowhow §5-A5/A6,agent.md 第29/63-65/121-122行 15 A
D5 正文要求-验收线索映射完整性(产出天花板·主) knowhow §5-B8,§4.3/§4.4 反面案例核心发现 20 B(内容/天花板)
D6 内容深度下限与业务度量翻译完整性(产出天花板·辅) knowhow §5-B7/B9 15 B

A 组合计权重 65,B 组合计权重 35——B 组不是点缀分:D5 单项权重(20)与 D1(20)并列全场最高, 理由见五、benchmark 自检——纯加权和曾经在自检中把 e2e-demo 这份"结构满分但内容单薄"的 PRD 打到 76.4 分(接近"合格"档),暴露了单纯加权和无法表达"天花板"语义的问题,因此在三、总分算法 里追加了封顶规则,不是靠调权重把分数硬压下去。


二、逐维度评分标准

判据来源里出现的行号引用均指 system/agents/prd-planning/agent.md 原文行号(已在 §3 全文摘录核对)。

D1 功能清单可执行性(权重 20)

判据锚点(agent.md 第16-17行原文):"sdd-planning 拿着它能直接设计模块"。

分数 判据
5 每条功能都写清"谁/场景/做什么"且不可摊开成 ≥2 种不同实现;每条行为规则给出输入→输出确定映射+默认值(格式/顺序/编码等选项都写明)
4 功能清单完整,但 1-2 条行为规则缺默认值或某个分支未穷举,不影响主路径可实现
3 至少 1 条功能可摊开成 ≥2 种不同实现(设计者需要额外猜测),或行为规则大面积只给了"支持 XX"没给输入输出映射
2 ≥2 条功能存在歧义或行为规则大量缺失,sdd-planning 需要反复追问才能设计
1 功能清单形同虚设(如"支持导出"没有任何列/格式/顺序说明),sdd-planning 完全无法基于此设计模块

D2 异常边界覆盖度(权重 12)

判据来源:agent.md 表 #3「异常与边界:空/超长/越权/并发/失败重试时必须怎么表现」, knowhow §3 原文强调"这一类最常被整块省略"。

分数 判据
5 空/超长/越权/并发/失败重试五类中,与本次需求相关的类别全部有明确表现规则;不相关的类别在文中显式注明"不适用+理由"
4 覆盖了全部相关类别,但未显式声明哪些类别不适用(读者需要自行判断是遗漏还是不适用)
3 仅覆盖部分相关场景,或只写了泛化的"异常时报错"没有具体表现
2 仅有 happy path,零星提及异常但无法作为验收依据
1 完全没有异常与边界章节/内容(整块省略)

D3 验收线索可度量性(权重 18,核心锚点)

判据锚点(agent.md 第16-17行原文):"goal-benchmark 拿着它能直接写出可度量的验收维度", 对应表 #4「可判真假的验收线索:写'功能正常',下游只能照抄成不可度量的维度」。

分数 判据
5 每条功能/规则都挂有可操作判据(可读取的 DOM 状态/可计算的数值/可复现的操作序列),goal-benchmark 无需追问即可直接转成验收脚本
4 ≥80% 条目可直接转成验收脚本,少量整体风格类判据带一定主观性但仍可核验(如用 CSS 数值对比代替目测)
3 部分验收线索仍是"看起来符合"级别的主观描述,无法直接写脚本,需要人工目测
2 多数验收线索是"功能正常"类废话,goal-benchmark 只能照抄
1 完全没有验收线索章节,或所有条目都是不可度量的形容词

D4 BRD 可追溯性与技术中立性(权重 15)

判据来源:agent.md 第63-65行「in_scope→至少一条 PRD 功能 / out_of_scope 不许出现」+ 第29行「PRD 写技术方案是最常见的越权」+ 第121-122行「traceability 必须能逐条回扣,不是装饰」。

分数 判据
5 BRD 每条 in_scope 都能在 traceability 表里指到具体 PRD 条目,out_of_scope 零渗透,且全文没有出现具体技术方案(框架/中间件/数据结构选型)
4 回扣基本完整,但有 1 处 traceability 条目对应关系含糊,或出现 1 处轻微技术选型倾向但不影响下游自由选择
3 有 1 条 in_scope 没有被任何 PRD 条目覆盖,或 traceability 表是摆设(条目对不上/笼统带过)
2 out_of_scope 有条目被偷偷实现,或多条技术方案越权(替 sdd-planning 做了选型决定)
1 没有 traceability 章节,或 BRD 与 PRD 关联完全无法追溯

D5 正文要求-验收线索映射完整性(权重 20,产出天花板·主)

判据来源:knowhow §4.3/§4.4 e2e-demo 反面案例核心发现 + §5 候选维度 8。

判据:逐句扫描 PRD 正文(尤其行为规则/视觉风格段落)里出现的每一处描述性/形容词性要求 (例如"大图""丰富""有吸引力""简洁大气"等),检查 §4 验收线索表是否存在与之对应的、 可核验的条目(不能只是重复同一句形容词——"大图"必须转化成类似"页面存在至少 N 个 ≥XXpx 的图片/插画元素"这种可核验判据,才算"有对应")。

特殊规则:若正文完全不包含任何描述性/形容词性用语(纯功能性/数据型需求,如后台接口类 PRD),此维度视为空真(vacuously satisfied)计 5 分——不适用不等于满分掩盖,这条规则只对 "正文确实零描述性词汇"的片段生效,一旦出现任何描述性词汇就必须逐条核对。

分数 判据
5 正文所有描述性/形容词性要求都能在验收线索表里指到至少一条对应的可核验条目;或正文本身不含描述性词汇(空真)
4 ≥90% 的描述性要求有对应验收条目,剩余 ≤1 处遗漏且该处对产出观感影响较小
3 有 1-2 处明显的描述性要求(如"大图""丰富")完全没有对应验收条目,该要求可以被字面忽略
2 ≥3 处描述性要求没有验收条目支撑,或验收线索表本身系统性偏向"结构性/技术性"判据、完全回避内容/视觉主观维度
1 正文出现描述性要求,但验收线索表整体缺失或与正文要求完全脱节

D6 内容深度下限与业务度量翻译完整性(权重 15,产出天花板·辅)

判据来源:knowhow §5 候选维度 7 + 9。

判据 A(内容深度):对涉及文案/说明性内容的功能,PRD 是否只要求"非空",还是规定了最小 信息密度(最少字数/是否需要具体数据、例子、场景化描述)。

判据 B(业务度量翻译):BRD"做到什么算解决"里涉及转化/体验类的度量(如"访客几十秒内 判断是否是要找的产品"这类转化类目标),是否被功能清单中至少一条具体、可执行的功能承接, 而不是被结构性功能"顺带"覆盖。若 BRD 本身不含转化/体验类度量(纯功能性需求),判据 B 视为 不适用,只按判据 A 评分。

分数 判据
5 文案类功能有明确的最小信息密度要求(不只是非空),且 BRD 每条转化/体验类业务度量都能指到至少一条具体功能
4 两项判据中一项完全达标,另一项部分达标(如转化度量被结构性功能部分覆盖但缺关键引导)
3 两项都只是部分覆盖,或只满足"非空"这类下限没有更进一步要求
2 转化/体验类业务度量完全没有被翻译成任何功能,文案类要求也只写"非空"
1 完全没有考虑内容深度或业务度量翻译,PRD 对文案的唯一要求是"不能为空"

三、总分计算方法

3.1 加权和

加权和 = Σ(维度得分/5 × 维度权重)   (满分 100)

3.2 封顶规则(天花板机制)

knowhow §4.4 原句:"验收线索表覆盖什么维度,就决定产出天花板卡在哪"——这句话字面意义就是 "D5/D6 低分应该封顶总分,而不只是拉低加权平均"。加权平均是"稀释",不是"封顶":A 组 四个维度只要接近满分,就足够把 B 组的低分稀释成一个仍然体面的总分(本文档五、benchmark 自检里第一次尝试就踩了这个坑,76.4 分)。因此追加硬性封顶规则:

若 D5 ≤ 2 → 总分上限 45
若 D5 = 3 → 总分上限 65
若 D5 ≥ 4 → D5 不封顶

若 D6 ≤ 2 → 总分上限 50
若 D6 = 3 → 总分上限 70
若 D6 ≥ 4 → D6 不封顶

最终得分 = min(加权和, D5 对应上限(如触发), D6 对应上限(如触发))

3.3 判定等级

分数区间 等级 处置建议
≥80 优秀 可直接进入 sdd-planning
65-79 合格 可进入 sdd-planning,标记薄弱维度供关注
50-64 待改进 不建议进入 sdd-planning,需重写薄弱维度后重新评分
不合格 判定为"写虚了",需要重写核心维度

及格线(passing_score)= 65(合格档下限),见 industry_avg_score.md。


四、对 knowhow §5 十条候选维度的逐条取舍

候选 来源 取舍 落地形式 理由
A1 功能清单完整性 §5-A1 / agent.md 表#1 采用 并入 D1 与 A2 同属"sdd-planning 能否直接设计模块"这一锚点判据的两个子面(清单完整 vs 规则确定),拆成两个维度会对同一件事重复计分,合并为 D1
A2 行为规则确定性 §5-A2 / agent.md 表#2 采用 并入 D1 同上
A3 异常边界覆盖度 §5-A3 / agent.md 表#3 采用 独立成 D2 knowhow 原文强调"这一类最常被整块省略",是与 D1(歧义)完全不同的失败模式(遗漏),且高频出现在真实案例里,单独计权重才不会被 D1 的高分掩盖
A4 验收线索可判真假性 §5-A4 / agent.md 第16-17行+表#4 采用 独立成 D3(核心锚点) 任务书明确要求直接复用"sdd-planning...goal-benchmark..."原句作为锚点;D3 是这句话里"goal-benchmark"那一半的直接对应,必须独立成维度并给足权重
A5 BRD 回扣完整性 §5-A5 / agent.md 第63-65+121-122行 采用 并入 D4 与 A6 同属"不许扩权/不许漏改 BRD 既定范围"这一类判据
A6 技术中立性 §5-A6 / agent.md 第29行 采用 并入 D4 技术选型越权本质上也是"替下游做了不该做的决定",与 traceability 共享同一判定逻辑;评分标准里保留两条独立判据(traceability 完整 + 无技术选型渗透),任一违反都拉低本维度分,不会因合并而漏判
B7 内容深度是否有下限 §5-B7 采用 并入 D6 可操作化为"文案类功能是否只要求非空 vs 有最小密度要求(字数/具体名词/场景化描述)",具备可判定性
B8 正文形容词-验收线索映射 §5-B8 采用 独立成 D5(产出天花板核心) e2e-demo 案例揭示的最核心新发现,任务书明确要求独立维度+实质权重;可操作化为"逐句扫描正文描述性用语,核对验收线索表是否有对应条目",是十条候选里唯一直接可机械核对的 B 组维度,不存在"卡在哪"的操作性障碍
B9 业务成功度量→功能翻译完整性 §5-B9 采用 并入 D6 与 B7 同属"内容/体验类目标有没有被真正翻译成可执行东西",可操作化为"BRD 转化/体验类度量能否指到至少一条具体功能",具备可判定性
B10 PRD 详尽度与任务量级匹配(Appetite) §5-B10 舍弃(本轮) 不纳入评分维度 可操作性不足,具体卡在哪:要给"这个量级该写多细"设阈值,前提是先有一套任务复杂度分级标准(如 S/M/L),本仓库目前没有这套分级体系,也没有历史案例数据可供校准分级边界。强行设定阈值(比如"3 类功能以下配几行异常边界算合适")本身就是主观拍脑袋,比它想避免的主观性更强。建议记录为未来候选:若后续 DevLoop 引入任务复杂度分级机制,可回头把 Appetite 概念接入 D1/D2 的评分权重调节,而不是作为独立维度

五、benchmark 自检:对 e2e-demo 真实 PRD 打分

样本:data/companies/e2e-demo/runs/run_c7d233619784/nodes/rn_42eed93342c5/prd.md (对应 BRD .../rn_36f1845d1b53/brd.md,产出 data/companies/e2e-demo/projects/p-pyjha7/)。 真实系统记录:attempt-0.json verdict = produced,单轮过验收,无 remediation 回合。

5.1 逐维度打分

D1 功能清单可执行性 = 5 F-1~F-4 每条都写清"谁在什么场景下做什么",区块数量/顺序/滚动方式/URL 行为/响应式断点 (320/375/768/1024/1440/1920 六个具体宽度)全部给了确定的输入→输出映射,几乎不存在二义 实现空间。

D2 异常边界覆盖度 = 5 §3 列了 6 种边界场景:断点边界值、极端窄屏、文字超长换行、连续快速点击、连续切换点击、 JS 禁用容错——覆盖了本任务真正相关的"超长/类并发(连续点击)/失败降级(JS 禁用)"三类, "空/越权"在纯展示型静态页场景下确实不适用。覆盖充分。

D3 验收线索可度量性 = 4 F-1~F-4 四条验收线索全部是可编程核验的判据(DOM 节点计数、scrollY 变化、 document.location.href 前后对比、scrollWidth<=innerWidth 数学公式)。唯一弱一档的是 第 5 行"视觉风格"验收线索——"字号明显大于正文字号(视觉上一眼可辨)"仍带主观目测成分, 未完全数值化。≥80% 条目可直接转脚本,符合 4 分档。

D4 BRD 可追溯性与技术中立性 = 5 §5 traceability 表逐条把 5 条 BRD in_scope 对应到具体 PRD 条目,并明确列出 7 条 out_of_scope 均未涉及;全文未出现任何具体技术栈/框架选型(技术栈显式留给 sdd-planning)。

D5 正文要求-验收线索映射完整性 = 3 ← 关键维度 逐句核对 §2 视觉风格段"整体页面采用大字体、大图/大留白排版...不使用密集小字或拥挤布局":

  • "大字体" → §4 有对应条目("字号明显大于正文字号")✓
  • "大留白/呼吸感" → §4 有对应条目("区块间有可见的垂直间距")✓
  • "大图" → §4 验收线索表五行里没有任何一行提到图片/插画元素,产出实测 index.html 全站 0 个 <img> 标签、0 个 icon(已用 grep 核实)。这是一处明确的、正文出现但验收线索 未覆盖的描述性要求,命中 3 分档"有 1-2 处明显的描述性要求完全没有对应验收条目"。

D6 内容深度下限与业务度量翻译完整性 = 1 ← 关键维度

  • 判据 A:§2 对文案类内容的唯一要求是"标题和说明都不能为空",没有任何最小字数/信息密度/ 具体化要求。产出实测三段说明文字均为单句泛化描述(约 50-60 字),无数据、无具体案例、 无场景化细节支撑。
  • 判据 B:BRD §3"做到什么算解决"里"访客在几十秒内判断这是不是我要找的产品"是一条转化类 业务度量,但 F-1~F-4 全部是结构性/行为性功能,功能清单里从未出现任何 CTA/下一步引导 相关功能,产出实测全站没有一个可点击的"了解更多/联系我们"入口。两项判据均完全落空, 命中 1 分档。

5.2 第一次计算:纯加权和(暴露问题)

D1 = 5/5×20 = 20.0
D2 = 5/5×12 = 12.0
D3 = 4/5×18 = 14.4
D4 = 5/5×15 = 15.0
D5 = 3/5×20 = 12.0
D6 = 1/5×15 = 3.0
─────────────────────
合计 = 76.4

76.4 分落在"合格"档(65-79),接近"优秀"下限。这正是任务书警告的失败信号: 如实计算下来,这套 benchmark 第一版设计会把一份"四类东西全过但产出单薄"的 PRD 判定为 "可以进入下游"——benchmark 设计失败。

根因诊断:加权和是"稀释"机制,不是"天花板"机制。A 组四个维度分数都在 4-5 分区间, 凭 65% 的权重占比就足够把 D5=3、D6=1 这两个真正暴露问题的低分稀释成一个体面总分。这不是 权重分配错了(B 组已经拿到 35% 的实质权重,D5 单项权重与 D1 并列全场最高),而是"加权平均" 这个数学形式本身表达不了 knowhow §4.4 那句话——"验收线索表覆盖什么维度,就决定产出天花板 卡在哪"说的是卡死,不是打折。

5.3 修正:引入封顶规则后重算

按三、3.2 的封顶规则:

  • D5 = 3 → 触发"总分上限 65"
  • D6 = 1(≤2)→ 触发"总分上限 50"
最终得分 = min(76.4, 65, 50) = 50

50 分落在"待改进"档(50-64),低于及格线 65,与真实产出的实际观感(结构扎实但内容 单薄、无图无 CTA)一致,也低于"合格"门槛——这套 benchmark 在加入封顶规则后,能够正确地 不给这份 PRD 放行,即便 DevLoop 引擎本身把它判成了 verdict: produced 单轮过验收。

这个落差本身就是本次调研要交付的核心结论:现有 prd-planning 自查表 + 引擎验收链路 对"结构完整"和"内容够不够格"是两件事,前者已经被守住,后者目前没有任何节点在守。 本套 benchmark 的存在意义就是把后者显式量化出来。

5.4 结论

  • 自检证明:不封顶的纯加权和设计是错的,已修正为加权和+封顶规则的组合算法(三、3.2)。
  • e2e-demo 真实 PRD 最终得分 50(待改进),符合"这是一份应该被打回去要求补内容深度/ 视觉元素/转化路径的 PRD"的预期判断。
  • 该结果同时用作 industry_avg_score.md 的真实基线(及格线以下)。