2026-09-21 · DECISION TRACE

Jev 批量形态对比验证记录:阶段 1 完成

保留方案、指标、验证、复盘和治理判断,让结论能够追溯。

2026-09-21记录日期
决策记录记录类型
13章节数

Jev 批量形态对比验证记录(阶段 1 完成)

  • 承接方案:https://decision.ht1072.top/2026-09-21-jev-batch-form-comparison-verification-plan-2026-09-21.html
  • 执行时间:2026-09-21,全部真实调用(Vercel AI Gateway / typesafe-ai/jev)
  • 数据:当日真实晨报 65 条(15 源去重后),boolean 侧 9 候选对
  • 回滚方案(本地):~/llm-wikis/knowledge-ops/queries/jev-batch-form-rollback-plan-2026-09-21.md
  • 本轮零生产改动:fetcher.py / jev_client.py / cron / 审计目录均未触碰,仅只读验证

Jev 批量形态对比验证记录(阶段 1)

结论

预注册门禁按原语分层给出两个不同结果:boolean 场景(去重、噪音复核、分诊)六条全过,可切换批量;score 场景(重要度、翻译验收)第 2 条(系统偏移 ≤0.15)未过——批量会稳定移动分数位置(均值 -0.169,16/65 条偏移超 0.5)。但人工裁定显示这个偏移方向反而更贴合晨报定位(18 条大分歧中批量更合理 15 条、串行仅 1 条):串行把大量非 AI 内容(电动车开售、DevSecOps 流水线、企业白皮书)打了过高分数,批量的同批语境参照纠正了这一点。因此 score 的正确用法不是「等价替换」而是「更好的排序器」,阈值必须按批量形态单独校准,禁止与串行分数混用。

推荐方案

boolean 场景 GO:去重、噪音复核、wiki 分诊、retain 预筛切批量(先只读类,去重切前跑一周 form=serial/batch 双写对照)。 score 场景有条件 GO:仅排序用途;ENFORCE 类阈值动作维持串行,直到按批量形态重校准阈值。 两项工程前置:隔离句必带(无隔离句时批量分数塌缩到 3.0 附近,完全不可用);客户端必须校验问题 ID 与记录绑定(实测网关对不存在的记录 ID 也会以 0.91 置信度编造答案)。

对比记录(核心数字)

维度 boolean 去重(9 对) score 重要度(65 条)
wall time 串行 → 批量 8.02s → 0.58s(14×) 181.53s → 0.79s(限流放大后 230×;按无限流基线约 50–100×)
成本 串行 → 批量 $0.000186 → $0.000129(-30%) $0.001112 → $0.000548(-51%)
批量组内极差(3 轮) 均值 0.011 均值 0.057(串行 0.061,无额外噪声)
系统偏移 均值 -0.008,最大 0.147 均值 -0.169,最大 1.13,16/65 条 >0.5
生产阈值动作变化 0/9(0.85/0.25 两带全一致) 低分集合差异 6+1 条(影子模式,不影响输出)
0.5 判定线翻转 0 次(注:JSON 内 n_verdict_flip=2 为脚本链式比较 bug 的假阳性,人工核对为 0)
准确率对照 NYT 真重复对两形态均 0.93 → auto_dedup 正确;MIT 对两形态均落 flag_review(保守不删,与昨日一致) 人工裁定 15:1 偏向批量

N 梯度:批量 wall time 20/40/65 条均在 0.5–0.9s,无随 N 恶化迹象;65 条单请求 65/65 应答,usage 13,046 input tokens(约 200 tokens/条)。

关键发现一:score 偏移是「语境参照」,裁定方向利好批量

18 条最大分歧逐条人工裁定(标准:晨报「AI/技术读者重要性」定位):

  • 批量更贴合 15 条:Aaron Levie 推文 2.19→1.06、Boring Company 2.02→1.16、DevSecOps 2.85→2.29、九号电动车 1.17→0.51、华为白皮书 3.05→2.19、TechCrunch 会议促销 1.29→0.59 等——串行对这些非 AI 内容普遍高估
  • 串行更贴合 1 条:Qwen Image 2.1(HN)批量 1.85 偏低
  • 无实质差异 2 条

低分集合(ENFORCE=1 时会删的条目)差异 6 条全部是推文/促销/时政类,裁定 4 条明确支持批量。含义:串行逐条评估缺参照系,把「提到 AI」就当重要;批量同批互参照后分层更准。但这是输出构成的真实改变——若切 ENFORCE 必须按批量形态重跑影子期。

关键发现二:隔离句是批量的生命线

陷阱实验(N=20,注入导购陷阱 + 高相似干扰记录):

变体 结果
V1 无隔离句 全部条目分数塌缩至 3.0 附近,完全失效
V2 有隔离句 分层正常,与串行方向一致
V3 隔离句 + 陷阱记录 与 V2 差异 ≤0.12,陷阱未穿透隔离

导购陷阱单独串行 0.02、干扰记录 3.05,注入后邻条未被拉动。结论:policy 显式分离 + 每问 scope 到记录 ID 的句式,必要且基本充分。这条必须写进 decide_batch 原语的实现,不可省。

