sora 13274243a0 Bump vendored EvalScope and add K3-ready DPV4 configs.
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>
2026-09-02 07:30:48 +00:00

118 lines
4.0 KiB
Markdown

# SkillsBench
## Overview
SkillsBench evaluates whether coding agents can discover and apply task-bundled Agent Skills. Each task contains an
instruction, an optional skill directory, a Docker environment, an oracle solution, and a verifier. EvalScope builds the
task Docker image, runs the selected agent or oracle in that image, then executes the task verifier.
## Task Description
- **Task Type**: Agent skill usage / tool-assisted task completion
- **Input**: The natural-language task prompt from `task.md`
- **Output**: Files or state changes produced inside the task container, scored by the task verifier
- **Dataset**: Local SkillsBench task repository supplied through `extra_params.tasks_dir`
- **Environment**: Per-task Docker image built from `environment/Dockerfile`
- **Skills**: Optional task-bundled skills from `environment/skills`
- **Metric**: `score` from `/logs/verifier/reward.txt`; `success` is 1 when `score > 0`
## Key Features
- Builds or reuses a content-hashed Docker image for each selected task.
- Runs the task in `no-skill` or `with-skill` mode without mixing the two conditions in one EvalScope run.
- Injects task-bundled skills through EvalScope's agent skill runtime instead of baking runner-specific skill paths into
the image.
- Supports EvalScope native agents and external agent runners through the shared agent environment interface.
- Saves verifier stdout, reward, and optional CTRF artifacts under the run output directory.
## Evaluation Notes
- Default `skill_mode` is `no-skill`.
- Run `no-skill` and `with-skill` separately, then compare runs with EvalScope's run comparison tools.
- `self-gen` and `tasks-extra` are not supported by this adapter version.
- `runner='oracle'` runs the official `oracle/solve.sh` for smoke testing; agent runs require `agent_config`.
- The verifier executes `verifier/test.sh` and may install dependencies from the network.
## Scoring and Comparison
- `score` is the verifier reward parsed from `/logs/verifier/reward.txt`.
- `success` is derived locally as `1.0` when `score > 0`, otherwise `0.0`.
- EvalScope does not automatically compute the no-skill versus with-skill delta; run both modes and compare their reports.
## Properties
| Property | Value |
|----------|-------|
| **Benchmark Name** | `skillsbench` |
| **Dataset ID** | `skillsbench` |
| **Paper** | N/A |
| **Tags** | `Agent`, `MultiTurn` |
| **Metrics** | `normalized_score` |
| **Default Shots** | 0-shot |
| **Evaluation Split** | `N/A` |
## Data Statistics
*Statistics not available.*
## Sample Example
*Sample example not available.*
## Prompt Template
**Prompt Template:**
```text
{question}
```
## Extra Parameters
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `tasks_dir` | `str` | `` | Path to the SkillsBench tasks directory. |
| `task_ids` | `list` | `[]` | Optional list of task ids to run. |
| `skill_mode` | `str` | `no-skill` | SkillsBench skill mode. Choices: ['no-skill', 'with-skill'] |
| `force_rebuild` | `bool` | `False` | Force rebuilding task Docker images. |
| `agent_timeout_sec` | `float` | `None` | Override task agent timeout. |
| `verifier_timeout_sec` | `float` | `None` | Override task verifier timeout. |
| `runner` | `str` | `agent` | Use "oracle" to run oracle/solve.sh instead of an agent. Choices: ['agent', 'oracle'] |
## Usage
### Using CLI
```bash
evalscope eval \
--model YOUR_MODEL \
--api-url OPENAI_API_COMPAT_URL \
--api-key EMPTY_TOKEN \
--datasets skillsbench \
--limit 10 # Remove this line for formal evaluation
```
### Using Python
```python
from evalscope import run_task
from evalscope.config import TaskConfig
task_cfg = TaskConfig(
model='YOUR_MODEL',
api_url='OPENAI_API_COMPAT_URL',
api_key='EMPTY_TOKEN',
datasets=['skillsbench'],
dataset_args={
'skillsbench': {
# extra_params: {} # uses default extra parameters
}
},
limit=10, # Remove this line for formal evaluation
)
run_task(task_cfg=task_cfg)
```