niceeval exp,不需要额外配置:
- 评估不通过、运行出错或被中断时,进程以非零状态退出,CI 自然变红。
- 加
--json时,最后一行是这次运行的 receipt,里面有新建的 Run ID,后续步骤可以用它读取结果。 - 加
--junit <path>时,会写出 JUnit 文件,让 CI 平台按测试用例展示结果。
决定什么情况让 CI 变红
CI 是否变红只看进程的退出状态。下面任一情况都会以非零状态退出:- 通过制评估有未通过的 Attempt。
- 计分制评估有显式
.gate()没有满足,例如测量值低于.gate(minimum)的最低值。 - 有 Attempt 运行出错(
errored),或计划要跑的 Attempt 没有全部得到结果。 - 运行被中断,或结果没能保存。
.gate()。没有全局的 strict 开关,CI 和本地读的是同一份评估源码,判定结果一致。
运行评估
- 退出状态:CI 用它决定这一步成功还是失败。
--json的 NDJSON 输出:前面的行描述运行进度和诊断,最后一行是 receipt。- JUnit 文件:给 CI 平台读取并展示。
.niceeval/record.sqlite 里,事后查看都从那里读。
在 GitHub Actions 里配置
下面的步骤保存 JSON 输出,同时把niceeval exp 的退出状态正确传回 CI:
set -o pipefail 和 exit "${PIPESTATUS[0]}" 时,退出状态来自 tee,评估失败也不会让 CI 变红。
模型凭据作为 CI secret 注入命令需要的环境变量,例如上面的 ANTHROPIC_API_KEY。不要把凭据写进 Experiment、receipt、JUnit 或日志。每个 Agent 读哪个变量见配置与环境变量。
在后续步骤读取这次的结果
运行开始后,NDJSON 的最后一行是 receipt。它的receipt.createdRunIds 列出这次新建的 Run,后续步骤用它打开结果:
error:。这时直接修复命令、Experiment 或选择条件,不要猜测 Run ID。
让 CI 日志保持可读
CI 日志适合看运行进度和诊断。要细查结果,人在本地用 receipt 里的 Run ID 运行niceeval show --run <run-id> 或 niceeval view --run <run-id>;脚本和 AI 先运行 query discover。不要把进度和诊断行当作长期保存的结果格式。