SuperAPI AI 工具集

manage-evals

测试与质量

查看项目

更新于 10-16 11:27

技能介绍

Managing Evaluations 是 OpenHands 软件代理 SDK 提供的一项评估管理技能,用于触发评估、比较结果并将报告发布到 GitHub PR。OpenHands 的评估结果存储在 CDN 地址 https://results.eval.all-hands.dev/,每次运行由路径 {benchmark}/{model_slug}/{github_run_id}/ 唯一标识。该技能主要解决评估流程中的触发、对比与报告发布需求。

用途:

  • 触发评估运行:通过脚本命令或 PR 标签启动对指定 SDK 版本在特定基准上的评估。
  • 比较评估运行:对比两次运行的实例级结果,判断性能变化是真实回归还是噪声。
  • 发布性能报告:将比较结果作为 GitHub PR 评论发布。

主要能力与使用方式:

触发评估:使用脚本 manage_evals.py 的 trigger 子命令。示例:

python .agents/skills/manage-evals/scripts/manage_evals.py trigger
--sdk-ref <BRANCH_OR_TAG> --benchmark swebench --eval-limit 50

支持的基准测试(benchmark):swebench(默认,软件工程任务)、swebenchpro(更难的软件工程任务)、gaia(通用 AI 助手任务)、swtbench(软件测试任务)、commit0(提交生成任务)、swebenchmultimodal(带图像的 SWE-bench 任务)、terminalbench(终端交互任务)、programbench(针对黄金标准测试二进制的程序修复任务)。

触发选项(trigger 参数):

  • --sdk-ref(必填):要评估的分支、标签或提交 SHA。
  • --benchmark:要运行的基准,默认 swebench。
  • --eval-limit:评估实例数量,默认 50。
  • --model-ids:逗号分隔的模型 ID,来源为 resolve_model_config.py,默认取配置中第一个。
  • --tool-preset:工具预设,可选 default、gemini、gpt5、planning,默认 default。
  • --agent-type:代理类型,可选 default、acp-claude、acp-codex,默认 default。
  • --instance-ids:指定要评估的实例 ID,会覆盖 eval-limit。
  • --reason:人类可读的原因,会显示在通知中。
  • --benchmarks-branch:基准仓库分支,默认 main。
  • --eval-branch:评估仓库分支,默认 main。

通过 PR 标签触发评估(替代方式):给 PR 添加标签 run-eval-1(1 个实例,快速检查)、run-eval-50(50 个实例,标准比较)、run-eval-200(200 个实例)、run-eval-500(500 个实例,完整基准)。

比较评估运行: 步骤 1:找到当前 PR 的评估运行。可通过 bot 评论(all-hands-bot 发布)获取评估名称,格式为 {github_run_id}-{model_slug_short},如 23775164157-claude-son;也可从“Evaluation Triggered”评论获取 SDK 提交 SHA 并交叉引用每日元数据;或直接查询每日元数据文件: curl -s "https://results.eval.all-hands.dev/metadata/$(date -u +%Y-%m-%d).txt" 步骤 2:识别运行路径组件:benchmark、model_slug(模型名中 /:@. 替换为 -)、run_id(OpenHands/evaluation 仓库的 GitHub Actions 工作流运行 ID)。 步骤 3:验证结果是否存在: curl -sI "https://results.eval.all-hands.dev/<benchmark>/<model_slug>/<run_id>/output.report.json" | head -1 返回 200 表示运行完成且结果可用。 步骤 4:寻找基线。自动方式:比较脚本的 --auto-baseline 标志会向前回溯最多 14 天的元数据文件,查找相同基准和模型的最近一次完成运行。手动方式:检查元数据文件或其他 PR 的 bot 评论指定具体运行。 步骤 5:运行比较: python .agents/skills/manage-evals/scripts/manage_evals.py compare
"swebench/litellm_proxy-claude-sonnet-4-5-20250929/23775164157/"
--baseline "swebench/litellm_proxy-claude-sonnet-4-5-20250929/23773892085/" 或使用自动基线并发布 PR 评论: python .agents/skills/manage-evals/scripts/manage_evals.py compare
"swebench/litellm_proxy-claude-sonnet-4-5-20250929/23775164157/"
--auto-baseline
--post-comment --pr 2334 --repo OpenHands/software-agent-sdk

每次运行可用的数据:位于 https://results.eval.all-hands.dev/{run_path}/ 的文件包括:metadata/params.json(运行参数:SDK 提交、PR 编号、模型、eval_limit、触发者)、output.report.json(聚合结果:resolved/submitted/total 计数和实例 ID)、cost_report.jsonl(每实例成本数据)、results.tar.gz(包含所有输出的完整归档)。

仪表盘:可通过 https://openhands-eval-monitor.vercel.app/?run={benchmark}/{model_slug}/{run_id}/ 可视化查看运行。

结果解读:成功率 = resolved / min(eval_limit, total_instances)。50 实例样本在运行间有 ±2-4 个 resolved 实例的自然波动。应关注实例级变化(新增/丢失)以区分回归与噪声;若 resolved 实例集合相同,则差异很可能是噪声。

附加资源:参考文件 references/eval-infrastructure.md 包含评估基础设施、GCS 路径、元数据格式和工作流触发的详细文档;脚本 scripts/manage_evals.py 为独立比较脚本,支持自动基线检测和 GitHub 评论发布。

限制:资料未提供关于权限要求、运行成本、并发限制、错误处理等具体说明;部分参数默认值和行为已在上述选项中列出,未提及的部分暂未提供。