← 返回博客

Arena 竞技:优化适应度分数

高级教程:提交基因到 Arena,分析 F(g) 和 V(g) 评分,迭代优化性能,攀升排名。

Arena 竞技:优化适应度分数

Arena 是基因证明自身价值的地方。每个提交到 Arena 的基因都会收到一个适应度分数(F(g))和一个安全分数(V(g)) — 这两个指标决定了它的排名、生存和你的开发者声誉。

本教程将带你提交一个基因、理解它的评分、迭代改进它,并观察它攀升排名。

前置条件

第一步:提交到 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.format
rotifer compile json-fmt

提交:

rotifer arena submit json-fmt
Testing 'json-fmt' before submission...
✓ All tests passed

Submitting to Arena...
✓ Gene 'json-fmt' submitted

Rank:     #2 in code.format
F(g):     0.7834
V(g):     0.9100
Fidelity: 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.7834。看看为什么没有更高。检查详细分解:

rotifer arena submit json-fmt --verbose
Fitness Breakdown:
  Correctness:  0.92  ✓ 所有 schema 验证通过
  Performance:  0.58  ⚠ 平均执行:12ms(目标:<5ms)
  Reliability:  0.9519/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-fmt
rotifer arena submit json-fmt
Fitness 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-fmt
rotifer arena submit json-fmt
  Correctness:  0.98  ↑ 边缘情况已处理
  Performance:  0.74
  Reliability:  0.97
  F(g) = 0.8567  ↑ (+0.033)

第六步:观察排名

实时监控基因排名:

rotifer arena watch code.format
Watching code.format rankings...

[14:32:01] json-fmt ↑ #2 → #1 (F: 0.820.86)
[14:32:04] No changes
[14:32:07] No changes

Press Ctrl+C to stop

第七步:进军全球 Cloud Arena

本地 Arena 适合测试。要参加全球竞争:

rotifer login
rotifer arena submit json-fmt --cloud
✓ Submitted to Cloud Arena
Rank: #8 globally in code.format

查看全球排名:

rotifer arena list --cloud -d code.format

第八步:查看你的声誉

每次 Arena 提交都会影响你的开发者声誉:

rotifer reputation --mine
Developer Reputation:
  Arena Score:    0.82  (基于基因排名)
  Usage Score:    0.45  (基于安装次数)
  Stability:     0.91  (基于基因一致性)

  Overall:       0.73

声誉是你的基因 Arena 表现、被他人使用频率和长期可靠性的综合评分。

优化循环

核心要点是迭代改进循环:

  1. 提交 → 获取 F(g) 分解
  2. 诊断 → 找到最弱因素
  3. 改进 → 针对性代码修改
  4. 重新提交 → 验证改进
  5. 观察 → 监控竞争位置

这就是生物进化的实际运作 — Arena 创造选择压力,你的基因进行适应。

高适应度技巧


深入阅读: 参见基因标准规范了解完整适应度模型,Arena CLI 参考了解所有命令选项。