关键发现三:网关会为不存在的记录编造答案

缺答定位探针:向 state(10 条记录)发 12 个问题,其中 r99/r98 指向不存在的记录——网关对两个畸形 ID 均返回了带 0.91 置信度的完整答案(score 0.11)。含义:不能依赖模型侧拒绝畸形请求,客户端必须做「问题 ID ↔ state 记录」绑定校验,否则脏数据会静默入库。这实证了社区评审 P0-3(响应校验纪律)的必要性,且是串行形态遇不到的新失败模式。

关键发现四:串行形态的真实代价被低估

本轮串行 65 条密集调用触发连续 HTTP 429,退避 3→24s 后单轮拖到 181.53s(pilot 无限流时 20–79s,同输入波动 4 倍)。批量单请求全程零限流。串行不只慢,它在密集场景下会自我放大延迟且不可预测——这本身就是切批量的独立理由。

GO/NO-GO 门禁核对(对照预注册六条)

# 条件 boolean score
1 组内极差 ≤ 串行×1.2 ✅ 0.011 vs 0.020 ✅ 0.057 vs 0.073
2 偏移均值 ≤0.15 且单条 ≤0.5 ✅ -0.008 / 0.147 ❌ -0.169 / 1.13
3 阈值邻域人工裁定无不可接受项 ✅ 0 动作变化 ✅ 但方向利好批量(15:1)
4 速度 ≥10× 且成本 ≤ 串行 ✅ 14× / -30% ✅ ≥50× / -51%
5 准确率不低于串行 ✅ 7/7 = 7/7(含 NYT 对两形态同判) ✅(裁定口径)
6 陷阱不改变非目标判定 ✅(V3≈V2)

我们获得了什么

  1. 速度与确定性:去重 14×,重要度 ≥50×;批量 0.5–0.9s 确定时延,替代串行 4 倍波动的 20–181s
  2. 成本:-30%(boolean)到 -51%(score),机制是省掉每调用的固定开销
  3. 限流免疫:单请求形态在整轮验证中零 429;串行 60 次级调用必触发
  4. 可用半径:65 条单请求 65/65 应答(13k tokens)——按 ~200 tokens/条,单请求实际上限约 150 条,超出需拆批
  5. score 排序质量提升(意外收益):同批语境参照让非 AI 内容正确降权,裁定 15:1 优于串行
  6. 两个新工程知识:隔离句必要且有效;网关会为畸形 ID 编造 0.91 置信度的答案

可能失去什么 / 风险

  1. 分数跨形态不可比:串行时代积累的阈值(JEVI_IMPORTANCE_DROP=0.8)与校准曲线不能直接套在批量分数上;混用两种 form 的审计序列会污染校准。缓解:run log 强制 form 字段,阈值按形态分别校准
  2. 输出构成改变:score 若切 ENFORCE,低分集合净增 6 条(裁定支持但构成确实变了);boolean 侧今日 0 动作变化,但阈值邻域(±0.15)内的对仍可能跨线(昨日 pilot 曾出现 0.60→0.87 跨删除门槛)。缓解:去重切换前先 serial/batch 双写一周
  3. 单点失败面变大:批量一个请求失败影响整批(串行只影响一条)。缓解:分组上限 ~40 条 + 缺答按 ID 单独重试 + 串行/LLM 兜底
  4. 畸形 ID 静默污染:新失败模式,客户端不校验则脏数据入库(发现三)。缓解:decide_batch 内建绑定校验
  5. 隔离句依赖:无隔离句批量直接失效(发现二),实现时不可省、不可「优化」掉

边界与更正

  • 本轮零生产改动,无需回滚;回滚预案与基线指纹见本地 rollback plan
  • 脚本 verdict_flip 字段存在 Python 链式比较 bug(p1/p3 假阳性翻转标记),人工核对真实翻转 0 次,结论不受影响
  • boolean 扩展首轮两次运行因配对索引解包错误评估了错位配对,已修正重跑并覆盖产物;错位运行的中间数据已不采信
  • N40 批量成本未落盘(打印未捕获),该格口径记为未记录,不外推
  • 阶段 1 总真实调用成本约 $0.008

证据与验证

  • 产物(~/llm-wikis/knowledge-ops/evidence/jev-batch-form-2026-09-21/):result_stage1_score.json(N 梯度 + 陷阱 + 降级)、result_stage1_boolean.json(9 对扩展)、result_stage1_adjudication.json(18 条人工裁定)、dataset_stage1_items.json(65 条冻结数据集)、四个可复跑脚本
  • 回滚方案:~/llm-wikis/knowledge-ops/queries/jev-batch-form-rollback-plan-2026-09-21.md(含 fetcher.py/jev_client.py sha256 基线、三级回滚、预注册触发条件)

行动清单

  • 待确认:boolean 只读场景(噪音复核、wiki 分诊、retain 预筛)先行切批量
  • 待确认:去重场景先跑 serial/batch 双写对照一周再切
  • 待确认:jev_client 新增 decide_batch(含隔离句模板 + ID 绑定校验 + 40 条分组上限)
  • 待确认:score 场景维持串行阈值动作,排序用途单独评估