Skip to content
FunCoding

Search

Search docs, Skills and MCP

行为评估与 EDK

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

This page has not been translated into English yet. The original Chinese version is shown below.

行为评估验证代理做了什么,例如调用哪些工具、调用顺序与参数,而不是逐字匹配最终回答。官方 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 与模型实际评估是不同步骤,前者不会自动证明代理满足行为目标。