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

4.6 KiB

Claw-Eval

Overview

Claw-Eval evaluates assistant agents on realistic personal-assistant workflows that require tool use, file and fixture access, multimodal inputs, and simulated user interactions. EvalScope runs the pinned official Claw-Eval Python runner, Docker sandbox, and graders while exposing each Claw-Eval task as a normal EvalScope sample for caching, repeats, parallel execution, reporting, and dashboard trace review.

Task Description

  • Task Type: Agentic personal-assistant tasks with tool use, sandbox files, multimodal fixtures, and optional simulated user turns.
  • Dataset: claw-eval/Claw-Eval on ModelScope.
  • Subsets: general, multimodal, and multi_turn; the current ModelScope manifest contains 300 tasks (161 general, 101 multimodal, and 38 multi_turn). Use subset_list to select subsets.
  • Output: Official Claw-Eval scores and JSONL traces, EvalScope sample-level reviews, grouped summary metrics, and dashboard-rendered agent traces.

Evaluation Notes

  • Requires Python 3.11+ and the official package installed from the pinned source commit: pip install "claw-eval[sandbox,mock,web] @ git+https://github.com/claw-eval/claw-eval.git@d3f02d4938ab0832377d90535013def2b1a2fdc0".
  • The installed package provides the Claw-Eval runner APIs. EvalScope also caches the same pinned source archive because tasks/ and Dockerfile.agent are runtime assets, then loads the task manifest and fixtures from ModelScope.
  • Full fixtures are downloaded from ModelScope (data/fixtures.tar.gz) and linked into the official task tree before execution. The archive is large; use limit or extra_params.task_ids for smoke runs.
  • Each selected Claw-Eval task is one EvalScope sample. Official scoring runs once per sample; use EvalScope repeats for repeated trials per task and eval_batch_size for task-level worker concurrency.
  • Claw-Eval runs with the official Docker sandbox image. If claw-eval-agent:latest is missing locally, EvalScope builds it automatically from the cached official Dockerfile.agent. The first run can be slow.
  • EvalScope use_cache resumes completed task-level samples. Claw-Eval trace JSONL files are stored under outputs/.../claw_eval/<split>/traces and converted to EvalScope agent traces for dashboard visualization.

Properties

Property Value
Benchmark Name claw_eval
Dataset ID claw-eval/Claw-Eval
Paper N/A
Tags Agent, MultiModal, MultiTurn
Metrics judge_score, pass_at_k, pass_hat_k, error_rate
Default Shots 0-shot
Evaluation Split test

Data Statistics

Metric Value
Total Samples 300
Prompt Length (Mean) 47.36 chars
Prompt Length (Min/Max) 30 / 60 chars

Per-Subset Statistics:

Subset Samples Prompt Mean Prompt Min Prompt Max
general 161 46.47 34 58
multimodal 101 49.75 30 60
multi_turn 38 44.79 35 51

Sample Example

Subset: general

{
  "input": [
    {
      "id": "a34b7f6b",
      "content": "Run Claw-Eval task T001zh_email_triage."
    }
  ],
  "target": "",
  "id": 0,
  "group_id": 0,
  "subset_key": "general",
  "metadata": {
    "task_id": "T001zh_email_triage",
    "split": "general",
    "task_name": "",
    "difficulty": "",
    "dataset_id": "claw-eval/Claw-Eval",
    "dataset_hub": "modelscope"
  }
}

Prompt Template

Prompt Template:

{question}

Extra Parameters

Parameter Type Default Description
task_ids list [] Optional exact Claw-Eval task ids to run after split filtering.

Usage

Using CLI

evalscope eval \
    --model YOUR_MODEL \
    --api-url OPENAI_API_COMPAT_URL \
    --api-key EMPTY_TOKEN \
    --datasets claw_eval \
    --limit 10  # Remove this line for formal evaluation

Using 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=['claw_eval'],
    dataset_args={
        'claw_eval': {
            # subset_list: ['general', 'multimodal', 'multi_turn']  # optional, evaluate specific subsets
            # extra_params: {}  # uses default extra parameters
        }
    },
    limit=10,  # Remove this line for formal evaluation
)

run_task(task_cfg=task_cfg)