Skip to content

v2.2.1:句式骨架密度判据

Latest

Choose a tag to compare

@MrGeDiao MrGeDiao released this 06 Aug 07:19
· 2 commits to main since this release

v2.2.1:句式骨架也算 AI 味,按密度判

规则此前只有单句视野。同一种句式骨架跨段反复出现时,逐句看每句都成立,规则给不出判据。结果是词表清干净了,文本读起来还是能预判下一句。

二元对比按密度判,不按单句判

references/structures.md 第 1 条(二元对比)此前只有单句正反例。这版给它补上检测判据,体例对齐同文件第 20 条(破折号腔):

  • 长度归一阈值:< 300 字/词 出现 2 处以上;300–1000 字/词 3 处以上;> 1000 字/词 平均每 300 字/词 1 处以上。计数口径明确到中文按字、英文按词,代码片段 / 路径 / 命令 / 版本号各计 1。
  • 豁免先剔除再计数,上限 2 处:术语定义 1 处 + 论证骨架 1 处。超过 2 处都声称「承担论证」时不再逐条豁免:每处都说得出理由,恰恰是骨架依赖的表现。
  • 变体计入不像 A,像 B要的是 X,不是 Y,以及连续多条以否定收尾的列表项。
  • 不是 X,是 Y 倒装成 Y,不是 X 不算完成降密度。

这个缺口是有历史的:evals/benchmark-tiers.md 里 SF-40 降到观察层的第一条理由就是「操作手册只约束同段连续叠加」。当时的处理是把用例降层,没有补规则。

合同漏抄的半句补回来

references/positive-style.mdreferences/operation-manual.md 早就写了「长度、抬手和落点都太整齐」,但 SKILL.md 的 Residual Audit 只抄了「句长过匀」。SKILL.md 是行为合同单源,模型实跑按它走,于是只查句长,长短句交替的文本直接过关。

这版把 Pass 2 第 5 项改成「节奏过匀」,补回抬手和落点,并纳入句式骨架密度。structures.md 第 18 条同步从「句长均匀」扩为「节奏单调」,分列句长和骨架两个子信号。

验证

评测集从 82 扩到 84 条(47 SF + 37 SNF),新增 SF-47(跨段密集,每句都带信息)和 SNF-37(未达阈值的下边界)。

targeted 双模型盲测,Codex 与 Claude 交叉判分:

  • 新增用例四轮:L1 硬约束失败 0,SNF 误杀 0
  • 影响面回归 7 条:L1 失败 0,SNF 误杀 0/2

7 条不是抽样:全库 84 条扫描后确认 15 条含二元对比骨架,其中 7 条按新阈值行为会改变,其余 69 条对新规则是 no-op。重点验的是 SNF-29 和 SNF-30 这两条 in-place 长文误杀防护用例,它们按新判据都会在阈值上「名义命中」,双侧四次运行全部 no-op,正文逐字保留。

过程中出现过一次由本版改动引入的回归:豁免逻辑缺边界,导致双侧对 SF-47 全判 no-op。当轮发现,加豁免上限和可判定判据后修复。失败轮和修复轮都归档在 evals/results-v2.2.1.md,没有只留通过的那一轮。

已知限制

  • 密度判据给了模型一个合法的停手点:SF-39 改到阈值之下就停,留下评测集逐条点名的另外两处骨架。本版不动。这属于「答案不唯一」还是「规则说不清」需要更多样本才能判,现在改就是围着单个用例长例外。
  • Codex 侧在部分用例上降密度不完整(倒装充数、覆盖不全),属 L2 风格层,按分层门槛不阻塞发布。
  • 本版没跑 84 条全量。

另外,.claude-plugin/ 的 version 从 2.1.0 同步到 2.2.1,v2.2.0 那次漏了。

完整变更见 CHANGELOG;验证记录见 evals/results-v2.2.1.md