跳转到内容

基因生命周期命令

初始化新的 Rotifer 项目,包含创世基因和 Arena 预览。

Terminal window
rotifer init [项目名称]

参数:

参数必填说明
项目名称目录名称(默认为 my-rotifer-project

选项:

标志说明
--domain <域>默认基因域(默认:general
--fidelity <级别>示例基因保真度:Wrapped | Hybrid | Native(默认:Wrapped
--no-genesis跳过创世基因安装

生成的项目结构:

my-project/
├── rotifer.json # 项目配置
├── genes/ # 基因源码目录
│ ├── genesis-web-search/
│ ├── genesis-web-search-lite/
│ ├── genesis-file-read/
│ ├── genesis-code-format/
│ └── genesis-l0-constraint/
└── .rotifer/
└── playground.db # 本地 Arena 数据库

示例:

Terminal window
$ rotifer init my-project
项目已初始化于 ./my-project
$ cd my-project && rotifer arena list
# 显示预置创世基因的 Arena 排名

扫描源代码文件,发现可封装为基因的候选函数。

Terminal window
rotifer scan [路径]

参数:

参数必填说明
路径扫描路径(默认为 .

选项:

标志说明
--skills扫描 SKILL.md 文件而非源函数
--skills-path <目录>使用 --skills 时,指定扫描目录(默认:[路径].cursor/skills

支持的语言: TypeScript(.ts.js)、Rust(.rs

检测模式:

  • export function name()
  • export async function name()
  • export const name =
  • pub fn name() / pub async fn name()

示例:

Terminal window
$ rotifer scan src/tools/
扫描 src/tools/search.ts...
发现 3 个候选函数:
┌────┬──────────────┬──────────────────────┬──────┐
# │ 名称 │ 文件 │ 行号 │
├────┼──────────────┼──────────────────────┼──────┤
1 webSearch src/tools/search.ts 12
2 fileRead src/tools/file.ts 8
3 codeFormat src/tools/format.ts 5
└────┴──────────────┴──────────────────────┴──────┘

将函数封装为 Rotifer 基因,生成 Phenotype 和适配代码。

Terminal window
rotifer wrap <gene-name> --domain <域> [选项]

参数:

参数必填说明
gene-name基因名称

选项:

标志说明
-d, --domain <域>功能域(如 search.webfile.read
--fidelity <级别>保真度级别(默认:Wrapped
--from-skill <路径>SKILL.md 文件创建基因(路径指向 SKILL.md 或其目录)
--from-clawhub <slug>从 ClawHub 技能创建基因(自动下载并转换)

生成的文件:

genes/<gene-name>/
├── phenotype.json # 基因元数据(域、模式、保真度)
├── index.ts # Express 函数包装器
└── shim.ts # 兼容性适配层

示例:

Terminal window
$ rotifer wrap my-search --domain search.web
基因 'my-search' 封装成功
域: search.web
保真度: Wrapped
版本: 0.1.0

对基因执行沙箱测试,验证模式和行为。

Terminal window
rotifer test <gene-name> [选项]

参数:

参数必填说明
gene-name要测试的基因名称

选项:

标志说明
--verbose显示每个测试用例的详细输入/输出
--compliance运行结构性合规检查(沙箱、L0、燃料计量、IR 完整性)

自动执行的测试用例:

  1. 模式验证 — Phenotype 符合基因标准
  2. Express 函数 — 导出了可调用的 express() 函数
  3. 输入/输出一致性 — 输出匹配 outputSchema
  4. 错误处理 — 无效输入时优雅失败
  5. 空值检查express() 返回非空数据
  6. 沙箱执行 — 已编译基因通过 WASM 沙箱执行;未编译基因回退到 Node.js 并提示警告
  7. IR 验证 — WASM 模块包含所有必需的自定义段

使用 --compliance 时,额外运行 6 项结构性检查:

  • C1: 沙箱执行验证(sandbox_type == “wasm”)
  • C2: 燃料消耗验证(fuel_consumed > 0)
  • C3: L0Gate 预执行检查通过
  • C4: Phenotype 字段完整性(Gene Standard)
  • C5: F(g) 可计算性(所有输入指标可获取)
  • C6: IR 段完整性(自定义 WASM sections)

示例:

Terminal window
$ rotifer test my-search
正在测试 'my-search'...
Phenotype 模式有效
express() 返回成功
输出符合 outputSchema
错误处理正常
全部 4 个测试通过
适应度:F(g) = 0.8234 V(g) = 0.9100

将基因编译为 Rotifer IR(带自定义段的 WASM)。

Terminal window
rotifer compile [gene-name] [选项]

参数:

参数必填说明
gene-name基因名称(省略时自动检测)

选项:

标志说明
--check仅验证,不生成产物
--wasm <路径>预编译 .wasm 文件路径,封装为 IR
--lang <ts|wasm>强制编译模式(默认自动检测)

编译管线:

TypeScript 源码
↓ esbuild(打包 + 压缩)
WASI 兼容 JavaScript
↓ IR 编译器(QuickJS → WASM)
原始 WASM 模块
↓ Rotifer IR 注入器
gene.ir.wasm(带自定义段)

注入的自定义段:

  • rotifer.version — 协议版本
  • rotifer.phenotype — 序列化 Phenotype
  • rotifer.constraints — L0 约束元数据
  • rotifer.metering — 燃料/资源限制

示例:

Terminal window
$ rotifer compile my-search
正在编译 'my-search'...
管线:TypeScript esbuild IR 编译器 IR
编译成功
IR 哈希:a3f2b1...c4d5
大小: 142.3 KB
段: version, phenotype, constraints, metering

输出: genes/<gene-name>/gene.ir.wasm