muse-agent-example/docs/2026-08-01-评测harness改造设计.md
zizi 927aafedaa 框架(设计): 评测 harness 改造六条概念原则落 SoT
- 新增 docs/2026-08-01-评测harness改造设计.md:意图(三层目的,放弃证据独立性)、边界(物理vs逻辑隔离是种类差)、六条原则、三条独立评审收敛依据、实现项清单
- 领域索引§3:单一基底、分层权威、分区治理(评测独立性不由物料位置承载)
- 05§7:访问分离非隔离+引擎单点强制+run_type钉死、oracle读侧红线、从预防迁到发现
- 06§7:COMPLETED轮次封存、代价明账、常设不变量
- 08§5:代价明账(外部可审计性换全文可走查)、访问分离非隔离
2026-08-01 01:12:20 +08:00

7.6 KiB
Raw Blame History

评测 harness 改造设计(概念层)

目标读者:创始人。状态:概念设计已定稿(三条独立概念评审收敛),实现细节后续进行。 本文记录评测 harness(replay-eval)从"仓外密封 vault"迁到"一切落库"的概念决定:明确的意图、清晰的边界、六条概念原则及其依据。实现(引擎强制、常设不变量、完成判据重设计等)另起任务。 关联 SoT:领域索引 §3、05 §7、06 §7、08 §5(本文原则已落进这几处)。

1. 改造的意图(明确)

评测 harness 的根本目的有三层,分属不同的主人:

  1. 防泄漏(实验有效性):writer 不能看到目标章答案。这一条从来不是仓外 vault 在服务——它由 as_of 冻结、泄漏审计、盲评输入边界这些逻辑机制保证。
  2. 留存卫生:全文、oracle 答案、完整 prompt 不能漏进 Git、不能漏进对外报告。这是 vault 真正服务的。
  3. 证据托管 + 独立性:迁移回执给出证据监管链;证据放在另一个物理底座,意味着即使生产库被破坏,评测证据还在,评测仍能充当对生产系统的外部见证。这一条过去从未写成目的,是隐性目的。

改造的真实意图是理念转变,不是技术简化:把评测纳入"一切落库、单一事实源"。它对前三层中的两层半忠实甚至更强(append-only 比 0700 更不可变、评测候选隔离可机械验证),但静默放弃了第四层——证据独立性:评测证据从此与生产库共享同一个信任根,从"独立见证"降为"系统自身账本里的一类行"。

意图的明确表述:改造服务留存卫生与防篡改(且强化),放弃证据底座独立性(换可观测性与全文可走查)。这是单用户本地场景下的刻意取舍,不是无损迁移。

2. 边界(清晰)

物理隔离与逻辑隔离不是强弱的同一种东西,是两种不同种类的东西:

  • 物理隔离 = "不可能":评测物料不在生产访问域里,越界在拓扑上不成立,不依赖系统自己的正确行为。
  • 逻辑隔离 = "被禁止":物料在同一访问域,靠规则(run_type、状态机、访问控制)隔开,完全依赖系统在每个访问点永远正确地执行规则。

改造后,评测与生产同库,边界靠:run_type(eval/production)+ 候选状态机(评测候选 DB 级禁接受)+ 访问控制(raw 默认不进检索)。这是逻辑隔离,不是物理隔离——继续叫它"隔离"是第一个泄漏点,应叫"访问分离 / 引擎强制"。

边界的结构性弱点:边界锚在标记(run_type / eval_draft)上,必须正确传播到每个派生产物、并在每次读取时被正确检查——而没有一个集中的强制点,是分布式约定。最戏剧性的路(评测正文→正式书)防御最厚、破了会被看见;真正脆的是安静的派生路(评测卡喂生产检索、评测评分混进生产质量视图、run_type 被翻),防御薄、破了没人知道。防御的轻重是反的。

