用途:该技能面向 Runner Evals 家族,用于新增或扩展 Paperclip Runner 协议评测的定义、roster、断言或报告夹具,并保持来源可追溯与窄范围验证。它针对的是真实 Runner/provider 会话对种子化 mock 控制平面的评测;产品浏览器、服务器、数据库与 Daytona 覆盖属于 add-product-e2e-eval,不在本技能范围。
定位与准备:通过 PAPERCLIP_ROOT 定位 Paperclip 检出,或在检出中执行 git rev-parse --show-toplevel;在 Git 之外可检查工作区根(如 ~/paperclipai/paperclip),并确认所选根包含 packages/paperclip-runner 与 tests/runner-e2e。通过 PAPERCLIP_EVALS_ROOT 或发现的同级目录定位 paperclip-evals。先阅读 doc/evals.md 与 packages/paperclip-runner/docs/runner-protocol-live-evals.md,再检查最近的既有 case、roster、schema 与报告测试。定义与编写的 case 放在同级 paperclip-evals/evals/paperclip-runner;Runner 集成、聚合、查看器与发布行为放在 packages/paperclip-runner。名称与文档中需明确控制平面边界。
结构:同级 eval README 是具体地图:case 在 cases/,公司夹具在 fixtures/,运行时/模型设置在 configs/,选择在 rosters/,维护的 campaign 成员在 campaigns/live-direct-full.json。程序需要时更新 inventory/coverage 映射;仅新增文件不会加入维护的 campaign。
验证:在 Evals 仓库根,将以下无 provider 检查适配到所改的 case 与 roster;仅当单独的可靠性计划变更时才运行其验证器:
python3 evals/paperclip-runner/tools/eval_program.py validate
--case evals/paperclip-runner/cases/get-task-context.json
--config evals/paperclip-runner/configs/live-codex-pinned.json
python3 evals/paperclip-runner/tools/run_live_roster.py validate
--roster evals/paperclip-runner/rosters/live-mini.json --run-id validate-new-case
python3 evals/paperclip-runner/tools/run_live_campaign.py validate
--campaign evals/paperclip-runner/campaigns/live-direct-full.json
python3 evals/paperclip-runner/tools/reliability_campaign.py validate
--plan evals/paperclip-runner/campaigns/paperclip-runner-reliability.json
编写要求:用邻近的正负 grader case/夹具校准新断言,包括 grader 必须失败关闭的畸形或缺失证据。保留既有机器处置与 grade;产品、模型/provider、评分与基础设施标签是分析注释,不是重写分类器的指令。编写一个有界 case,带确定性语义断言与可检查结果,声明预期操作、状态效果、provider lane/profile、超时与重试策略及所需证据。不要对隐藏推理评分,不要从 provider 终止消息推断成功,不要编造对话/工具证据。公开输出遵循经审查的投影:可发布脱敏夹具对话与白名单工具结果;原始可信工件、凭据、密钥、私有引用与隐藏推理不可发布。
实时运行:获授权时,固定 Paperclip commit 与精确 40 字符 paperclip-evals commit,选择最小可用 roster,并保留完整来源与成本记录。契约或命令变更时更新权威详细文档,并从 doc/evals.md 链接而非复制 Runner runbook。公开报告保持不可变并使用经审查投影。