先区分执行故障与业务结论
errored 表示运行没有形成可评分的业务结果,例如目标服务未启动、协议不匹配、凭证无效、依赖缺失或 Adapter 抛错。修复执行链后重跑。
failed 表示 Attempt 已经执行完成,但一个或多个业务断言不满足。它可能正确暴露了被测系统的问题,也可能暴露了过紧或错误的判据。先读取同一 Attempt 的输入、输出、Assertion 和证据覆盖,再决定修改被测系统还是评估用例。不要把真实业务失败归类成基础设施故障,也不要为了全绿而自动重写判据。
Score Eval 的完成状态只表示评分过程结束。是否表现良好由分数和逐项 Assertion 决定;低分结果不应因为执行完成而被解释为满分。
先读懂自动重试
自动重试不需要配置。重试等待时,Attempt 的活动行会显示类似这条信息:errored,错误中会出现摘要:
在发现故障时声明影响范围
你自己检查共享服务或 Fixture 时,可以直接抛出带有影响范围的错误:ExperimentFatalError停止同一实验尚未开始的 Attempt。它适合共享服务、共享凭据和实验级配置故障。EvalFatalError只停止当前评估尚未开始的 Attempt。它适合确定性缺失的 Fixture 或该评估专用的前置资源。
test(t) callback。先把
serviceHealthUrl 换成服务的健康检查地址,再用 ExperimentFatalError 停止同一实验的剩余 Attempt:
识别运行中断开的共享服务
有些共享服务在实验开始时正常,却在运行中断开。这种失败通常由 SDK、CLI 或网络库抛出。你可以用实验的classifyFailure 识别自己的服务地址:
ECONNREFUSED 都当成实验级故障,因为 Agent 访问其他站点时也可能出现同样的错误。
修复后继续运行
止损生效后,已经失败的 Attempt 会记为errored。还没开始的 Attempt 会记为 unstarted,运行状态会显示 incomplete。
修好服务、凭据或 Fixture 后,重新运行原命令。NiceEval 会保留已通过的结果,并运行之前 errored 或 unstarted 的部分。
classifySendFailure。该字段的类型和边界见 defineSandboxAgent 参考。