| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
A rigorous benchmarking framework for evaluating AI coding agents on real-world GitHub repositories. OpenCode Bench runs agents against production code changes and scores their outputs using multiple LLM judges across five key dimensions: API signature compliance, logic equivalence, integration correctness, test coverage, and project checks.
Launch runs and browse results from a browser — no CLI needed after setup:
bun install
cp .env.example .env.local # fill in OPENROUTER_API_KEY (see below)
bun run ui # http://127.0.0.1:4700Pick models and tasks, hit Launch run, and watch per-model progress bars; the score matrix updates live with per-judge checklist verdicts and agent-vs-production diffs behind every cell.
Or with Docker (mount results/ to persist runs):
docker build -t opencode-bench .
docker run -p 4700:4700 --env-file .env.local -v "$PWD/results:/app/results" opencode-benchThe server has no auth — keep it on localhost or a private network.
This fork routes judges through any OpenAI-compatible gateway (default config uses OpenRouter for everything, so a single OPENROUTER_API_KEY suffices). See .env.example for the full set of knobs: judge panel, episode/agent time budgets, extra agent models.
bun install
bun run buildRun a benchmark evaluation:
orvl opencode --model opencode/claude-sonnet-4-5 --eval DataDog/datadog-lambda-pythonExport results to JSON:
orvl opencode --model opencode/gpt-5-codex --eval DataDog/datadog-lambda-python --output results.jsonBoth --model and --eval are required. Each invocation executes three isolated episodes (fresh clones) and aggregates the judge scores before exporting results.
During development, run the CLI directly with Bun:
bun run dev -- opencode --model opencode/claude-sonnet-4-5 --eval <owner/repo>OpenCode Bench evaluates AI coding agents by:
Each evaluation runs three isolated episodes to ensure statistical reliability. Episodes use fresh repository clones and independent judge assessments.
Each submission is evaluated across five weighted dimensions:
Weights are configurable per evaluation in dataset.yaml.
Scores are aggregated using a weighted variance-penalized approach. For a matrix S ∈ [0,1]^(m×k) where rows index judges and columns index score types, with judge weights w ∈ Δ^(m-1) and score weights v ∈ Δ^(k-1), the base score is:
R = v^T S^T w = Σ(j=1 to k) v_j ( Σ(i=1 to m) w_i s_ij )
To discourage judge disagreement, a variance penalty is applied:
R_pen = R - λ Σ(j=1 to k) v_j Var_j where: Var_j = Σ(i=1 to m) w_i (s_ij - s̄_j)² s̄_j = Σ(i=1 to m) w_i s_ij λ = 0.5 (disagreement penalty coefficient)
Implementation details are in lib/utils/scoreAggregation.ts and tested in tests/scoreAggregation.test.ts.
Currently uses three LLM judges with equal weighting:
All judges use "Zen" model variants optimized for code evaluation.
bun run buildThis compiles cli.ts to dist/cli.js with all necessary externals.
Run the full test suite:
bun testTest judge consistency:
bun run test:consistencyTest score aggregation:
bun test tests/scoreAggregation.test.tsagents/ # Agent integrations (OpenCode, Codex, Claude Code) scores/ # Score dimension implementations prompts/ # Task definitions per evaluation (YAML) lib/ # Core framework utilities tests/ # Test suite dataset.yaml # Evaluation definitions cli.ts # Main CLI orchestrator
The project uses GitHub Actions for CI/CD with automated benchmark publishing. Preview packages are published on every push via pkg.pr.new.
Contributions are welcome! Key areas for improvement:
| Back | FazBrowse Home | New Git URL |