评估如何运行
Eval 定义任务、断言和需要的 Fixture。Experiment 选择 Eval,并声明 Agent、模型、并发、预算与其他运行条件。Adapter 连接被测系统;Sandbox 提供隔离的执行位置。 Runner 为每个选中的 Experiment 建立一个 Run。Run 列出本次应有的 slots,因此它定义结果计算的分母。每个 slot 最多有一个 Member。 Member 表示这个 slot 被哪个 Attempt 占据。Attempt 的origin 与当前 slot 一致时是 origin;采用了其它 Run 的 Attempt 时是 reference。Attempt 始终在自己的 origin Run 下保存一次,引用它的 Member 不复制业务事实。
Record 保存已发布的事实
Record 位于.niceeval/record/。它可以整体复制或进入 Git,但应用代码不读取其中的内部结构。
内部 Core 保存 Run、Member、Attempt 与精确关系;Verdict、Usage、断言与诊断等业务事实
保存在 owner-local Attachment 中。
writer 写完一个 Run 的 Core 与 Attachments 后,最后创建 complete。没有这个标识的目录不是已发布事实;reader 忽略它,并给出 incomplete-run warning。需要不同结果时,运行新的 Invocation,生成新的 Run。
Sample 决定比较范围
用户用不带 locator 或--run 的命令选择身份仍匹配当前项目的全部结果,或用 locator、--run 选择历史事实。内部 host 从 frozen Record 形成可以独立
显示的纯 AnalysisSample;reader 与 live handle 不属于公开 API。
project-current 扫描全部 published Run,并读取 Evaluation 与 Eligibility identity 事实。
只有 Experiment、Eval、attempt ordinal、evaluation kind、input identity 和 config identity 仍匹配当前项目的 slots 才会进入 Sample;选择不按时间只留一个 Run。
--run 选择保留具名 Run 的完整 expected-slot 分母;project-current 则以匹配的 slots 建立当前分母。每个已选 slot 都是 included、not-recorded、core-invalid 或 excluded。selection 建立框架后,其它业务 Attachment 的问题不能再悄悄缩小分母。
Projection 与 Report 组织已选事实
官方 opaque projector 把内部事实形成 typed view。Projection 将结果与 Sample 对齐,形成ProjectedSample。Calculation 用这些值计算通过率、成本或诊断分布;Page 与 PageFamily 再把结果组织成报告页面。
一次 Report 形成一份不可变的 ReportExecution。它不保留 reader、路径或延迟 I/O。show、view 与静态导出只消费这份 execution。
view 发生变化时会构造下一份 execution。完整 rebuild 才替换正在显示的结果;rebuild 失败会保留 last-good execution,并显示问题。
交付报告
niceeval show 在终端显示报告。niceeval view 在本机显示网页。niceeval view --out <目录> 导出自包含静态报告站;需要固定历史范围时可以传一个或多个明确 --run。
静态报告站只消费导出时完成的 ReportExecution。浏览器不读取源 Record。发布步骤见发布静态报告。