Skip to main content
你修好了 Agent 的一个工具调用 bug,想确认它真的修好了。一整套评估要跑一个小时、花几十美元,而这次改动只影响其中几道题。 NiceEval 会记住每道题上次的结果。再次运行同一个 Experiment 时,没受这次改动影响、上次已经有结论的题直接沿用旧结果,其余的重新跑。你不需要手动挑题。

运行前先看计划

加上 --dry,NiceEval 只列计划,不调用模型,也不创建 Sandbox:
每一行是一次 Attempt。reuse 后面是要沿用的旧结果 locator;execute 后面是要重跑的原因。上面第二行的 input-identity-changed 表示这道题的输入变了,例如你改了评估用例、Fixture 或模型。 结果和你预期的不一样时,先看原因。例如你只改了报告里的分组名,却看到整批 execute,说明某个会影响结果的输入也一起变了。

哪些结果会被沿用

一个旧 Attempt 同时满足下面几条才会被自动沿用:
  • 它已经有明确结论,passed 或 failed。errored 说明上次没跑成,总会重跑。
  • 评估用例、Fixture、模型、Agent、判分标准和运行条件都和这次相同。
  • 它的耗时没有超过这次的 timeout。
  • 这次的 --rerun 没有要求重跑它。
  • 这次没有用 --keep-sandbox 要求真实执行。
只改 Experiment 的 description 或 labels 不会让旧结果失效。评估用例文件不同:文件内容一变,这道题就会重跑。

控制重跑范围

单独写 --rerun 等于 --rerun failed,已经通过的题不会重跑。要连通过的一起重做,必须写 --rerun all。 --rerun 只影响这一次运行,不会改动已有的结果。

确认旧结果在新配置下仍然成立

有时改动会让 NiceEval 判定旧结果不能沿用,但你知道它其实不受影响。例如你给 Agent 加了一个日志开关,这道题的行为完全没变。NiceEval 不会替你猜,需要你明确接受:
accept 会新建一个 Run 引用这个旧 Attempt,原 Attempt 保持不变。要接受多条时,把所有 locator 写进同一条命令,NiceEval 会先检查全部输入,不会只接受一半。 怎样取得候选 locator、接受前要核对什么,见审阅并采用历史 Attempt。

跑完之后看结果

运行结束时,终端的 NEXT 面板会列出这次新建的 Run,并给出在终端和浏览器里查看它的两条命令:
沿用的题和重跑的题都会出现在这个 Run 里,通过率按完整的一批题计算。不要在 exp 还没结束时用 show --experiment 看结果,那时可能还没有任何已发布的结果。 查看结果的完整方式见查看运行结果。沿用和重跑的判定原理见 Runner。