91e75e620b
CI: cua-driver distro-compat matrix / debian:12 (glibc 2.36) (push) Has been cancelled
CI: SPDX Headers / Check SPDX headers (warn-only) (push) Has been cancelled
CD: Docs MCP Server / build (linux/amd64) (push) Has been cancelled
CD: Docs MCP Server / build (linux/arm64) (push) Has been cancelled
CD: Docs MCP Server / merge (push) Has been cancelled
CI: cua-driver distro-compat matrix / Resolve release version (push) Has been cancelled
CI: cua-driver distro-compat matrix / fedora:41 (glibc 2.40) (push) Has been cancelled
CI: cua-driver distro-compat matrix / rockylinux:9 (glibc 2.34) (push) Has been cancelled
CI: cua-driver distro-compat matrix / ubuntu:22.04 (glibc 2.35) (push) Has been cancelled
CI: cua-driver distro-compat matrix / ubuntu:24.04 (glibc 2.39) (push) Has been cancelled
CI: cua-driver distro-compat matrix / Distro compat summary (push) Has been cancelled
CI: Rust Linux unit / Rust Linux unit and compile (push) Has been cancelled
CI: Rust Windows unit / Rust Windows unit and compile (push) Has been cancelled
CI: Nix Linux Rust source / Nix / compositor build (push) Has been cancelled
CI: Nix Linux Rust source / Nix / driver package (push) Has been cancelled
CI: Nix Linux Rust source / Nix / Rust unit tests (push) Has been cancelled
2.9 KiB
2.9 KiB
Ohm-Bench: Packaging & Evaluation Guide
Prerequisites
cd libs/cua-bench
uv sync
echo "ANTHROPIC_API_KEY=sk-ant-..." > .env
echo "OPENAI_API_KEY=sk-..." >> .env
Build the environment image (KiCad 9 pre-installed):
cd libs/xfce
docker build -t trycua/cua-xfce:latest .
1. Packaging a Submission
Converts a DaaS submission JSON into a self-contained scripts/tasks/<id>/ directory.
uv run python scripts/package_kicad_submission.py <submission.json> --output scripts/tasks/
Input JSON fields required:
submission_id— unique ID (becomes the task directory name)circuit_prompt— task description shown to the agentnetlist.s3Uri— S3 URI of the reference netlist zipcircuit_pcb_file.s3Uri— S3 URI of the initial KiCad project zip
Output structure:
scripts/tasks/<submission_id>/
main.py # cb task harness
reference.net # ground-truth KiCad netlist
initial/ # initial KiCad project files shown to agent
<project>/
*.kicad_sch
*.kicad_pcb
...
2. Running Evaluations
Single task (quick test)
uv run cb run dataset scripts/tasks --task-filter "<submission_id>" \
--agent cua-agent --model anthropic/claude-opus-4-6 --max-steps 150
Multiple specific tasks
uv run cb run dataset scripts/tasks \
--task-filter "154d0750,1625e97a,2c11fe94" \
--agent cua-agent --model anthropic/claude-opus-4-6 \
--max-parallel 5 --max-steps 150
Full dataset
uv run cb run dataset scripts/tasks \
--agent cua-agent --model anthropic/claude-opus-4-6 \
--max-parallel 5 --max-steps 150
Monitor a run
uv run cb run watch <run_id>
uv run cb run info <run_id>
3. Calibration (N attempts per task per model)
Runs each task N times with Claude and N times with OpenAI, then computes pass rates and difficulty tiers.
# Specific tasks, 5 attempts each, 1000 max steps
uv run python scripts/run_calibration.py \
--tasks "154d0750,1625e97a,2c11fe94,34877be3,458f5f5c" \
--attempts 5 \
--max-steps 1000
# All tasks (runs sequentially: all claude attempts, then all openai attempts)
uv run python scripts/run_calibration.py \
--tasks "$(ls scripts/tasks | grep -v '.json' | tr '\n' ',' | sed 's/,$//')" \
--attempts 5 \
--max-steps 1000
What it does per task:
- Launches
--attemptssimultaneouscb run datasetcalls withanthropic/claude-opus-4-6 - Waits for all to finish
- Launches
--attemptssimultaneous calls withopenai/computer-use-preview - Waits for all to finish
- Moves to next task
4. Cleaning Up
Kill all running containers between runs:
docker ps -a --format "{{.Names}}" | grep "cua-" | xargs -r docker rm -f
Stop all active cb runs:
uv run cb run list | grep "^[a-f0-9]" | awk '{print $1}' | xargs -I{} uv run cb run stop {}