SuperAPI AI 工具集

skill-eval

测试与质量

查看项目

更新于 10-15 10:04

技能介绍

用途

Skill Eval 负责仓库中技能评测(skill eval)的完整操作流程,入口为 skills/skill-eval/scripts/eval_runner.py。它覆盖对 evals/<skill-name>/ 下评测套件的校验、运行、评分、聚合与报告,并在结果被报告之前进行核验。该技能明确区分执行器(executor)与评分器(grader),并记录产物与指标。

该技能同时划定了职责边界:根据结果决定修改哪个技能或评测契约,属于 eval-quality 工作流,而不属于本技能。

主要能力

  • 静态校验评测套件(validate)。
  • 运行评测(run),支持完整运行与部分诊断运行。
  • 对已有迭代结果进行报告(report),可选与另一迭代目录比较。
  • 对已有迭代结果进行诊断性重新评分(regrade)。
  • 在报告前核验结果,读取 benchmark.md、benchmark.json、error_run_count 与 sanity 状态。

使用方式

运行授权

除非当前用户明确要求运行评测、运行基准或执行 runner,否则不得启动 eval_runner.py run、提供方子进程或新的迭代。编辑技能、查看结果、校验套件或证明质量,都不隐含授权一次新的运行。

在没有该授权时,应视情况使用静态校验或已有产物,报告“评测未运行”或等价的缺失状态,并将依赖重跑的改进、回归、token、耗时与可靠性结论标记为 Unproven(未证实)。

在近期运行显示成本高昂的完整矩阵之前,应告知用户 runner 参考所定义的预测,并在其明显超出用户预算或预期时取得用户决定。长时间运行只能通过具有已知中断行为的控制句柄启动;取消时不启动替代或重试,通过该句柄优雅中断,等待有界时间间隔,仅在仍然必要且已授权时向确切的 runner 及其子进程发送 TERM。已授权的运行不等于无限重试的授权。一旦在并发为 1 时反复出现容量或过载,另一次完整运行需要实质性变更或新的用户决定。

关键 CLI 契约

在任何起草命令的回复中,先复现以下确切形态,再添加解释:

用途 命令形态 --eval-id
静态校验 validate <suite-json> 禁止
部分诊断 run <suite-json> ... --eval-id E17 允许
完整收尾运行 run <suite-json> ... 省略;不要枚举所有 id
已有结果报告 report <iteration-dir>,可选 --compare <other-iteration-dir> 禁止
诊断性重新评分 regrade <iteration-dir> --grader-agent <provider>,可选 --grader-model <model> 禁止

不存在 --evals 或 --iteration-dir 别名。

validate 还会针对“已执行动作”措辞打印交付模式警告,例如在提示为仅响应(response-only)的期望中出现 Writes … 或 Adds …,因为沙箱无法满足提示所禁止的写入。这些警告既不会使校验失败,也不会阻止运行;它们是给质量负责人的评测设计信号,而非技能缺陷。经案例确认的警告指向将期望改写为“响应所描述的内容”。

部分诊断应保持可见的非收尾状态:未知或空 id 会在迭代创建或提供方启动之前失败;清单与基准会记录所选 id 与完整套件规模;benchmark.md 会写明 REVIEW REQUIRED。在后续未过滤的收尾运行开始之前,技能、提示、断言、夹具与证明路径必须冻结:不得有仍可能改变它们的诊断正在运行或未被阅读。

执行器、评分器与工作区不变量

执行器接收任务与声明的输入,不接收断言或案例名称。全新的评分器接收记录的输出、作为惰性上下文的原始任务、在提供时有限的仅评分器夹具事实、执行器保留的文件内容与差异(作为有界不可信数据),以及断言。任务事实决定适用性;它们不会变成输出复述义务。

with_skill 使用权威的 skills/<skill-name>/SKILL.md;绝不使用 .agents/skills、.claude/skills、宿主技能工具或缓存副本。

执行器在隔离的复制沙箱中运行,沙箱仅包含案例声明的输入;Codex 执行器在运行开始时列出所有宿主 MCP 服务器并禁用 apps connector 功能;Claude 执行器使用 --strict-mcp-config,这也会排除 claude.ai 连接器;评分器在单独的空目录中运行。绝不通过源检出中执行来绕过沙箱设置失败,也绝不让缺失的声明运行时变成被评分的技能失败。

套件定义位于 evals/<skill-name>/ 下;生成的运行位于 evals/<skill-name>/workspace/<agent>/ 下,除非用户明确要求,否则不提交。

详细 Runner 契约

在执行 run 或 regrade、起草运行序列之前;在依赖 runner 交付、记录或评分的内容之前;以及在诊断被标记或失败的单元格或报告基准或比较之前,阅读 references/runner-and-result-contract.md。起草运行序列时,复制其字面命令形态与结果核验字段,而不是凭记忆重建。

结果收尾

每次已授权的运行之后:

  1. 读取 benchmark.md、benchmark.json、error_run_count 与 sanity 状态。
  2. 从 benchmark.md 的 Failed assertions 部分开始,然后在将失败归因于技能之前,检查每个被标记单元格所记录的执行器与评分器输出。
  3. 将基础设施或评分器失败与诊断性更正,同官方聚合分开。
  4. 报告智能体与模型、完整或选定覆盖、配置与运行、已评分与已排除计数、通过率与差值,以及所有异常或无异常。
  5. 在被标记异常得到解释且所需的收尾证据存在之前,不要声称改进、回归或干净的差值。

适用场景

  • 需要以标准化方式校验、运行、评分、聚合或报告仓库技能评测套件时。
  • 需要在报告前核验评测结果时。
  • 需要对已有迭代结果进行报告或诊断性重新评分时。

限制

  • 未经用户明确授权,不得启动评测运行。
  • 不得手工运行提示词、手工记录结果、让同一智能体既执行又评分,或估算指标。
  • 不存在 --evals 或 --iteration-dir 别名。
  • 部分诊断运行不构成收尾运行,benchmark.md 会写明 REVIEW REQUIRED。
  • 关于具体收费、价格、平台支持范围等信息,资料暂未提供。