vtcode-eval
Agent evaluation framework for VT Code — defines eval tasks, runs them through an agent executor, grades outcomes, and reports pass@k / pass^k metrics split by capability and regression categories.
The crate is deliberately small and I/O-free at its core: run_suite orchestrates
the loop of tasks × attempts, computes per-task metrics, and assembles a report.
Everything that touches the filesystem, config, or the concrete agent runner is
pushed behind the EvalExecutor trait, so the harness is fully unit-testable with
an in-memory fake executor.
Layout
| Module | Responsibility |
|---|---|
task |
Data model: EvalTask, EvalCategory, RunOutcome, EvalRunResult |
suite |
EvalSuite — a named set of tasks with an attempts count |
metric |
EvalMetric and compute_metric / aggregate_metrics / pass_at_k / pass_all_k |
executor |
EvalExecutor trait + run_suite pure orchestration |
environment |
EnvironmentProbe checks: CommandProbe, FileExistsProbe, GitCleanProbe |
report |
EvalReport / SuiteReport / TaskReport + to_markdown renderer |
Concepts
EvalTask— a prompt plusverify_commandsand an optionaltimeout_secs.categoryisCapabilityorRegression.RunOutcome—Pass,Fail, orErrorfor a single task attempt.EvalMetric—pass_at_k(fraction of runs that passed) andpass_all_k(1.0 only if every run passed), plus rawpassed_runs/total_runs.EvalExecutor— the trait boundary. Implementors own "run this task" semantics (drive the agent, apply environment probes, grade the result).run_suiteonly callsexecute_task.
Usage
use ;
// Implement EvalExecutor to drive your agent + grade outcomes, then:
let report = run_suite.await?;
println!;
Notes
run_suiteperforms no file I/O or trust checks; the caller owns configuration and theattempts >= 1guardrail.- Environment verification (
EnvironmentProbe) is a separate concern from outcome grading — executor implementations decide whether and how to apply probes before returning aRunOutcome.