跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

行为评估与 EDK

编写验证工具行为的 eval,使用静态校验、重复运行和 JSON 报告检查质量。

行为评估验证代理做了什么,例如调用哪些工具、调用顺序与参数,而不是逐字匹配最终回答。官方 eval 位于 evals,文件后缀为 .eval.ts 或 .eval.tsx。

编写一个评估

明确目标工具行为,为读写场景在 files 元数据中准备工作区,再通过 rig.waitForToolCall 或工具参数断言验证执行。不要仅断言回答里包含某句话,也不要只写文件却不验证真实模型行为。

元数据需使用静态 suiteName、suiteType 与用例名称,每个用例提供非空 prompt。文件操作限制在 rig.testDir 内,保持默认工具集合,不通过覆盖 settings.tools.core 人为删减工具。

选择稳定性策略

允许的 policy 为 ALWAYS_PASSES、USUALLY_PASSES、USUALLY_FAILS。官方接受标准要求新 eval 从 USUALLY_PASSES 开始,在 nightly 数据证明稳定后再提升;不要仅凭一次本地通过标记 ALWAYS_PASSES。

本地运行示例:

RUN_EVALS=true npx vitest run evals/my-test.eval.ts

至少重复 3 次,检查模型波动,再执行静态校验。这与集成测试新增用例至少五次 deflake 的要求不同。

EDK 工具

命令作用
npm run eval:inventory静态扫描评估文件,生成清单
npm run eval:inventory -- --json输出机器可读清单
npm run eval:inventory -- --root /path/to/other/repo指定其他根目录
npm run eval:validate检查结构和评估规范
npm run eval:validate -- evals/my-test.eval.ts校验单文件
npm run eval:report默认递归收集 evals/logs 下的 report.json 并按模型汇总
npm run eval:report -- /path/to/logs指定报告目录
npm run eval:report -- --json输出 JSON 汇总

校验错误和警告

错误包括文件命名、非法 policy、缺失静态元数据、缺失 prompt、动态用例名、无效工具引用、缺少正向工具断言,以及读写场景未配置 files。错误会返回退出码 1 并阻断相应 CI。

new-evals-policy 是警告级别,提示新用例不应直接采用 ALWAYS_PASSES;它不会仅凭这一条返回 1。静态校验通过也不能代替实际运行或稳定性验证。

汇总评估结果

先让 Vitest 输出 JSON report.json,再用 eval:report 关联清单中的 policy 并计算各模型通过率。官方提供指定 evals/vitest.config.ts、模型环境变量和输出目录的工作流示例;模型需采用当前可用值。

报告聚合示例:

npm run eval:report -- evals/logs --json > aggregated_report.json

将模型、运行条件和重复次数一起保留,避免把不同条件的通过率直接比较。EDK 的静态 inventory/validate 与模型实际评估是不同步骤,前者不会自动证明代理满足行为目标。