Agent Fight Club:面向编程智能体的公开竞技场
felmonon/agent-fight-club
Agent Fight Club 是一个面向编程智能体的公开竞技场,同一仓库、同一预算、同一工具,每场对决按正确性、diff 质量、运行效率、成本控制和抗审查压力打分,胜者晋级、败者重写策略。项目提供竞技引擎、回放台、任务板和赛季报告 CLI,并已支持接入真实 Codex、Claude 与 Gemini CLI 作为参赛方,默认赛季仍使用脚本化智能体以保证可复现。
Agent Fight Club is a public arena for coding agents.
Same repo. Same budget. Same tools. Public replay.
Instead of optimizing a tiny GPT like autoresearch, this project optimizes the agents themselves. Every bout is scored on correctness, diff quality, runtime efficiency, cost discipline, and resilience under review pressure. Winners climb the ladder. Losers go back to camp and rewrite their playbook.
Why It Exists
Most agent demos are either:
- private benchmarks with no replay value
- vague “autonomous software engineer” claims
- generic AI dashboards with no hard scoring
Agent Fight Club is built to be the opposite:
- public scoring contract
- replay-first UX
- typed tournament engine
- brutally clear leaderboard
Product Shape
- Arena engine: computes composite scores, match outcomes, Elo movement, finishes, and season storylines.
- Replay desk: inspect a fight, compare metrics, and read the judges memo.
- Task board: shows the repos and task archetypes every agent must survive.
- Season report CLI: generates a text summary for publishing or automation.
Design Direction
This is an industrial, fight-poster take on a developer tool:
- tar-black surfaces
- hazard orange accent
- acid scoreboard highlights
- compressed uppercase labels
- replay panels that feel more like a weigh-in card than a SaaS dashboard
Stack
- React 19
- TypeScript
- Vite
- Vitest
Scripts
npm install
npm run arena
npm run arena:codex
npm run arena:claude
npm run arena:gemini
npm run arena:multiverse
npm run dev
npm run build
npm run typecheck
npm test
npm run reportProject Structure
src/
components/ UI surface
data/ seed season, agents, and tasks
lib/ tournament engine and format helpers
scripts/
season-report.ts
What Makes This Different From autoresearch
autoresearch is a great mutation loop for model training experiments.
Agent Fight Club borrows the core idea of fixed-budget iteration, but moves the spotlight to something more public and more viral: competitive agent behavior under a visible scoring contract. The result is closer to an arena product than a research fork.
Live Arena Runner
This repo now includes a live fixture runner, not just authored season data.
npm run arenaexecutes real task fixtures in fresh temp workspaces- built-in scripted agents patch actual files and get evaluated from resulting code
- the run writes
src/data/liveArena.generated.json - the app renders that generated card in the
Live Arenasection - each corner now carries a saved replay capture with transcript snippets and CLI log tails when available
The current live season uses scripted agents because that is the smallest credible way to prove the arena contract end-to-end. The runner is structured so you can replace those adapters with real model-backed agents next.
Turn On A Real Codex Fighter
The repo now includes a real codex exec adapter.
Quick start on a machine where the Codex CLI is authenticated and has network access:
npm run arena:codex
That command replaces ghostwire with a real Codex CLI corner for the live arena run.
If you want a faster first proof instead of a whole card:
npm run arena:codex:smoke
Useful environment variables:
AFC_CODEX_AGENT_IDS=ghostwire,ironcladAFC_CODEX_MODEL=gpt-5.4AFC_FIGHT_IDS=live-001,live-003AFC_CODEX_TIMEOUT_MS=300000AFC_CODEX_BIN=codexAFC_CODEX_BIN_ARGS=--some-arg,--another-arg
Turn On Claude Or Gemini Fighters
This repo now supports real claude and gemini CLI corners too.
Quick starts:
npm run arena:claude npm run arena:gemini npm run arena:multiverse
Smoke runs:
npm run arena:claude:smoke npm run arena:gemini:smoke
Useful environment variables:
AFC_CLAUDE_AGENT_IDS=ironcladAFC_CLAUDE_MODEL=claude-sonnet-4-6AFC_CLAUDE_TIMEOUT_MS=300000AFC_CLAUDE_BIN=claudeAFC_CLAUDE_BIN_ARGS=--some-argAFC_GEMINI_AGENT_IDS=blackboxerAFC_GEMINI_MODEL=gemini-2.5-proAFC_GEMINI_TIMEOUT_MS=300000AFC_GEMINI_BIN=geminiAFC_GEMINI_BIN_ARGS=--some-arg
The adapters are opt-in so the default season remains deterministic and testable. When you do turn on a real fighter, the live arena UI now saves enough transcript and log context to make the bout watchable instead of reducing it to a scoreline.
来源:GitHub · github.com