3. 六条概念原则(全认)

  1. 升级口号:把"一切落库、单一事实源"改述为"单一基底、分层权威、分区治理"——库是唯一存放处(基底统一),但正式内容与评测区是不同治理区;评测独立性由 run_type + 四层隔离 + oracle + 盲评 + 人审承载,不由物料位置承载。
  2. 把代价写成明账:在 SoT 明说"评测证据与生产共享同一信任根,是单用户场景的刻意取舍,换可观测性 + 防篡改,放弃证据底座独立性 / 外部可审计性"。不假装没丢。
  3. 救回 COMPLETED:完成判据必须核对"本轮声明要产出的 raw 集合"=="实际落库集合"才置完成;"有行落库了"不是判据。一道不可能失败的门不是门。
  4. 强制收拢到引擎一个点 + run_type 钉死:让评测行对生产读默认不可见由数据库单点强制(生产只读角色对评测行默认不可见,显式可审计 opt-in 角色才可见);run_type 插入后不可变(或引擎约束使 (eval, accepted) 永不可达)。打结构弱点,一次覆盖所有派生路。
  5. 从"靠预防"迁到"靠发现":逻辑隔离永远做不到完全预防,必须靠常设不变量持续抓越界——没有评测派生卡绑定到生产、没有评测质量结果出现在任何生产视图、没有正式正文块的来源能追溯到评测候选。违反即报警。从物理隔离迁到逻辑隔离的那一刻,必须同时从"靠预防"迁到"靠发现"。
  6. oracle 读侧硬红线 + 改词:把"oracle / 全文不进任何模型输入上下文、只供人走查"写成可机械验证的红线(写侧已有硬强制,读侧不能只靠查询纪律);把"隔离"统一改成"访问分离 / 引擎强制"——机械验证全绿之前,不许说"密封从物理变逻辑"。

4. 概念依据(三条独立评审收敛)

三条独立概念评审(意图/目的论、边界/隔离、一致性/哲学)独立得出,高度一致:

  • 共识:改造概念上成立,拆掉了一个假二元性——仓外 vault 的"外在性"从来是幻觉(同一台机器、同一个 agent 治理,rm 一个 0700 文件比绕过 DB 触发器容易得多)。评测真正的独立性在裁判标准(oracle/盲评/人审),不在物料位置。搬库不是降级,是把力气从错处挪回对处。
  • 共同指出的欠款:
    • 代价被写成纯赚(证据独立性 / 外部可审计性 换了全文可看性,文档叙述成纯进步)。
    • 口号没说出让它安全的"分区治理"("单一"在做意识形态工作,侵蚀真正的分区)。
    • 完成判据退化("已落库"趋恒真,丢"封存"内涵)。
    • 边界锚在可变分布式标记上,安静路径防御最薄。
    • oracle 读侧软边界。
    • 认识论底色:这是带锚点的自我评估,不是独立评估,终极锚点是创始人——哲学不该把它包装成"独立评测"。
  • 底线:边界守得住,对单用户本地工具甚至可能比文件时代更硬——条件是强制压进引擎、标记锚死不可变、配一套常设不变量持续发现越界。现在的规格是"约定强度",还配不上"隔离"这个词。

5. SoT 落点(已落)

原则 落点
1 升级口号 领域索引 §3(单一基底、分层权威、分区治理)
2 代价明账 08 §5(raw 边界:用外部可审计性换全文可看性,明账)
3 救回 COMPLETED 06 §7(轮次封存:核对声明集合 == 实际落库集合)
4 强制收拢 + run_type 钉死 05 §7(引擎单点强制、run_type 不可变)
5 从预防迁到发现 05 §7 / 06 §7(常设不变量)
6 oracle 读侧红线 + 改词 05 §7(oracle 不进模型上下文红线;"隔离"→"访问分离")

6. 实现(后续,本文不展开)

以下为概念决定的实现项,另起任务:

  1. 引擎单点强制:生产只读角色对评测行默认不可见 + 显式评测可见角色;run_type 不可变约束(或 (eval, accepted) 不可达约束)。
  2. COMPLETED 重设计:轮次封存核对"声明 raw 集合 == 实际落库集合"。
  3. 常设不变量:评测卡不绑生产、评测分不进生产视图、正式正文来源不追溯到评测候选——持续跑、违反即报警。
  4. oracle 读侧红线:可机械验证"oracle/全文不进任何模型输入上下文"。
  5. 术语统一:全文"隔离"→"访问分离 / 引擎强制"。