Skip to content

docs(bench): cross-repo Q&A benchmark vs Codex/Claude Code (2026-05-07) - #70

Closed
study8677 wants to merge 1 commit into
mainfrom
claude/quirky-engelbart-ec012c
Closed

docs(bench): cross-repo Q&A benchmark vs Codex/Claude Code (2026-05-07)#70
study8677 wants to merge 1 commit into
mainfrom
claude/quirky-engelbart-ec012c

Conversation

@study8677

Copy link
Copy Markdown
Owner

Summary

Adds a head-to-head benchmark of ag-refresh + ag-ask against Codex CLI and Claude Code's Explore subagent on three real-world repos (fastapi, requests, sqlmodel). 15 questions per tool × 3 tools = 45 graded answers.

Headline

Tool Composite (0–12) Median latency / Q Notes
Antigravity (Ollama qwen3:0.6b) 0.73 21 s Pipeline ran end-to-end; 0.6 B synthesizer too small
Codex CLI (gpt-5.5 xhigh) 11.93 106 s 0 fabricated citations
Claude Code Explore (Opus 4.7) 11.87 42 s 0 fabricated citations

Caveat

The comparison is deliberately asymmetric: Antigravity ran on Ollama qwen3:0.6b because qwen2.5-coder:7b stalled at 50 % twice on the test box's network. The frontier models on the other side were unconstrained. The benchmark therefore proves Antigravity's pipeline is robust and fast — but does not evaluate its architecture against a frontier synthesizer. Recommendations for follow-up runs are in §10 of the report.

What's in this PR

  • artifacts/benchmark-2026-05-07/REPORT.md — full write-up (~14 KB)
  • artifacts/benchmark-2026-05-07/answers/{antigravity,codex,claude}/{qid}.{md,log} — every raw answer + transcript
  • artifacts/benchmark-2026-05-07/meta/grades.json — per-cell 0-3 scores with notes
  • artifacts/benchmark-2026-05-07/meta/score.py — reproducible aggregator
  • artifacts/benchmark-2026-05-07/meta/run_codex.sh / run_antigravity.sh — runner scripts
  • artifacts/benchmark-2026-05-07/questions.json — the 15 prompts

Internal tests

engine/tests 173 ✓ • cli/tests 15 ✓ — both green on this branch.

Test plan

  • Re-run with qwen2.5-coder:7b once the slow CDN edge clears (expected 5-10× lift on Antigravity quality)
  • Re-run with Gemini Flash to test the engine's primary configured backend
  • Add a post-condition that fails ag-ask with a clearer error when the synthesizer returns empty stdout (one of the §10 recommendations)

🤖 Generated with Claude Code

…Code

15 questions per tool against fastapi/requests/sqlmodel measure ag-refresh+ag-ask
versus codex exec (gpt-5.5) and Claude Code's Explore subagent (Opus 4.7).
Antigravity ran on Ollama qwen3:0.6b (only model that finished downloading on
the test box), so the comparison is asymmetric — but the pipeline ran
end-to-end on every repo and per-question latency was the lowest of the three.

Aggregate composite (0-12):
- Antigravity 0.73 / 12 (model-bottlenecked: 8 empty/refusal, 3 fabricated, 4 partial)
- Codex 11.93 / 12 (median 106 s/q)
- Claude Code 11.87 / 12 (median 42 s/q)

Engine + CLI internal pytest still 188/188 green. Full grades, raw answers,
and reproducible runner scripts under artifacts/benchmark-2026-05-07/.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e05fcb978b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +35 to +38
local rc=$?
local t1=$(date +%s)
echo "$((t1-t0))" > "$timefile"
echo "[codex] $qid done in $((t1-t0))s rc=$rc"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Handle non-zero codex exit codes

The runner captures rc from codex exec but never acts on it, so transient failures (auth/rate-limit/network/tool crash) are treated as successful runs and the benchmark continues with potentially empty or stale outputs. That can silently corrupt scores and latency summaries because downstream scoring has no failure marker for that question.

Useful? React with 👍 / 👎.

Comment on lines +13 to +15
ROOT = pathlib.Path("/tmp/ag-bench")
QFILE = ROOT / "questions.json"
GFILE = ROOT / "answers" / "_meta" / "grades.json"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Remove hardcoded /tmp path from score input roots

The scorer is committed under artifacts/benchmark-2026-05-07/meta/ but hardcodes /tmp/ag-bench for questions.json and grades, so running python3 meta/score.py against the checked-in artifact set fails unless an external mirror exists at exactly that absolute path. This breaks the "reproducible aggregator" behavior and makes local re-scoring non-portable.

Useful? React with 👍 / 👎.

@study8677

Copy link
Copy Markdown
Owner Author

Closing — re-running benchmark with Antigravity wired to gpt-5.5 instead of qwen3:0.6b. Will open a fresh PR after the new run.

@study8677 study8677 closed this May 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant