Arena 是基因证明自身价值的地方。每个提交到 Arena 的基因都会收到一个适应度分数(F(g))和一个安全分数(V(g)) — 这两个指标决定了它的排名、生存和你的开发者声誉。
本教程将带你提交一个基因、理解它的评分、迭代改进它,并观察它攀升排名。
前置条件
- 已安装 Rotifer CLI(
npm i -g @rotifer/playground) - 准备好一个基因(参见 5 分钟创建你的第一个基因)
- (可选)Cloud 登录以参加全球 Arena(
rotifer login)
第一步:提交到 Arena
提交一个基因。如果还没有,创建一个 JSON 格式化器:
mkdir -p genes/json-fmt && cat > genes/json-fmt/index.ts << 'EOF'export async function express(input: { code: string; indent?: number }) { const indent = input.indent ?? 2; try { const parsed = JSON.parse(input.code); return { formatted: JSON.stringify(parsed, null, indent), valid: true }; } catch { return { formatted: input.code, valid: false }; }}EOF
rotifer wrap json-fmt --domain code.formatrotifer compile json-fmt提交:
rotifer arena submit json-fmtTesting 'json-fmt' before submission...✓ All tests passed
Submitting to Arena...✓ Gene 'json-fmt' submitted
Rank: #2 in code.formatF(g): 0.7834V(g): 0.9100Fidelity: Native第二步:理解评分
F(g) — 适应度分数
适应度函数将多个因素组合成一个 0.0–1.0 的分数:
| 因素 | 权重 | 衡量内容 |
|---|---|---|
| 正确性 | 0.30 | 输出是否匹配预期 schema? |
| 性能 | 0.25 | 执行时间和资源效率 |
| 可靠性 | 0.20 | 多次运行的一致性 |
| 保真度奖励 | 0.15 | Native > Hybrid > Wrapped |
| 多样性 | 0.10 | 频率依赖选择(稀有领域获得奖励) |
V(g) — 安全分数
安全验证是一个硬性门控,独立的 0.0–1.0 分数:
| 检查项 | 说明 |
|---|---|
| L0 约束 | 无文件系统、无网络(除非 Hybrid)、无 eval |
| Schema 合规 | 输入/输出匹配声明的表型 |
| 资源限制 | 燃料计量在范围内 |
| IR 完整性 | WASM 自定义 section 完好 |
准入门控
两个分数都必须超过阈值才能进入 Arena:
- F(g) >= 0.3(默认 τ)
- V(g) >= 0.7(默认 V_min)
如果任一不通过,基因被拒绝,并附带诊断反馈。
第三步:诊断低分原因
你的基因得到了 F(g) = 0.7834。看看为什么没有更高。检查详细分解:
rotifer arena submit json-fmt --verboseFitness Breakdown: Correctness: 0.92 ✓ 所有 schema 验证通过 Performance: 0.58 ⚠ 平均执行:12ms(目标:<5ms) Reliability: 0.95 ✓ 19/20 次运行一致 Fidelity: 0.70 Native WASM Diversity: 0.45 code.format 有 3 个竞争者
F(g) = 0.7834 V(g) = 0.9100瓶颈在于性能(0.58)。基因平均耗时 12ms — Arena 期望在 5ms 以内。
第四步:优化性能
JSON 格式化器使用 JSON.parse + JSON.stringify 没问题,但我们可以优化热路径:
export async function express(input: { code: string; indent?: number }) { const indent = input.indent ?? 2; const code = input.code.trim();
// 快速路径:已格式化或为空 if (!code || code === '{}' || code === '[]') { return { formatted: code, valid: code.length > 0 }; }
try { const parsed = JSON.parse(code); return { formatted: JSON.stringify(parsed, null, indent), valid: true }; } catch { return { formatted: code, valid: false }; }}重新编译并提交:
rotifer compile json-fmtrotifer arena submit json-fmtFitness Breakdown: Correctness: 0.92 Performance: 0.75 ↑ 平均执行:6ms Reliability: 0.95 Fidelity: 0.70 Diversity: 0.45
F(g) = 0.8234 ↑ (+0.04)更好了 — 性能从 0.58 提升到 0.75。
第五步:提升正确性
正确性分数是 0.92 — 还不完美。通常意味着边缘情况未处理。增加健壮性:
export async function express(input: { code: string; indent?: number }) { const indent = input.indent ?? 2; const code = (input.code ?? '').trim();
if (!code) { return { formatted: '', valid: false }; }
try { const parsed = JSON.parse(code); return { formatted: JSON.stringify(parsed, null, indent), valid: true }; } catch { // 尝试修复:去除尾逗号(常见错误) try { const cleaned = code.replace(/,\s*([\]}])/g, '$1'); const parsed = JSON.parse(cleaned); return { formatted: JSON.stringify(parsed, null, indent), valid: true }; } catch { return { formatted: code, valid: false }; } }}rotifer compile json-fmtrotifer arena submit json-fmt Correctness: 0.98 ↑ 边缘情况已处理 Performance: 0.74 Reliability: 0.97 ↑ F(g) = 0.8567 ↑ (+0.033)第六步:观察排名
实时监控基因排名:
rotifer arena watch code.formatWatching code.format rankings...
[14:32:01] json-fmt ↑ #2 → #1 (F: 0.82 → 0.86)[14:32:04] No changes[14:32:07] No changes
Press Ctrl+C to stop第七步:进军全球 Cloud Arena
本地 Arena 适合测试。要参加全球竞争:
rotifer loginrotifer arena submit json-fmt --cloud✓ Submitted to Cloud ArenaRank: #8 globally in code.format查看全球排名:
rotifer arena list --cloud -d code.format第八步:查看你的声誉
每次 Arena 提交都会影响你的开发者声誉:
rotifer reputation --mineDeveloper Reputation: Arena Score: 0.82 (基于基因排名) Usage Score: 0.45 (基于安装次数) Stability: 0.91 (基于基因一致性)
Overall: 0.73声誉是你的基因 Arena 表现、被他人使用频率和长期可靠性的综合评分。
优化循环
核心要点是迭代改进循环:
- 提交 → 获取 F(g) 分解
- 诊断 → 找到最弱因素
- 改进 → 针对性代码修改
- 重新提交 → 验证改进
- 观察 → 监控竞争位置
这就是生物进化的实际运作 — Arena 创造选择压力,你的基因进行适应。
高适应度技巧
- 处理边缘情况:null 输入、空字符串、畸形数据 — Arena 会测试所有情况
- 最小化执行时间:避免不必要的分配,对常见情况使用快速路径
- 保持确定性:相同输入应始终产生相同输出(可靠性分数)
- 选择正确的保真度:Native WASM 基础分 0.70,Wrapped 基础分 0.45
- 瞄准小众领域:多样性因子奖励竞争较少的领域
深入阅读: 参见基因标准规范了解完整适应度模型,Arena CLI 参考了解所有命令选项。