devtu-benchmark-harness

Runs benchmarks, diagnoses failures, and routes fixes for ToolUniverse tools and skills.

1.7k|254|Updated Mar 3, 2025
One-click install
npx skills add https://github.com/mims-harvard/ToolUniverse --skill devtu-benchmark-harness
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: devtu-benchmark-harness
Source: https://github.com/mims-harvard/ToolUniverse/tree/main/skills/devtu-benchmark-harness
Command: npx skills add https://github.com/mims-harvard/ToolUniverse --skill devtu-benchmark-harness

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve?

Improving an AI agent plugin requires knowing which tools and skills actually fail on real questions, but manual testing is slow and fixes often overfit to a single benchmark's answer key. This Skill provides a 5-step feedback loop (run, analyze, diagnose, fix, retest) that continuously measures and improves ToolUniverse tools, skills, and plugin quality.

Core Features & Use Cases

  • Orchestrated benchmark runs: Execute lab-bench, BixBench, or custom question sets in plugin-only, baseline-only, or comparison modes with a single script that builds, runs, analyzes, and extracts failures.
  • Failure diagnosis and routing: Classify failures (timeout, wrong_answer, tool_error, api_key_missing), map question categories to responsible skills, and route each fix to the correct devtu skill instead of manual patching.
  • Multi-strategy grading: Grade answers with exact, multiple-choice, range, normalized, numeric-proximity, synonym, and LLM-verifier strategies, including Unicode scientific notation handling.
  • Anti-memorization guard: Scan skill files for benchmark names, capsule UUIDs, question IDs, and known ground-truth values to prevent overfitting conventions to a dataset's answer key.
  • Use Case: After adding a new ToolUniverse tool, run the harness on 20 BixBench questions, review the diagnose log to see which skill underperforms, invoke the recommended devtu skill to fix it, then retest only the failed questions to confirm the improvement.

Quick Start

Run the benchmark harness on 20 BixBench questions with seed 42, then show me the diagnosed failures and which devtu skills to invoke for fixes.

Frequently Asked Questions about devtu-benchmark-harness

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I run a benchmark evaluation on an AI agent plugin?

Use the run_eval.py script with a benchmark name, mode, and question count, for example python run_eval.py --benchmark bixbench --mode plugin-only --n 20. The orchestrated run_harness_loop.sh script chains build, run, analysis, and diagnosis in one command.

How do I grade free-text benchmark answers automatically?

The grade_answers.py script applies seven strategies in order: exact match, multiple-choice detection, range match, normalized substring, numeric proximity within 5 percent, scientific synonym matching, and an optional LLM verifier for semantic correctness.

How do I prevent benchmark overfitting when optimizing agent skills?

Run check_memorization.py --all before accepting any skill edit. It fails if skill files contain benchmark names, capsule UUIDs, question IDs, or known ground-truth numeric answers, and a strict mode also flags dataset-specific filenames and gene names.

What benchmarks does the ToolUniverse harness support?

It supports lab-bench with 20 multiple-choice database lookup questions, BixBench with 205 computational bioinformatics questions requiring capsule data, and custom user-defined JSON question files. BixBench requires a one-time data download of about 5 GB.

Why do DESeq2 benchmark answers differ between pydeseq2 and R?

pydeseq2 and R DESeq2 use different dispersion estimation and produce different fold-change values, while BixBench ground truths assume R. The harness flags this as a known failure pattern and routes fixes to the rnaseq-deseq2 skill conventions.

How do I retest only failed benchmark questions after a fix?

Extract failures with analyze_results.py --extract-failures failures.json, then rerun with run_eval.py --retest failures.json. This skips already-correct questions so you can verify whether fixes flipped wrong answers to correct.