bojieli/ai-agent-book/eval-dataset-design
Claude Code and agent skill by bojieli/ai-agent-book
Trust tier 3
- community
Source check pending
Checking that the SKILL.md file is still in the repository.
设计 Agent 评估数据集或单条评估任务时使用——解剖评估任务的四个组成部分、设计验证器与验收标准(含防敷衍性修复)、划分任务难度与陷阱任务、防范训练/评估数据泄漏(参数化实例、canary)、建设评估集的质量控制与长期维护、选择公开基准/自建业务集/生产轨迹回流三个来源。覆盖 τ²-bench、SWE-bench、AndroidWorld、OSWorld、Terminal-Bench、GAIA 的可迁移设计手法。
Install
npx vskill@latest install bojieli/ai-agent-book/eval-dataset-designSKILL.md
评估数据集设计
何时使用
- 从零设计评估集,或评审现有任务定义是否站得住
- 为 Agent 编写单条评估任务:工单、用户模拟规范、初始状态、验收标准
- 设计验证器:该断言终态、断言动作,还是检查必须告知用户的信息
- 评估任务被模型"猜答案"蒙过,需要提高信噪比
- 怀疑评估集已被污染/泄漏进训练数据,需要防泄漏与检测手段
- 决定自建评估集的任务从哪来:公开基准、业务集、还是生产失败回流
- 评估集上线后需要长期维护:修补环境、描述、验证逻辑与初始状态问题
核心原则
- 一条评估任务 = 四个部分:给 Agent 的工单、给模拟器的行为规范、两侧状态的初始重置、成功判定标准。缺任何一部分,任务都无法重复运行。
- 把用户的认知边界建模为独立字段,而非靠提示词约束。 用户不知晓的信息 Agent 无从推测,只能通过提问与引导获得——渐进式信息透露不是一句"不要一次说完",而是
known_info与task_instructions的拆分。 - 没有事实锚定的用户模拟器会让评估退化为两个模型相互确认。 模拟用户关于环境状态的任何回答都必须以工具返回为依据,不许编造工具结果;否则 Agent 稍加引导,用户就确认"问题已解决"。
- 验证器必须核实机器可独立复核的事实,不能采信 Agent 的自我陈述。 Agent 很容易写一篇"任务已全部完成"的报告而实际什么都没做。
- 训练集与评估集严格隔离。 答案不可从互联网直接检索、任务实例参数化生成、嵌入 canary 使泄漏可检测——三招至少用一招。
- 验收口径要有可核实的边界,防"敷衍性修复"。 "网络已恢复"不可核实;"测速评级 excellent 才算解决,poor/fair/good 均不接受"才堵得住压制症状、不除根因的糊弄。
- 高质量的评估集是修出来的,不是写出来的。 主流基准的现行形态都是初版暴露问题后逐轮修补的结果;发布前人工淘汰、发布后持续修两类问题都要预算。
- 每道题亲手做一遍。 做完问两个问题:描述是否有多种合理解释,验证器认可哪一种?蒙混过关的最低成本路径是什么,验证器拦得住吗?
- 难度分层让评估集不过时,且每层失败指向不同改进方向:基础层失败指向工具使用,中间层指向多步规划,最高层指向长序列思考。
实践模式
1. 任务解剖:四件套字段清单
以 τ²-bench telecom 一条真实任务为范本,逐项对照自建任务:
- ticket(给 Agent 的工单):只含用户会主动说出的部分。真实用户的初始表述往往只是"我上不了网",把需求澄清到可执行的程度本身就是 Agent 必须具备的能力。
- user_scenario(给模拟器的行为规范):
known_info界定用户知悉范围(姓名、号码、所在国),故障原因不在其中;task_instructions规定透露方式,并包含三类约束——情绪设定(首次修复失败后表现不满)、验收口径(仅 excellent 算解决)、事实锚定(设备状态回答必须基于工具结果)。 - initial_state(初始重置):
initialization_actions把两侧状态重置到同一起点,包括用户侧(飞行模式、漫游开关)与 Agent 侧(运营商侧配置)。 - evaluation_criteria(成功判定):四个可检查维度按需组合,外加聚合规则。
2. 四维校验与聚合规则
env_assertions验终态:移动数据可用、测速达 200 Mbps 且评级 excellent。actions验关键动作是否发生(哪些工具被哪一侧调用)。communicate_info/nl_assertions验必要信息是否已告知用户——别只查环境状态。reward_basis是聚合规则。二元奖励(只看终态)以过程颗粒度换取跨模型可比的单一数字:满分轨迹里违反"一次只做一个工具调用"的政策也不会被捕获。生产评估系统需要更多:不仅判对错,还要指出问题出在哪。
3. 验证器设计的三种模式
- 双命题验证(SWE-bench Verified):FAIL_TO_PASS(修复前失败、修复后通过,证明问题确已解决)+ PASS_TO_PASS(修复前后均通过,证明未引入新缺陷)。只验前者,Agent 可以删改妨碍通过的断言蒙混;只验后者等于未检验。另需排除自身不稳定的 flaky test。
- 深状态核查(OSWorld 式):134 个独立评估函数,拥有完整系统访问权限,查文件系统结构、进程状态、网络连接与应用内部状态;数据库任务连库核实 SQL 是否真执行,浏览器任务分析 DOM、cookie 与 localStorage 并向后端发验证请求——能抓住"表面完成、实质错误"。
- 不可伪造执行(Terminal-Bench 式):成功标准是真实构建并运行(如从源码构建内核并在 QEMU 启动日志出现自定义 printk),Agent 无法伪造输出,只能真做完全流程。
4. 难度划分与陷阱任务
- 分层标注并用于诊断:GAIA 466 题分三级——Level 1 只需一至两个工具(人类 93.9%,早期模型 30.3%),Level 2 多步思考,Level 3 复杂组合。Level 1 失败指向基础工具使用,Level 2 指向多步规划与信息整合,Level 3 指向长序列思考与复杂性管理,改进方向各不相同。
- 陷阱任务检验压力与误导下的判断力:用户声称"客服已批准取消",实际并不符合政策,看 Agent 是否维持正确判断。
- 任务集覆盖从易到难的全谱,模型能力提升时评估集不会快速过时。
5. 数据泄漏防范
- 组合多源 + 专有附件 + 精确匹配(GAIA 式):答案必须组合多个信息源才能得出,单一网页无法直接给出;部分任务配互联网上不存在的 PDF/音频/图片附件;用精确字符串匹配判定。
- 参数化模板实例化(AndroidWorld 式):任务是"将联系人 X 的电话改为 Y"这类模板,每次评估随机生成参数。三收益:回放固定操作序列失效;单模板可生成近乎无限实例;固定部分参数、只改其余,可精确测量特定因素的影响。
- 金丝雀标识符(Terminal-Bench 式):题面嵌入 canary GUID,模型能输出含该 GUID 的内容即说明基准已进训练集。它不阻止泄漏,但使泄漏可被检测。
6. 质量控制与长期维护
- 发布前人工淘汰:SWE-bench Verified 从 2294 个原始任务抽 1699 个,93 名精通 Python 的开发者逐条检查(描述是否清晰、测试是否覆盖边界、是否稳定、参考 patch 是否引入新错误、难度是否合理),仅 500 个通过——淘汰 71% 换来更高信噪比,评估成本下降约 80%。复杂 Agent 任务动辄数分钟至数小时,前沿模型跑完一个评估集往往需要数千美元 token,控本就是控迭代速度。
- 发布后持续修补:OSWorld 发布 15 个月暴露出 300 余个问题,分四类——环境问题(反爬、CAPTCHA、动态内容,靠锁定版本与离线备份)、任务描述歧义(改写消除)、验证逻辑过严或过松(人工建立正确基线再调条件)、初始状态不完整(增加完整性校验)。修补方式可整体借鉴。
- 从初版到成熟版的五处典型重设计(τ-bench → τ²-bench):任务指令过于笼统导致可猜 → 拆分 known_info/task_instructions;成功条件不精确 → 改为可核实边界;模拟用户过于机械 → 补情绪、耐心上限与事实锚定;只有 Agent 能改变环境 → 引入用户侧工具的双控机制;静态任务 → 参数化批量生成实例(同时改善覆盖率与抗泄漏)。
7. 评估集的三个来源与演进
- 公开基准:用于粗筛模型与借鉴设计手法(验证深度、参数化生成、防泄漏、质量维护),一般不用于产品决策——其任务分布与业务分布不一致。
- 自建业务集:覆盖真实任务分布,作为模型选型与 Harness 设计决策的依据。可拿成熟基准当骨架,替换领域数据与工具集。
- 生产轨迹回流:用户明确纠正、点踩、事后规则/LLM 审计发现的失败案例,经失败归因后沉淀为回归用例。成本最高、准确性最高,直接来自用户实际遇到的问题。
- 演进节奏:起步只有公开基准 + 少量手写业务集;上线运行一段时间后,回流用例成为主体。今天线上暴露的失败模式,明天就是守住底线的回归用例。
常见陷阱
- 任务指令写得宽泛,模型无需澄清需求、凭常识猜一套流程也能通过。
- 成功条件是"网络已恢复"这类无边界描述,被压制症状的敷衍性修复蒙过。
- 只验 FAIL_TO_PASS 不验 PASS_TO_PASS,Agent 靠删断言作弊;或不排除 flaky test,结果不可复现。
- 用户模拟器没有事实锚定,评估退化为 Agent 与模拟用户相互确认;没有耐心上限,沟通效率低下不被计失败。
- 静态题面被模型记忆,且无 canary,泄漏发生了都不知道。
- 验证器过严(把正确答案判失败)或过松(放走表面完成实质错误);初始状态配置不完整,每次运行起点不同。
reward_basis只看终态,过程违规(策略违背、信息未告知)不被捕获,且不另建过程检查。- 任务描述存在多种合理解释而验证器只认一种,开发者与人肉执行者的判断不一致。
- 评估集建成后不再维护,上线后仍是手写那几十条,与真实用户分布脱节。
配套代码
chapter7/tau2-bench-eval/— τ²-bench telecom 任务定义四部分(ticket / user_scenario / initial_state / evaluation_criteria)的完整解剖与双控环境运行记录chapter7/public-health-reporting-eval/— 五个确定性任务的六点结构化评分示范验证器设计:工具选择、参数、答案(含数值容差)、证据行精确集合、无依据声明处罚chapter7/android-world/— T3A 失败轨迹与归因笔记,演示参数化任务实例、验证器终态判定,以及从失败轨迹回流生成轨迹前缀回归任务
深度阅读
book/chapter7.md「一条评估任务的解剖:τ²-bench 的 telecom 领域」book/chapter7.md「评估数据集的设计」
Security
- Security scanPassed, 98 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/eval-dataset-design/SKILL.md
Popularity
- Repository stars
- 51,686
- Repository forks
- 5,817
- 7-day trend score
- 54
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/bojieli/ai-agent-book/eval-dataset-design)