跳转到内容

模块 XII — 质量、评测与测试

模块 XII 回答一个问题——我的智能体是否仍在做正确的事?——方法是对照带版本的黄金套件 为候选输出打分,并将结果作为规范化的跨模块证据发出。它是一个智能层(Intelligence-layer)模块:它度量, 不运行被测对象,也不对基础设施采取行动。本页是评测模块当前能力的参考,以及它诚实的边界。

它度量什么(以及它从不运行什么)

Section titled “它度量什么(以及它从不运行什么)”

XII 是度量层,不是执行层。候选输出抵达它时已经产生——来自测试沙箱(模块 XVII)、来自 CI、内联于请求之中, 或作为采样的真实会话信号——XII 对照一个套件的各个用例为其打分。XII 唯一会调用的模型是裁判(用于 llm_judge 评分器); 它从不运行被测的智能体或模型本身。产生输出是沙箱的职责,而非 XII 的职责。

评分器集合是可插拔的。确定性的纯内置评分器覆盖了常见契约——exactcontainsnot_containsregexjson_validjson_equalnumeric_range。与它们并列的是一个 llm_judge 评分器,它通过 Judge 端口调用模型,依据评分准则进行打分。

一个套件(suite)是带版本的黄金数据集:它持有自身的用例、一个默认评分器、一个通过阈值和一个回归阈值。 用例是仅追加的,且每个版本不可变——修正一个用例会铸造一个新的 suite_version,从不就地编辑, 因此产生任何过往裁决的数据集始终是可重建的。

一次**运行(run)**为套件中的每个用例打分,聚合出 scorepass_rate,并持久化三样东西:仅追加的逐用例证据、 一个可变的运行聚合,以及一个核心 EvalResult——规范化产物(SuiteSubjectKindSubjectIDScorePassedOccurredAtMetrics),合规(XIII)和 UI 无需了解 XII 自身的表即可读取它。运行同步执行; 某次运行上的 SSE 流回放已持久化的运行(逐用例帧,然后一个摘要),它不进行驱动。 相对于基线的回归会设置 regressed 并写入一个核心 FindingKind = eval_regression),并尽力在总线上发出 finding.reported,供交付模块(健康/通知)路由。在读取侧,**记分卡(scorecards)**按被测对象 聚合通过率、平均分和趋势,并导出为 CSV/JSON。

候选输出从不被持久化——无论来自哪个来源。逐用例结果只存储一个单向的细节哈希,以及一个供 UI 使用的、 经过钳制和清洗的标签;脱敏由处理器在存储前完成,从不假定存储层会做。监视器(monitor)为真实会话的行为信号打分 ——它的状态、发现数量、最高严重度以及 token/成本数字(取自核心的 SessionFindingCostRecord 信号) ——而从不对原始输出文本打分,平台根本不持久化原始输出。黄金固件(golden fixtures)是唯一受限的例外: 经操作员授权、需主动选择加入、非生产内容,由处理器在写入前钳制,以便一个套件实际上能够被运行。

裁判校准、偏差缓解与 CI 回归门

Section titled “裁判校准、偏差缓解与 CI 回归门”

裁判的裁决只有在经过度量后才被信任。一个由人工标注的校准集(通过引导式 olivares evals label 会话构建) 喂入一次校准运行(calibration run),该运行对照人工参照来度量裁判:与其 95% Wilson 区间一同给出的吻合百分比、 Cohen’s kappa(在类别不平衡下仅凭吻合度站不住脚)、附带分母的灵敏度/特异度,以及一个冗长度偏差相关性。 该报告是仅追加的证据;目标——吻合度 ≥ 0.85 一个定义好的 kappa ≥ 0.6——可以逐次运行提高,但绝不能降低。 一个人工标签全为通过的集合无法度量经偶然性校正的吻合度,也证明不了任何东西。

偏差缓解是内建的且被度量的:裁判提示词强制在裁决之前进行推理(该分析在传输途中被丢弃——最小化数据), 并指示不要因长度而给予奖励;A/B 比较的可选成对(pairwise)模式将每个共享用例评判两次,呈现顺序互换, 仅当两个顺序一致时才宣布胜者,并报告所度量的 position_consistency 比率。

回归门(regression gate)POST /gate,CLI evals gate)将上述一切转化为一个阻断式 CI 裁决: 相对于基线的回归、低于套件阈值的通过率,或一个未校准的裁判都会使该门失败(退出码 1); 缺失裁判凭据则降级为一个已声明的警告,绝不静默通过。CI 中的裁判成本由以下机制控制:确定性的带种子用例采样、 一个以内容 + 裁判模型固定版本 + 提示词版本为键的裁决缓存,以及一个拒绝超出上限消费的 FinOps 预算预检。 摆脱失败门的唯一途径是受治理的覆盖(governed override)——管理员级、书面理由、经审计—— 它改变的是 CI 重新校验所依据的有效裁决,绝不改变已记录的那个。每个报告的比率都附带其分母和 95% 区间; 完整的方法论与来源参见仓库中的 docs/EVAL-METHODOLOGY.md