Skip to content

feat: adapter — run AssistantBench (realistic time-consuming live-web tasks) under the ClawBench harness #188

Open

Description

@reacher-z

Goal

Let the ClawBench harness load + execute tasks from oriyor/assistantbench — "Can Web Agents Solve Realistic and Time-Consuming Tasks?" Live-web tasks intentionally chosen to be long-horizon (e.g. multi-step research, comparison shopping); HF dataset at AssistantBench/AssistantBench.

Scope

  • Task loader — clawbench.corpus.adapters.assistantbench ingests their HF dataset; normalizes their (task, answer_type, gold_answer, reference_links) schema into our task format.
  • Answer-grading — their scoring is answer-string-based (with answer-type rubric for numeric/date/list), not HTTP-interception. Surface their grader as a third stage in run-meta.json (after our Stage 1 + Stage 2) so adopters who care about answer-correctness alongside endpoint-correctness see both.
  • Time-limit handling — their tasks are designed long-horizon (many minutes). Honor each task's recommended max_steps instead of our default 30-min wallclock.
  • CLI — clawbench run --corpus assistantbench --model <m> end-to-end.

Why now

AssistantBench targets long-horizon live web research — a slice ClawBench V1+V2 doesn't directly cover. Hosting it under our harness extends the difficulty curve (most V2 tasks are ≤5 min; AssistantBench tasks routinely exceed 15 min) and gives us a third independent metric (answer-correctness vs interception vs LLM payload judge).

Acceptance

  • clawbench run --corpus assistantbench --limit 5 --model <m> produces 5-layer bundles
  • run-meta.json includes assistantbench_answer_score alongside our intercepted/judge_match
  • Match upstream eval/eval_answer.py outputs within ±2pp on a sampled subset
  • Docs: eval/adapters/assistantbench.md

Activity

  1. added a commit that references this issue on Jul 31, 2026
  2. nahatav commented on Sep 23, 2026

    @nahatav
    Contributor

    Opened #379 against this.

    It covers the first two bullets of the scope: the task loader (clawbench-assistantbench-adapt, normalizing (id, task, answer, gold_url, explanation, difficulty) into our task format) and the answer grader surfaced as a third stage (clawbench-assistantbench-score, writing assistantbench_answer_score into run-meta.json next to intercepted and judge_match). Long-horizon time limits are a --time-limit flag defaulting to 30 minutes.

    The design decision worth your review: AssistantBench has no interceptable final request, and rather than add the eval_schema.mode discriminator docs/answer-mode-tasks.md sketches, the adapter reuses the answer-submit path the bundled claw-eval suite already uses on main, verbatim. That means no runner changes at all, and a test pins the contract against a bundled claw-eval task so the two ports cannot drift.

    On the third acceptance bullet: I could not do a live ±2pp run, so instead I checked the metric itself against the upstream evaluator under numpy 2.5.3 and scipy 1.18.1 over 7249 (prediction, gold) pairs. Exact agreement to 1e-9 on all 6581 pairs upstream can score; the other 668 are malformed predictions where upstream raises and we score 0 rather than taking down the batch. That run caught two real bugs in my first draft, both now fixed and pinned by tests. Details and the numbers are in the PR.

    Not attempted, and said so in docs/assistantbench.md: the held-out test split ships no answers so the deterministic metric cannot score it locally, and --corpus assistantbench as a first-class selector is left to #72 since this ships as a suite generator plus --cases-dir, matching how harbor and edgebench already work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions