# 裁剪决策规则集质量评分基准 v1 — workgraph-planning-methodology-trial > 生成者:innovator-digest(Phase 2 Digest) > 输入:`../hunt/knowhow_v1.md`(336行)+ `../hunt/sources.json` + `complexity_signals_v1.md` > 日期:2026-08-23 > 首次训练(v1) --- ## 〇、这套 benchmark 评的是什么,与 prd/sdd 两次训练的关键差异 **评分对象不是一份具体产出物(PRD/SDD/规划记录),而是"一套裁剪决策规则集"本身**—— 下一阶段 Evolver 要产出的是一份决策表/决策树:给定一个 task-goal,能确定性地判断 `planner.json` 五个节点(`brd/prd/sdd/benchmark/validator`)里哪个该裁、哪个该留、 裁了之后下游 `needs` 怎么改。本文档定义怎么给"这份决策表/决策树"打分,不是给某一次 具体的规划记录打分。 这个差异带来一个关键约束,`prd`/`sdd` 两次训练不需要面对:**评分对象在真实世界里 0 正样本**(`knowhow_v1.md` 块C总体发现 #1:"全公司当前可查到的5份work graph规划记录 ……裁剪发生次数为0")。所以本 benchmark 不能像 `sdd-planning/benchmark_v1.md` 那样拿 "真实规则被下游打回"的案例做核心锚点——没有这样的案例。改为:**benchmark 本身的判据 必须能脱离"是否命中过真实裁剪案例"这件事而独立成立**,靠仓库硬约束(五项校验+数据契约 级联)+ 外部方法论(Cynefin/T-shirt/INVEST-SPIDR/YAGNI)+ Hunt 发现的隐藏规则自行推导, `calibration_cases.md` 用假想候选规则集来验证这套判据是否真的有区分度,替代"真实反面 案例自检"这一步。 --- ## 一、维度设计(5 维度 + 权重,满分 100) | 维度 | 名称 | 判据来源 | 权重 | |---|---|---|---| | D1 | 信号可读性 | complexity_signals_v1.md〇 门槛 + Hunt 汇总"根因" | 15 | | D2 | 确定性/可复现性(核心锚点) | 任务书要求 + knowhow B1"图的规划质量没有硬校验"原文 | 30 | | D3 | 约束合规性 | complexity_signals_v1.md 二 + knowhow B2 needs 级联推导 | 20 | | D4 | 覆盖完整性 | 任务书要求,对照 C4"只讲BRD就交差"的失效模式 | 20 | | D5 | 矫枉过正平衡 | knowhow §A4 YAGNI 张力 + 块B 五项校验"不因任务简单而放松" | 15 | D2 单项权重 30,全场最高,且带否决/封顶双重机制——理由:`agent.md` Step4 现状(见 `industry_avg_score.md` 真实基线)恰恰是"裁剪授权写得清楚,但完全没有机械可复现的输出 映射",如果 D2 只是普通加权项,一份文字漂亮、逐节点都有话说、但换个 LLM 跑一遍就换一张图 的规则集,会被 A 组高分稀释成体面总分,重演 `prd-methodology-trial`(76.4分教训)与 `sdd-planning`(68分教训)训练时踩过的同一个坑。 --- ## 二、逐维度评分标准 ### D1 信号可读性(权重15) 判据锚点:`complexity_signals_v1.md`〇"每个信号必须满足的硬性门槛"——规则集里每条触发 条件必须能直接从 task-goal 原文机械核对,不能是"任务简单/复杂"这类同义反复。 | 分数 | 判据 | |---|---| | 5 | 每条规则的触发条件都指向具体可从文本判定的信号(如复用 S1-S5 或同等清晰度的自定义信号,且给出判定方法),无任何"简单/复杂"类形容词单独作为判据 | | 4 | 基本满足,但存在 1 处触发条件依赖上下文推断、未显式给出判定方法的模糊表述 | | 3 | 存在触发条件用"任务复杂/简单"类词,但该规则同时搭配了至少 1 个可读信号,不是唯一依据 | | 2 | 多条规则以"任务是否简单"作为唯一或主要判据,缺乏可操作的文本判定方法 | | 1 | 规则集通篇只有"任务简单就裁、复杂就不裁"这类同义反复,或干脆没有给出任何判定方法(只给权限和例句、不给判据),没有任何可从文本机械核对的触发条件 | **否决规则**:若规则集**全部**触发条件都落在 1 分档描述的范畴(无一条可机械核对)→ D1 判 1 分,且触发总分强制封顶 15(见三、3.2)。这条规则不是额外惩罚,是任务书明确要求 的校验点:"只会说'任务简单就裁剪'这种同义反复规则的候选应该在'信号可读性'维度被打到 很低分/触发否决"。 ### D2 确定性/可复现性(权重30,核心锚点) 判据锚点:同一个 task-goal,两次独立跑这套规则集,应该给出同一张图(相同节点集合+相同 的 needs/produces 调整)。这是当前 `agent.md`"综合 Step1/2/3 三份输入"纯 LLM 直觉判断 的已知缺陷(knowhow B1 引用原文:"图的规划质量没有硬校验,五项只保证图结构合法,保证不了 它适合这个任务……完全依赖 LLM 单次判断")。 **判定方法**:检查规则集是否把每个信号取值组合映射到唯一确定的输出(节点集合+needs调整 方案),而不是留"视情况而定/建议/可以考虑/综合判断"这类空间给临场发挥。 | 分数 | 判据 | |---|---| | 5 | 关键信号组合都有唯一确定的输出(节点集合+needs调整方案),不存在"具体看情况"的留白;对同一 task-goal 重复应用规则会得到逐字相同的图 | | 4 | ≥90% 的常见信号组合有确定输出,剩余组合虽有留白但对最终图形状影响很小(仅影响节点内部描述用词,不影响节点是否保留) | | 3 | 存在明确的信号组合缺输出映射(规则集自己承认"这种情况需要人工判断"),但已列出的映射部分是确定的 | | 2 | 多数信号组合的输出依赖"综合判断/酌情处理"这类模糊指令,重复应用同一任务大概率给出不同的图 | | 1 | 规则集本质上只是把"靠LLM直觉判断"换了个说法(如"根据任务感觉决定裁不裁"),或干脆没有给出任何信号到输出的映射,只有权限声明和单一例句 | **判据来源**:C4 是这条维度要重点防范的失效模式的真实证据——规划记录给出的理由是 "brd/prd/sdd 描述 why/how/what,完全对应骨架语义"(`complexity_signals_v1.md` S4 校准 段引用),也就是说真实世界里唯一一次可比样本给出的"判断依据"是骨架字面结构匹配,不是 任何可复现的信号评估。一套好的规则集必须能明确说出"如果换成 S4=是 的任务会怎样",而不是 只会重复骨架自带的字面语义。 ### D3 约束合规性(权重20) 判据锚点:`complexity_signals_v1.md` 二·硬约束——裁剪任何一个有 `produces` 的节点前, 必须检查图内是否有其他节点的 `needs` 依赖它的产出 kind,否则触发 `rule=data-contract` 被引擎拒绝(knowhow B2 逐条核实"砍掉 brd 会发生什么",全文摘录)。 | 分数 | 判据 | |---|---| | 5 | 每条裁剪结论都显式给出"若裁掉此节点,下游哪些边的 needs 需要如何调整"的具体方案(改成 `required:false` 或从 `needs` 列表移除该 kind),且不会破坏五项校验中任一项 | | 4 | 多数裁剪结论给出了 needs 调整方案,1 处遗漏但影响范围小(该 kind 本身没有其他消费方) | | 3 | 至少 1 条裁剪结论完全没有考虑下游 needs 依赖,留给执行者自己发现(等同制造一次真实的 data-contract 拒绝) | | 2 | 规则集系统性忽视 needs 级联检查,多条裁剪结论会直接触发引擎拒绝 | | 1 | 规则集甚至没有意识到需要检查五项校验/数据契约,纯粹讨论"要不要这个节点"而不管图结构合法性 | **判据来源**:这是 Hunt 调研本身推导出的隐藏规则(不是仓库文档里现成写好的检查表)—— `README.md` 数据契约规则写了"needs 的每个 kind 在图里都有产出方,否则整张图被拒", 但 `agent.md` Step4 的裁剪授权段没有提及这条检查,`knowhow_v1.md` 文末把它列为 "建议补进 agent.md" 的第一条改进项,是本次训练判据体系里唯一一处"仓库现状本身也有 缺口"的维度,正因如此才把它设计成独立可评分的维度,而不是假设规则集自然会覆盖它。 ### D4 覆盖完整性(权重20) 判据锚点:任务书原文点名的失效模式——"不能只讲 BRD 一个节点就交差",`planner.json` 五节点(`brd/prd/sdd/benchmark/validator`)必须每个都有明确规则。 | 分数 | 判据 | |---|---| | 5 | 五个节点均有清晰规则(哪怕结论是"validator/prd 地基级不可裁,理由是XX"),无遗漏 | | 4 | 四个节点有明确规则,1 个节点未提及但从上下文可合理外推(如通篇讨论其余四个,隐含 validator 照旧保留) | | 3 | 只覆盖 2-3 个节点,其余未提及 | | 2 | 只覆盖 1 个节点(通常是 BRD,重犯 `agent.md` Step4 例句"只讲BRD"的问题) | | 1 | 完全没有区分节点,笼统一句"按需裁剪"了事 | **判据来源**:`agent.md` Step4 唯一给出的裁剪例句就是"不需要 BRD,直接从 PRD 起步" (knowhow B1 引用),如果规则集原样照搬这条例句、不主动扩展到其余四个节点,就是重犯了 现状本身的局限,这条维度存在的目的就是防止训练出来的规则集只是把 agent.md 现有例句 换个措辞重复一遍。 ### D5 矫枉过正平衡(权重15) 判据锚点:knowhow §A4(YAGNI 与架构规划的张力:"你不能靠以后加楼层来盖摩天大楼")+ 块B 关键约束("五项校验从不因任务简单而放松,裁剪只发生在节点数量/骨架选型上")。 | 分数 | 判据 | |---|---| | 5 | 规则集同时存在明确的"保留"分支和"裁剪"分支(不是只会说"都可以裁"),且显式声明哪些约束不受任务复杂度影响(如"PRD 永不裁剪,理由是它是 benchmark→validator 边 needs 的直接依赖"、"五项校验与信号无关") | | 4 | 有保留分支,但未显式声明地基级约束"不受信号影响"这一条,需要读者自行推断 | | 3 | 规则集能保留部分节点,但保留的理由含糊(如"看着还是需要"而非信号驱动) | | 2 | 规则集事实上只会输出"裁"这一种结论方向,不管信号如何组合 | | 1 | 规则集鼓励无差别裁剪,甚至建议在任务简单时放松五项校验/数据契约这类地基级约束 | **判据来源**:这条维度直接对应任务书要求——"规则不能只会裁不会保留,要能通过 YAGNI 张力检验:地基级约束不因任务简单而放松"。knowhow §A4 明确指出 YAGNI 的矫枉过正风险是 "适用于功能与抽象层,不适用于地基级的架构决策",`planner.json` 的 `prd` 节点(是 `benchmark→validator` 边 needs 链的直接依赖)与五项校验属于这一类地基级对象。 --- ## 三、总分计算方法 ### 3.1 加权和 ``` 加权和 = Σ(维度得分/5 × 维度权重) (满分 100) ``` ### 3.2 否决与封顶规则 ``` 若 D1 = 1 且触发"全部条件都是同义反复/无判定方法"的否决条件 → 总分强制封顶 15 若 D3 ≤ 2 → 总分上限 40(规则集会被引擎直接拒绝,比"每次跑出不同图"更致命—— 不可复现好歹图能落地,不合规是直接被 rule=data-contract 拒收) 若 D2 ≤ 2 → 总分上限 45 若 D2 = 3 → 总分上限 65 若 D2 ≥ 4 → D2 不封顶(除非其他维度触发了各自的封顶) 最终得分 = min(加权和, 各已触发的上限) ``` **为什么 D3 的封顶线比 D2 更严格**:D2 低分意味着"规则不稳定,重复跑会给出不同的图"—— 这是质量问题,但图仍然是合法的、能落地跑的;D3 低分意味着"规则给出的裁剪结论本身违反 数据契约,引擎会直接拒收"——这是可用性问题,图根本跑不起来。二者都不该被 A 组高分稀释, 但 D3 的失败后果更硬性,封顶线设得更低(40 < 45)。 ### 3.3 判定等级 | 分数区间 | 等级 | 处置建议 | |---|---|---| | ≥80 | 优秀 | 可作为 Evolver 训练的正样本模板 | | 65-79 | 合格 | 可进入 Evolver 训练,标记薄弱维度供关注 | | 50-64 | 待改进 | 不建议进入 Evolver 训练,需重写薄弱维度后重新评分 | | <50 | 不合格 | 判定为"未构成可执行判据",需要重写核心维度 | **及格线(passing_score)= 65**(合格档下限),见 `industry_avg_score.md`。 --- ## 四、对任务书五条要求的逐条落点确认 | 任务书要求 | 落地维度 | |---|---| | ①信号可读性(能否直接从task-goal文本判定,不能是同义反复) | D1,含否决规则 | | ②确定性/可复现性(同一task-goal两次跑规则应给出同一张图) | D2,核心锚点+封顶 | | ③约束合规性(裁剪后的图是否仍能通过五项校验+数据契约级联检查) | D3,封顶 | | ④覆盖完整性(planner.json五个节点是否每个都有明确的裁剪/保留规则) | D4 | | ⑤矫枉过正平衡(规则不能只会裁不会保留,通过YAGNI张力检验) | D5 | 五条要求全部有独立维度落点,没有合并、没有遗漏。