# sdd-planning Evolve 迭代日志 v1 评分标准:`../digest/benchmark_v1.md`(5维度100分,D2权重30+封顶)。 测试样本:自行设计的3条PRD片段(分别偏D1接口、D3数据形态、D2可复现性/落地页交互), 覆盖 knowhow 案例1(自证脚本/结论句/风格无上限/占位退化)与案例2(正面样板)的场景类型。 - test-A:工单批量分配(接口签名 + 错误路径为主) - test-B:商品评价晒图审核(数据形态 + 状态机为主) - test-C:响应式导航栏(knowhow 案例1同类场景:视口/滚动/平滑滚动,D2 高风险区) --- ## Round 1(baseline,未改 SKILL,直接用生产版 agent.md) 用当前 `agent.md` 第2/3类描述(只有"判不合格信号"一行,无执行细则)产出三份 contract.json 草稿,按 benchmark_v1.md 打分: | 样本 | D1 | D2 | D3 | D4 | D5 | 封顶前 | 封顶后 | |---|---|---|---|---|---|---|---| | test-A | 5 | 3 | 4 | 4 | 5 | 84 | 65(D2=3触发上限65,84>65取65) | | test-B | 4 | 3 | 3 | 4 | 5 | 74 | 65 | | test-C | 4 | 2 | 5 | 4 | 5 | 82 | 45(D2=2触发上限45) | **平均分 = (65+65+45)/3 = 58.3**,未达及格线65。 ### 弱维度分析(对齐案例1的四类缺陷) - test-C(导航栏,同 knowhow 案例1场景类型)暴露最典型问题:baseline 写出 "任意视口下导航不遮挡内容、无横向滚动"——**结论句代替实测值**,且"点击平滑滚动到锚点" 没有给出 requestAnimationFrame/CSS scroll-behavior 的可复现判定方式,也没有 `content_fidelity_floor` 类退化兜底。命中 D2 三类缺陷模式中的 2 类。 - test-A/B 的 D2=3:验收判据部分可数(如"分配数量返回值"),但夹杂 1-2 处主观描述 ("审核结果决定可见性"未给判定公式),命中"结论句"轻微形式。 - 根因:`agent.md` 第2/3类当前只写了「判不合格信号」(反面清单),**没有给「怎样才算写实」 的正面操作指南**——尤其是 D2 对应的四类缺陷模式(自证式验收/结论句/风格无上限/占位退化), agent.md 里完全没有出现这四个词,模型没有被显式提醒要检查这四种具体形态。 **结论**:Round 1 平均 58.3 < 65,需要修改 SKILL。核心问题定位在 D2(可独立复现性), 与 benchmark 设计的核心锚点完全一致。 --- ## Round 2(修改后:SKILL_v1.md) ### 改动摘要(diff) 在 agent.md 原有骨架不变的前提下,只强化第2类(接口契约)与第3类(数据形态)两行的 执行深度,具体改动: 1. **第2类「接口契约」行**:在原"判不合格信号"后追加**可独立复现性四类雷区**(直接对应 benchmark D2 四类缺陷模式):禁止用实现方自带脚本冒充验收判据、禁止用结论句代替 可复算的实测数值/公式、主观风格描述必须转成可数上限、必须写占位/空实现退化兜底。 2. **第3类「数据形态」行**:追加字段命名必须对齐 PRD 术语(或显式标注映射)+ 约束 (非空/枚举/上限)必须逐字段标注在 `shape` 里,不能只给字段名。 3. **强制思维隔离**新增第 3.5 条自检项:逐条对照"四类可复现性雷区"过一遍契约里的 每一条验收相关判据。 4. 未改动:五类东西框架本身、`contract.json`/`attempt-{n}.json` 模板结构、越权判断(第5类)—— 任务要求只强化第2/3类执行深度,不重写整体骨架。 ### 用 SKILL_v1.md 重跑三份样本 | 样本 | D1 | D2 | D3 | D4 | D5 | 封顶前 | 封顶后 | |---|---|---|---|---|---|---|---| | test-A | 5 | 4 | 5 | 4 | 5 | 90 | 90 | | test-B | 4 | 4 | 5 | 4 | 5 | 86 | 86 | | test-C | 4 | 5 | 5 | 4 | 5 | 92 | 92 | 具体改进点: - test-C:改写为 `verifiable_assertions`("320/768/1440三档 document.scrollWidth<=clientWidth, 附实测数值表")+ 声明 coder 自带的滚动检测脚本"仅供自查不构成验收依据" + 风格约束加 `nav_item_max<=6` 上限 + 占位导航项也需 `content_fidelity_floor` 兜底 → D2 由 2→5。 - test-B:可见性判定改成显式公式("整体可见性 = 文字始终展示 AND 图片可见性取决于该图 审核状态,二者独立,非'由审核结果决定'这类含糊表述"),data_shapes 字段名对齐 PRD "晒图审核状态"术语并标注映射 → D2 3→4,D3 3→5。 - test-A:分配失败判据从"跳过并记录原因"细化为可枚举的 `skip_reason` 枚举值清单 (EMPLOYEE_INACTIVE/TAG_NOT_FOUND),D2 3→4,D3 也补了字段约束 4→5。 **平均分 = (90+86+92)/3 = 89.3**,已达优秀档(≥80),远超及格线65。 ### 是否需要 Round 3 连续判据:Round1→Round2 平均分提升 89.3-58.3=31.0(>2分),理论上还可继续迭代逼近满分, 但已达优秀档且任务及格线为65,投入产出比低,**决定停止迭代**,产出 v1 定稿。