Expand description
The thing being benchmarked: the host’s agent harness, behind the Harness trait, plus
RunArtifacts — everything a single run produced EXCEPT scoring — and the structured ToolCall
the artifacts carry.
eval-core knows nothing about HOW a run happens (which LLM, which tools, which world). The host
implements Harness over its own World + Setup, and the generic runner (crate::run_eval)
drives it: build a fresh world per case, run the instruction against it, then hand the resulting
world AND the run’s RunArtifacts to a Scorer. The harness owns its own backend
and reports its own token count — there is deliberately no backend/token-counting trait in this crate.
For the common case — scoring what the agent DID (tool calls, params, final text/number) rather than
a custom world — a host can skip Harness/[Scorer]/World/Setup entirely and implement the
one-method Agent trait, authoring Expectation predicates and
calling run_suite. See that trait + the calculator example.
Structs§
- RunArtifacts
- Everything a single run produced EXCEPT scoring. The
Harness(orAgent) fills this in and returns it; the generic runner copies it onto the case’sCaseOutcomeand also hands it to theScorerso built-in assertions can inspect what the agent did. - Tool
Call - One tool call the agent made: the tool’s
nameand the structuredargsit was invoked with.