Task authoring tutorial
Copy a task from examples/datasets/minimal-demo, edit run.py and the evaluator, run it.
Goal: lock, run, and get an evaluation result on this machine.
Prerequisites
Tutorial commands use in-repo examples/… paths, so clone the repo first. The CLI itself installs with uv tool install ageval-cli; uv sync is only for changing ageval itself.
Have an agent write it
npx skills add ZJU-REAL/ageval --skill ageval-config-package
npx skills add ZJU-REAL/ageval --skill ageval-sdk-harnessDescribe the task you want and your coding agent produces the directory, task.yaml, run.py, and evaluator.py. Copying the steps below by hand works just as well.
Copy a tasks/<id>/ directory from examples/datasets/minimal-demo (start from terminal-jsonl-agg). The directory name must equal task_id.
format: ageval.task/1
task_id: hello
parameters:
instruction: "Reply DONE"
agent_profiles:
- id: solver
limits:
wall_time_seconds: 300
environment_seconds: 600
evaluate_seconds: 600
agent_invocations: 1
artifacts:
publishable:
- id: reply
path: artifacts/reply.json
evaluation:
inputs:
- artifact: reply
target: artifacts/reply.jsonDo not write harness:, provider:, or assurance. The environment and ACP entry live in profiles.yaml. wall_time_seconds covers the run only. environment_seconds and evaluate_seconds default to 600. agent_invocations counts run-phase invokes.
ageval lock examples/datasets/minimal-demo --task hello
ageval run examples/datasets/minimal-demo --task helloScoring defaults to a script against gold. For LLM-as-judge, add a role on the same profiles.yaml and Agent.session after gold lands. For several scoring images with different closures scored in sequence, declare evaluation.environments on the task; the evaluator names the host for each stage. Optional checks on the evaluator return (helper evaluation_check) become evaluation/checks.json for Verifier.