import type { Report } from '../types/index.js'; import { type ExecutorVendor } from '../executors/shared.js'; /** * 评委独立性分析(单一来源,verdict caveat 与 analysis 诊断共用)。 * * LLM 评委有自我偏好偏置:偏爱与自己同模型家族产出的输出。CLI 默认评委跟随所选 runtime * (Claude 用 haiku,Codex 沿用被测模型),故敞口默认就开着。本 helper 只算客观事实(评委/输出各属哪家、有没有 * 跨厂商评委、是不是单厂商 ensemble、有没有挂 gold 校准),严重度与文案交给消费方(report-diagnostics * / verdict)决定。 * * 缓解阶梯(行业共识):换跨厂商评委 > 跨厂商陪审团 > 人工金标校准 > 警告。omk 无法强制换 key, * 故只检测 + 警告并指向 `--judge-models <跨厂商>` 和 `omk eval gold compare`。 */ export interface JudgeIndependence { /** 各评委的厂商家族(与 judgeModels 同序)。 */ judgeVendors: ExecutorVendor[]; /** 被测输出涉及的厂商家族(去重)。 */ outputVendors: ExecutorVendor[]; /** 至少有一个评委的厂商不在被测输出厂商集合里 —— 存在独立(跨厂商)评委。 */ crossVendorJudgePresent: boolean; /** 有评委、厂商全可归类、且无任何跨厂商评委 —— 自我偏好敞口(J1)。 */ sameVendorJudge: boolean; /** ≥ 2 评委且全部同一个(已归类)厂商 —— ensemble 一致性不反驳共有偏置(J2)。 */ singleVendorEnsemble: boolean; /** 本次 run 挂了人工 gold 校准(report.meta.humanAgreement 存在)→ 敞口有背板。 */ goldCalibrated: boolean; } export declare function analyzeJudgeIndependence(report: Report): JudgeIndependence;