先预览运行矩阵
--dry 不预测最终模型费用,但能在派发前发现范围选错或重复次数过大。
只关心能否成功时首过即停
passed 后,尚未派发的剩余 Attempt 会写成 not-dispatched。同一评估用例已经在运行的 Attempt 会通过 ctx.signal 收到取消信号;Adapter 是否及时观察它,决定这个 Attempt 能否尽快结束。
一次通过触发首过即停后才返回的同一评估用例 Attempt 不会进入结果。
failed、errored 或 skipped 不触发首过即停。需要完整通过率分布时不要打开这个选项。
给花费设置保护上限
model、上报的 token 用量和 Config/runtime price table 推得 estimatedCostUSD,再把这个估算累加进预算。usage.costUSD 是 Provider 或 Adapter 上报的 observed 值,绝不驱动预算。累计 estimate 到达上限后,NiceEval 停止派发新 Attempt;已经在运行的任务不会被中途终止。
因此 --budget 是保护上限,不是精确账单。并发任务尚未结算时,最终花费可能短暂超过设置值。缺少 model、token 用量或匹配的价格时,NiceEval 无法产生 estimatedCostUSD,usage.costUSD 也不能补上。Runner 会给出警告,而不是假装预算仍可执行。
预算耗尽会留下 budget_exhausted diagnostic,未派发位置写成 not-dispatched,命令以非零状态退出。提高预算后重跑同一范围,合格的已完成 Attempt 会沿用,只补剩余位置。
并发只控制资源占用
--budget。Sandbox 构建并发由独立的 --max-build-concurrency 控制。
需要进一步分摊环境准备成本时,阅读复用 Sandbox。需要选择只重跑失败项或全部重验时,阅读重跑与沿用结果。