ruvnet/ruflo/tree/main/plugins/ruflo-arena
ruflo-arena
面向 Ruflo 群组的竞争性 ruliology:竞技场、锦标赛和程序策略的自适应协同进化(ADR-147/148)。程序化策略在收益博弈中竞争;锦标赛产生 Wolfram 风格的竞争数组;爬山搜索和相互协同进化通过实证发现赢家。
关于这个 mod
ruflo-arena 以 Claude Code function-hook mod 的形式提供(ADR-445 模式),hooks 会和插件一起载入。它增加竞技场、锦标赛和程序策略的自适应协同进化,公开六个 MCP 工具(arena/run、tournament/run、evolve/run、coevolve/run、run/get、run/list)以及 CLI。mod 通过 /arena-mod 报告状态,并在会话开始时写入 .claude-flow/arena-mod/status.json;不进行网络、进程或模型调用。使用 claude plugin validate/test 和随附的 smoke 脚本安装并测试。
安装
请先查看作者 README 确认 marketplace 和插件名称;命令可能随仓库结构改变。
claude plugin marketplace add ruvnet/ruflo claude plugin install ruflo-arena
原文 / README
ruflo-arena
Competitive ruliology for Ruflo swarms — arenas, tournaments, and adaptive co-evolution of program strategies. Implements the first executable slice of Ruflo ADR-147/148/150, following Stephen Wolfram's Games Between Programs: The Ruliology of Competition.
Strategies are programs (deterministic finite-state machines reading opponent history). They compete under payoff games; tournaments produce Wolfram's competitive array; hill-climb and mutual co-evolution discover winners empirically — because, per computational irreducibility, you have to run the competition to find out.
Install & test
cd plugins/ruflo-arena
npm install # light — runtime dep is just zod
npm run build # tsc -> dist/
npm test # vitest (engine + MCP tools + persistence)
npm run lint # eslint (typescript-eslint)
CLI
node dist/cli.js demo # tournament + evolution + co-evolution
node dist/cli.js tournament --game pd --rounds 200 --seed 1
node dist/cli.js arena --a tit-for-tat --b always-defect
node dist/cli.js evolve --game pd --generations 300 --seed 42
node dist/cli.js coevolve --game pd --generations 400 --seed 7
Sample PD ranking (mean-vs-field): grim ≈ 2.99, always-defect ≈ 2.76, tit-for-tat ≈ 2.50,
… always-cooperate ≈ 1.88. The evolution run climbs from a random FSM (~2.78) to ~3.00 with
the characteristic plateau→breakthrough fitness curve.
MCP tools (ruflo-arena/mcp-tools)
| Tool | Purpose |
|------|---------|
| arena/run | one deterministic match between two named strategies |
| tournament/run | round-robin → competitive array + mean-vs-field ranking |
| evolve/run | hill-climb an FSM vs the field; returns program + fitness curve |
| coevolve/run | mutual co-evolution (arms race) trace |
| run/get, run/list | fetch/list persisted run records |
All return { success, result | error } and validate inputs with Zod. See
commands/arena.md and docs/adrs/0001-arena-contract.md.
Persistence
Full run artifacts are written to .ruflo/arena/<runId>.json (exact replay). Each tool result
also carries an agentdb payload so the command layer can store a searchable summary via
mcp__plugin_ruflo-core_ruflo__memory_store (namespace arena) — the local stand-in for the RuVector data
layer (ADR-196/197), enabling queries like "tournaments where grim dominated".
Scope
v1 is intentionally Ruflo-only and core-untouched:
- In: simple-program + stochastic strategies, PD + zero-sum games, tournaments, hill-climb & co-evolution, file/AgentDB persistence, MCP tools + CLI.
- Out (tracked elsewhere): LLM-agent strategies + distillation (ADR-151), execution sandboxing/resource governance (ADR-153), dashboard UI (ADR-149/154), and the full RuVector data/intelligence layer (ADR-196–198, ADR-200).
Architecture
src/
domain/ types (+ Zod schemas) · games · strategies (FSM programs, library, mutation)
engine/ rng · arena (match) · tournament (competitive array) · evolution (hill-climb, co-evolution)
persistence/ RunStore (File + InMemory) + AgentDB record builder
report/ competitive-array tables · ASCII heatmaps · fitness sparklines
mcp-tools/ arenaTools: MCPTool[] (the 6 tools above)
index.ts export surface + default { tools }
cli.ts human-facing CLI
As a mod
Arena also ships as a function-hook mod (ADR-445 pattern; hooks in hooks/, loaded with the plugin). No network, no process, no model call.
- No guard: this plugin owns no tool a guard could usefully screen, so the mod only reports status.
/arena-mod: answered locally./arena-mod status,/arena-mod strategies.- Status file:
.claude-flow/arena-mod/status.json(version,updatedMs, counters), written at session start; the console reads it.
Test: claude plugin validate plugins/ruflo-arena, claude plugin test plugins/ruflo-arena (its vitest suites are *.spec.ts, so the kit collects only tests/mod.test.ts), and bash plugins/ruflo-arena/scripts/smoke.sh.