Keep K3 suite selection and report-schema scoring in bash, merge K3/vision dataset_args into dpv4 yamls, and pin EvalScope at 735d920ee911 with local patches. Co-authored-by: Cursor <cursoragent@cursor.com>
104 lines
3.7 KiB
Markdown
104 lines
3.7 KiB
Markdown
# SkillsBench
|
||
|
||
SkillsBench 评测 agent 是否能利用任务内置的 Agent Skills。每个任务包含 `task.md`、`environment/Dockerfile`、`environment/skills/`、`oracle/` 和 `verifier/`。EvalScope 会根据任务的 Dockerfile 本地构建镜像,在容器中运行 agent 或 oracle,然后执行任务自带的 `verifier/test.sh`,读取 `/logs/verifier/reward.txt` 作为分数。
|
||
|
||
## 前置条件
|
||
|
||
- 本地已安装并启动 Docker。
|
||
- 已 clone SkillsBench 仓库,并传入 `tasks/` 目录路径。
|
||
- 运行真实 agent 时需要配置 `agent_config`,例如 Codex external runner。
|
||
- 外部 runner 会在任务容器内执行。Codex/OpenCode/Gemini CLI runner 会先探测 CLI,`auto_install=True` 时可在 runner setup 阶段安装。
|
||
- verifier 脚本可能通过 apt/pip/uv 安装依赖,因此需要可用网络。
|
||
|
||
## Skill Mode
|
||
|
||
默认 `skill_mode` 是 `no-skill`。
|
||
|
||
- `no-skill`:构建临时上下文时删除 `environment/skills`,并清理 Dockerfile 中的 skill copy/path。
|
||
- `with-skill`:将任务内 `environment/skills` 注入镜像内 `/skills`,runner 启动前再安装到自己的 skill discovery path。
|
||
|
||
当前版本不支持 `self-gen`,也不会自动计算 lift。请分别运行 `no-skill` 和 `with-skill`,再使用 EvalScope 的 run comparison 能力比较两次结果。
|
||
|
||
## Oracle Smoke
|
||
|
||
先用 oracle 验证镜像、路径和 verifier contract:
|
||
|
||
```python
|
||
from evalscope import TaskConfig, run_task
|
||
|
||
run_task(TaskConfig(
|
||
model='dummy',
|
||
datasets=['skillsbench'],
|
||
limit=1,
|
||
dataset_args={
|
||
'skillsbench': {
|
||
'extra_params': {
|
||
'tasks_dir': '/path/to/skillsbench/tasks',
|
||
'task_ids': ['offer-letter-generator'],
|
||
'runner': 'oracle',
|
||
'skill_mode': 'no-skill',
|
||
}
|
||
}
|
||
},
|
||
))
|
||
```
|
||
|
||
## 真实 Agent
|
||
|
||
`no-skill`:
|
||
|
||
```python
|
||
from evalscope import TaskConfig, run_task
|
||
|
||
run_task(TaskConfig(
|
||
model='your-model',
|
||
datasets=['skillsbench'],
|
||
limit=1,
|
||
agent_config={
|
||
'mode': 'external',
|
||
'framework': 'codex',
|
||
'environment': 'docker',
|
||
'timeout': 900,
|
||
'kwargs': {
|
||
'auto_install': True,
|
||
},
|
||
},
|
||
dataset_args={
|
||
'skillsbench': {
|
||
'extra_params': {
|
||
'tasks_dir': '/path/to/skillsbench/tasks',
|
||
'task_ids': ['offer-letter-generator'],
|
||
'skill_mode': 'no-skill',
|
||
}
|
||
}
|
||
},
|
||
))
|
||
```
|
||
|
||
`with-skill` 只需要改 `skill_mode`:
|
||
|
||
```python
|
||
dataset_args={
|
||
'skillsbench': {
|
||
'extra_params': {
|
||
'tasks_dir': '/path/to/skillsbench/tasks',
|
||
'task_ids': ['offer-letter-generator'],
|
||
'skill_mode': 'with-skill',
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
## 镜像缓存
|
||
|
||
EvalScope 会为每个 task 和 skill mode 生成临时 build context,并基于 context hash 构建本地 Docker image。`no-skill` 和 `with-skill` 使用不同 cache key。首次运行会 build,后续相同上下文会复用本地镜像。设置 `force_rebuild=true` 可强制重建。
|
||
|
||
任务镜像仍然是任务依赖和 verifier 输入的唯一来源。如果该镜像已经预装 external CLI,可以把 runner 的 `auto_install` 设为 `False`;否则保持 `auto_install=True`,由 runner 在任务容器 setup 阶段安装 CLI。
|
||
|
||
## 当前限制
|
||
|
||
- 默认只面向 SkillsBench 官方 `tasks/`,不自动包含 `tasks-extra/`。
|
||
- 当前 verifier contract 是 `verifier/test.sh` 写 `/logs/verifier/reward.txt`。
|
||
- 不支持完整 BenchFlow verifier 系统中的 `reward-kit`、`llm-judge`、`agent-judge`、`ors-episode` 或多 service verifier。
|
||
- 默认只保存 agent/verifier 关键日志和 metadata,不打包整个容器文件系统。
|