PatchPilot Lite is a lightweight evaluation harness for AI coding agents. It focuses on SWE-bench-style reliability: test-gated success, pass@k evaluation, tool-call reliability, and explicit failure taxonomy.
See EVIDENCE.md for a benchmark snapshot and example runs.
Many agent failures are evaluation failures:
- Patches apply but don’t fix the bug.
- Tests are missing or never run.
- Tool calls fail silently or inconsistently.
PatchPilot Lite makes these failure modes visible with deterministic, test-gated evaluation and structured metrics.
- Pass@K metrics with attempt tracking (default
MAX_ATTEMPTS = 2) - Tool-call reliability and per-call logging
- Failure taxonomy for consistent root-cause analysis
- Test-gated success (no pass without green tests)
- Minimal footprint (Python stdlib only)
- Load a task from
tasks/<task_id>/. - Reset the task repo to a clean baseline.
- Apply the patch (interactive or
patch.diff). - Run the task’s test command.
- Record attempts, tool calls, timing, and failure reason.
- Write per-task JSON and aggregate
summary.csv.
Pass@K
pass@1: tests pass on attempt 1pass@2: tests pass within 2 attemptsattempts_used: number of attempts executed
Tool Reliability
tool_calls_attempted,tool_calls_successful,tool_success_ratetool_call_logwith timing and errors
Failure Taxonomy
patch_failedpatch_applied_tests_still_failtests_not_executedtool_call_faileddependency_or_env_failuretimeout_or_loop_preventedwrong_file_selectioninsufficient_contextunrelated_code_changestool_schema_errorunknown_failure
The aggregate row in summary.csv includes a failure distribution string.
python run.py --list
python run.py --all --non-interactiveResults are written to results/.
Demo Video:
Watch here: https://vimeo.com/1158223846?share=copy&fl=sv&fe=ci
- Test-gated success
- Deterministic evaluation
- Simple, isolated tasks
- Reproducibility over complexity
- No external dependencies
patchpilotlite/
├── run.py # CLI entrypoint
├── agent.py # Agent loop (placeholder for AI)
├── tools.py # Tool implementations and patch engines
├── utils.py # JSON/CSV helpers, timing, taxonomy
├── tasks/ # Task definitions
│ └── <task_id>/
│ ├── task.md
│ ├── repo/
│ ├── test_cmd.txt
│ └── patch.diff
└── results/ # Generated outputs
├── <task_id>.json
└── summary.csv
- Python 3.10+
- Standard library only
python run.py --task <task_id>
python run.py --all
python run.py --all --non-interactive
python run.py --list- Real LLM agent integration
- Task expansion beyond toy examples
- Richer telemetry (latency distributions, tool failure rates)
- CI integration for regression tracking
MIT