← 返回博客

你的 Skill 有一个你不知道的上限

把 Skill 变成 Gene、编译、提交 Arena 打分。五分钟找到你的上限。

你的 Skill 有一个你不知道的上限

你写了一个 Skill。能跑,能用,用户也满意。

但有一个问题你可能一直没法回答:它到底有多好?

不是「能完成任务」——这个你已经知道了。而是跟所有处理同类问题的方案比,你的 Skill 排在哪里?前 10%?后半段?换一种实现方式,边缘情况会不会处理得更好?

只要没有一个不是你自己写的度量,你就不知道答案。你的 Skill 有一个上限——你只是看不见它。

这正是 Rotifer Gene + Arena 体系想解决的问题。

三条命令,Skill 变 Gene

Gene 是经过 WebAssembly IR 编译、带有机器可读 phenotype 清单、并注册到 Rotifer 生态的 Skill。整个过程大概五分钟。

安装 Rotifer CLI 并创建一个工作区——所有 Rotifer 命令都在工作区内执行:

npm install -g @rotifer/playground
rotifer init my-agent && cd my-agent

一条命令把 ClawHub Skill 包装成 Gene 脚手架。第一个参数是你想要的本地 Gene 名,--from-clawhub 接的是这个 Skill 在 ClawHub 上的 slug:

rotifer wrap my-gene --from-clawhub <clawhub-slug>

这会在本地生成一个 Gene 目录,包含你的代码和自动生成的 phenotype.json——里面描述了输入、输出和声明的领域。建议检查一下,领域标签决定了你的 Gene 会跟谁比。

同一条命令也能包装本地已有的 Skill,不用绕 ClawHub:

rotifer wrap my-gene --from-skill ~/.cursor/skills/my-skill/

编译 Gene 为 WebAssembly IR:

rotifer compile my-gene

编译器验证 phenotype 并输出可移植 WASM 二进制:

✓ Gene 'my-gene' compiled to Rotifer IR
  Gene ID: 5896324aba8548d6...
  Domain: general
  Fidelity: Native
  IR Hash: f076a966815b2c54...
  Output: ./genes/my-gene/gene.ir.wasm
  Size: 1199.9 KB

如果编译报错,多半是 phenotype.json 里缺少依赖声明,或者有函数签名 WASM 编译器处理不了。报错信息会精确到哪一行。

提交 Arena

按名字提交——Arena 会从工作区里解析这个 Gene:

rotifer arena submit my-gene

Arena 在 WASM 沙箱里跑这个 Gene,对照它声明的 Schema 检查输出,然后记录它实测到的东西:

✓ Gene 'my-gene' submitted to Arena
  Domain: general
  Fidelity: Native
  V(g): 1.0000
  Success Rate: 100.0%
  Latency Score: 0.1067
  Admission: PASSED
  Execution: Sandbox verified (3 runs)
  Recorded as: estimated

最后一行值得认真读,CLI 不是随口写的。这次运行是真的:Gene 在沙箱里执行了,输出被对照 Schema 检查过,延迟和成本都记录在案。但适应度公式里有两个输入项——社区利用率和对抗输入下的鲁棒性——目前还是占位值,效率项所对照的参照刻度也还是临时值。所以这个分数被标记为估算,暂不参与排名,上面那份记录里也因此没有列出它。你今天拿到的是一份可复现的执行记录和一个安全等级,而不是一份判决。

查看你的 Gene 排在哪里:

rotifer arena list --domain general
  Local Arena Rankings
  #   Name                  Domain    F(g)     V(g)     Fidelity
  ──────────────────────────────────────────────────────────────
  1   my-gene               general   1.0000   1.0000   Native

--cloud 则看已发布的注册表,而不是你自己的工作区。

分数是怎么来的

F(g) 不是谁给你打的主观分,它算自一次真实执行:对照声明 Schema 的正确性、多次沙箱运行的成功率、延迟与资源成本。V(g) 是另一条线——静态安全等级,它不是质量分,一个 Gene 完全可以既安全又没用。

这个分离正是关键。它改变了你优化 Skill 的方式:

  1. 看哪些沙箱运行失败了,以及为什么
  2. 对照这个领域真正要求什么,检查你的 phenotype
  3. 做针对性修改、重新编译、重新提交
  4. 看数字怎么动

对着一个度量迭代,和对着直觉迭代,是两回事——即使这个度量本身还在被打磨。

保真度:下一个台阶

Native 保真度意味着逻辑直接编译成了 WASM,没有 API 包装层。Wrapped Gene 在 Gene 接口和你的真实逻辑之间还隔着一层开销和潜在故障点——而且必须在 phenotype 里如实声明,因为使用者有权知道自己装的是哪一种。

如果想缩小差距,路径是:rotifer wrap → 优化 → rotifer compile → 重新提交。

但不是必须的。一个如实声明、把活干好的 Wrapped Gene,胜过一个干不好活的 Native——而保真度声明错了,是生态唯一绕不过去的那种失败。

动手试试

整个流程——包装、编译、提交、查看——对你已有的 Skill 来说大约五分钟。

npm install -g @rotifer/playground
rotifer init my-agent && cd my-agent
rotifer wrap my-gene --from-clawhub <clawhub-slug>
rotifer compile my-gene
rotifer arena submit my-gene
rotifer arena list

如果你跑了,欢迎把结果发出来——Gene 名字、领域、还有那几个数字。生态的质量取决于其中的 Gene。

你的 Skill 有一个上限。现在你有工具开始度量它了。