This document describes how to evaluate artifacts produced by an external agent or sandbox.
The protocol is intentionally independent of the repository's optional
sandbox/ wrapper. Any agent runner can be used as long as it writes the run
directory described below.
The construction pipeline exports a task file:
eval_tasks.jsonl
Each task row should contain:
task_idagent_promptevaluation.rule_basedsemantic_rubric- optional metadata such as
big_class,subclass_id,input_fixture_paths
The evaluator does not run the sandbox. The user should run each task with their own agent and save outputs using this layout:
runs/<run_name>/<task_id>/
response.txt
artifacts/
<agent output files>
task.json # optional copy of the task row
history.jsonl # optional
metadata.json # optional model/harness/token/time metadata
response.txt and artifacts/ are required. history.jsonl and metadata.json are audit-only.
For reliable auditing, also write task.json and prompt.txt when possible.
task.json should be the exact task row from eval_tasks.jsonl; prompt.txt
should be the exact prompt sent to the agent, including any fixture-path
instructions you added at runtime.
Main score routing is strict:
- Text-only cases use the text judge.
- If a case has any visual artifact suffix, it must use the visual judge.
- If visual evidence preparation or visual judge fails,
main_scoreis left empty andmain_score_errorrecords the reason. - Visual cases never fall back to text judge as the main score.
Visual suffixes:
.html .htm .pdf .pptx .ppt .docx .doc .xlsx .xls .png .jpg .jpeg .webp .svg
Text suffixes:
.txt .md .markdown .json .jsonl .py .js .ts .tsx .jsx .sh .bash .zsh .css .scss .sql .yaml .yml .toml .ini .csv .tsv
Runtime/intermediate files are excluded before judging:
ocr/
verify_temp/
__pycache__/
venv/
.venv/
site-packages/
crop*
gray_*
autoc_*
*_tsv.tsv
The visual judge receives images only:
- HTML/SVG: Playwright full-page screenshot.
- XLSX/XLS: sheet HTML rendered with Playwright.
- PDF: page screenshots via
pdftoppm. - DOC/DOCX/PPT/PPTX: LibreOffice converts to PDF, then
pdftoppmscreenshots. - PNG/JPG/JPEG/WEBP: uploaded directly.
Default budgets:
--max-output-images 32
--max-output-pages 6
--max-output-text-chars 12000
If Playwright or LibreOffice is unavailable, the evaluator records warnings in:
<task_id>/<visual_judge_name>/prepared_output_evidence.json
and the visual main score is not silently replaced by text.
Validate a run:
cd /path/to/EnterpriseClawBench/evaluation && \
python -m enterprise_clawbench_evaluation.cli validate-run \
--tasks /path/to/eval_tasks.jsonl \
--run-dir /path/to/runs/demo_runJudge a run:
cd /path/to/EnterpriseClawBench/evaluation && \
export DMX_API_KEY='<your api key>' && \
python -m enterprise_clawbench_evaluation.cli judge-run \
--tasks /path/to/eval_tasks.jsonl \
--run-dir /path/to/runs/demo_run \
--out-dir /path/to/outputs/judge_demo \
--base-url https://www.dmxapi.cn/v1 \
--text-judge-model claude-sonnet-4-6 \
--visual-judge-model claude-sonnet-4-6Outputs:
judge_results.jsonl
judge_summary.json
REPORT_EVALUATION.md
<task_id>/semantic_sonnet_text_judge/
<task_id>/semantic_sonnet_visual_judge/