基因生命周期命令
rotifer init
Section titled “rotifer init”初始化新的 Rotifer 项目,包含创世基因和 Arena 预览。
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 数据库示例:
$ rotifer init my-project✨ 项目已初始化于 ./my-project
$ cd my-project && rotifer arena list# 显示预置创世基因的 Arena 排名rotifer scan
Section titled “rotifer scan”扫描源代码文件,发现可封装为基因的候选函数。
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()
示例:
$ 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 wrap
Section titled “rotifer wrap”将函数封装为 Rotifer 基因,生成 Phenotype 和适配代码。
rotifer wrap <gene-name> --domain <域> [选项]参数:
| 参数 | 必填 | 说明 |
|---|---|---|
gene-name | 是 | 基因名称 |
选项:
| 标志 | 说明 |
|---|---|
-d, --domain <域> | 功能域(如 search.web、file.read) |
--fidelity <级别> | 保真度级别(默认:Wrapped) |
--from-skill <路径> | 从 SKILL.md 文件创建基因(路径指向 SKILL.md 或其目录) |
--from-clawhub <slug> | 从 ClawHub 技能创建基因(自动下载并转换) |
生成的文件:
genes/<gene-name>/├── phenotype.json # 基因元数据(域、模式、保真度)├── index.ts # Express 函数包装器└── shim.ts # 兼容性适配层示例:
$ rotifer wrap my-search --domain search.web ✓ 基因 'my-search' 封装成功
域: search.web 保真度: Wrapped 版本: 0.1.0rotifer test
Section titled “rotifer test”对基因执行沙箱测试,验证模式和行为。
rotifer test <gene-name> [选项]参数:
| 参数 | 必填 | 说明 |
|---|---|---|
gene-name | 是 | 要测试的基因名称 |
选项:
| 标志 | 说明 |
|---|---|
--verbose | 显示每个测试用例的详细输入/输出 |
--compliance | 运行结构性合规检查(沙箱、L0、燃料计量、IR 完整性) |
自动执行的测试用例:
- 模式验证 — Phenotype 符合基因标准
- Express 函数 — 导出了可调用的
express()函数 - 输入/输出一致性 — 输出匹配
outputSchema - 错误处理 — 无效输入时优雅失败
- 空值检查 —
express()返回非空数据 - 沙箱执行 — 已编译基因通过 WASM 沙箱执行;未编译基因回退到 Node.js 并提示警告
- 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)
示例:
$ rotifer test my-search 正在测试 'my-search'...
✓ Phenotype 模式有效 ✓ express() 返回成功 ✓ 输出符合 outputSchema ✓ 错误处理正常
全部 4 个测试通过 ✓ 适应度:F(g) = 0.8234 V(g) = 0.9100rotifer compile
Section titled “rotifer compile”将基因编译为 Rotifer IR(带自定义段的 WASM)。
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— 序列化 Phenotyperotifer.constraints— L0 约束元数据rotifer.metering— 燃料/资源限制
示例:
$ 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