Skip to main content
NiceEval 里的值只有两个家:
  • 配置写进代码——CLI flag、experiments/ 下的 experiment 文件、根目录的 niceeval.config.ts。跑几次、超时多久、并发多少、judge 用哪个模型、默认看哪份报告,全都在这里,没有对应的环境变量。
  • 密钥放环境变量——API key、provider token。再加上 NO_COLOR 这类描述”输出到哪个终端”的事实。
所以同一个值只有一条来路。niceeval exp --dry 打印出来的就是真正生效的值,不用担心某个环境变量在背后改了它。CLI 与运行时文案是英语;浏览器 view 自己提供中英切换。

配置:想让这个值活多久,就写在哪一层

同一个值出现在多层时,按 CLI flag → experiment → eval → config → 内置默认 取,前面有值就不看后面。config 是默认来源,不是覆盖层——评估用例自己声明的 timeoutMs 不会被项目默认压掉。 只想这一次不一样——写在命令上:
这个实验一直这样——写进 experiment 文件:
agentmodelflags 只能写在这里,没有对应的 flag——换 agent 或换模型是复制一个 experiment 文件的事,这样每次运行对着谁跑都记在快照里,事后能复现。 整个项目共享——写进 niceeval.config.ts

niceeval.config.ts 能放什么

每个字段的类型和完整说明在 defineConfig 参考。flag 全表在 CLI 参考

环境变量:只有密钥和终端两类

下面就是 NiceEval 会读的全部环境变量。每个 agent、Sandbox 和 Judge 只认自己那几个名字,不会在环境里翻找别的 key。 judge 想用别的变量名装 key,在配置里指过去:
网关地址本身也不方便签入仓库时,不需要 niceeval 提供什么环境变量——配置是代码,自己读就行(.env 在这之前已经加载完):
区别只在于:变量名是你的项目定的,不是 NiceEval 内置一个名字然后到环境里猜。 本地把密钥放进 cwd 下的 .env,CLI 启动时自动加载(不覆盖已经存在的环境变量),不用每次 export
.env 是投递密钥的地方,不是第二个配置文件——往里写 NICEEVAL_TIMEOUT 这种东西不会有任何效果。CI 里同样只传密钥:

想调这些值时写到哪一层

配置项没有环境变量层,所以下面每一项都只有一条来路: Judge 的 key 只从 NICEEVAL_JUDGE_KEY(或 judge.apiKeyEnv 指定的变量)读,端点只从 judge.baseUrl 读。被测应用把标准的 OPENAI_* 挪作它用时,Judge 不会跟着串味。

接着看

defineConfig 参考

每个配置字段的类型与完整说明。

CLI 参考

命令、flag 全表与退出码。

写 experiment

哪些值属于一次具体运行。

CI 集成

在 CI 里传 secrets。