3.3 KiB
3.3 KiB
阶段 F 第三部分:评测链派发——评委智能体
日期:2026-08-23 状态:已完成(离线绿 + 真实盲评通过) 上游事实:第 3 章候选 164 已采纳入正典;候选 123(v7,被机械门拒)与 164(v9,采纳)构成真实对比盲评样本。
1. 意图
评委智能体接入框架派发,保持圈定授权隔离;盲评编排(输入防泄漏校验、草稿逐字引文校验、有界纠错、报告哈希绑定)全部复用既有可信适配层,派发桥只实现 ModelRunner 协议。
2. 设计
编排侧:取两个候选 → 匿名化(盲 ID 洗牌,映射只留编排侧工件)
→ 组装盲评输入(blind-judge v4:哈希全绑定,组装即过官方校验器)
↓
派发评委(每位评委独立新会话;任务输入 = 盲评模型输入本体,桥不附加身份)
圈定授权:实验场景无工具;生产预检开放 read_chapter_text/search_entities
↓
编排侧:草稿逐字引文校验(防编造)→ 有界纠错一轮 → 报告绑定回执哈希
↓
落库:example_quality_result(judge_kind=scoring)
关键取舍:
- 接入点是
ModelRunner协议(run_writer_blind_judge(blind_input, model_runner=...)):派发不触碰盲评合同本身。 - 隔离三层机械强制:输入侧防泄漏走查(官方校验器)、任务包与模型输入全等(桥不附加身份)、评委会话互相独立。
- 引文纪律是提示词层问题(模型可被说服):任务提示词给出 evidenceRefs 的四种 sourceType 与精确 ID 空间(逐字选用,禁拼接描述词)。
- 报告落库枚举以库级 CHECK 约束为准(
scoring),不自造未登记枚举。
3. 改动台账
| 文件 | 动作 | 原因 |
|---|---|---|
.agent/skills/score-content-quality/scripts/dispatch_judge_bridge.py |
新增 | 圈定授权白名单 + DispatchJudgeRunner(ModelRunner 协议) |
.agent/skills/score-content-quality/scripts/judge_via_dispatch.py |
新增 | 生产预检盲评入口:候选匿名化、盲评输入组装、报告落库 |
tests/skills/score-content-quality/test_dispatch_judge_bridge.py |
新增 | 离线测试(10 项):圈定白名单、任务包零身份、会话独立、失败关闭、盲评输入官方校验器回环 |
4. 验证结果
- 离线测试 10/10 通过。
- 真实盲评(候选 123 vs 164,battle 场景,opus-5):
- 前两轮草稿因引文格式被机械校验拒绝(evidenceRefs 的 sourceId 拼接描述词)——失败关闭与有界纠错按合同工作;任务提示词补全引用合同(四种 sourceType 与精确 ID 空间)后第三轮通过。
- 第三轮报告(
run-blind-judge-w12-c3-20260823T155855,judge_kind=scoring):候选 164 在 5 维中 4 维领先(设定保真/细纲保真/文风一致/叙事张力),候选 123 仅正文可读性领先 0.5 分——与人采纳 164 的决定方向一致(独立证据)。 - 落库枚举错误(误用
blind_judge,库级 CHECK 只许 detection/scoring/review/experiment)当场被约束拦下——按scoring补落库并如实收口运行。
5. 未决
- 评委圈定授权的"禁看清单越权拒绝"专项测试(总 plan 验证项)留待对照实验阶段一起做。
- 直调链终态裁决(对照实验数据)与退役项删除按总 plan 阶段 F 收尾。