你即将构建你的第一个 Gene(基因)——一个自包含、可进化的逻辑单元,能在 Rotifer 生态中参与竞争、传播和组合。整个过程大约五分钟。
我们要做的很简单:写一个问候基因,给它一个名字,它返回一句个性化的问候。虽然小,但会完整走过基因的整个生命周期——从写代码到提交 Arena 竞技场。
开始。
前置条件
- Node.js 20 或更高版本(下载)
- 一个终端(macOS Terminal、iTerm、Windows Terminal 等)
就这些。不需要 Rust 工具链,不需要 Docker,不需要云账号。CLI 会帮你搞定其余一切。
第 1 步:安装与初始化
全局安装 Rotifer CLI:
npm install -g @rotifer/playground或者,如果你不想全局安装,用 npx 一步到位:
npx @rotifer/playground init my-first-gene && cd my-first-gene无论哪种方式,你现在都可以使用 rotifer 命令了。验证一下:
rotifer --version你应该会看到类似 @rotifer/playground v0.x.x 的输出。
第 2 步:编写基因
创建基因目录和入口文件:
mkdir -p genes/hello-world用你喜欢的编辑器打开 genes/hello-world/index.ts,粘贴以下代码:
interface HelloInput { name: string;}
interface HelloOutput { greeting: string;}
export async function express(input: HelloInput): Promise<HelloOutput> { const name = input.name?.trim() || "World"; return { greeting: `你好,${name}!欢迎来到 Rotifer 生态。`, };}注意三件事:
express()是入口函数。 每个基因都导出一个异步express函数——这是 Rotifer 调用你逻辑的契约。- 类型化的输入和输出。 接口定义了基因的表型(phenotype)——它接受什么、产出什么。这套 schema 让基因之间可以自动组合。
- 纯逻辑,零依赖。 基因是自包含的。没有 import,没有副作用,没有框架样板代码。
第 3 步:包装基因
让 Rotifer 自动生成基因的元数据——它的 phenotype.json:
rotifer wrap hello-world你会看到类似的输出:
✔ Analyzed genes/hello-world/index.ts✔ Generated genes/hello-world/phenotype.json
Phenotype: domain: general.greeting fidelity: Native inputs: { name: string } outputs: { greeting: string }wrap 命令会分析你的代码,提取输入/输出 schema,生成一个表型描述文件。生态系统通过这个文件来发现、组合和评估你的基因——不需要阅读你的源码。
第 4 步:测试
在本地运行基因:
rotifer test hello-world预期输出:
🧬 Testing gene: hello-world
─── Test 1: default input ───Input: { "name": "Rotifer" }Output: { "greeting": "你好,Rotifer!欢迎来到 Rotifer 生态。" }Status: ✔ PASS (3ms)
─── Summary ───Total: 1 | Passed: 1 | Failed: 0test 命令会运行基因的 express() 函数,使用示例输入,并验证输出是否符合表型 schema。你也可以自定义输入:
rotifer test hello-world --input '{"name": "Alice"}'第 5 步:提交到 Arena
Arena 是基因竞争的竞技场。提交你的基因:
rotifer arena submit hello-world🏟️ Submitting hello-world to Arena...
✔ Phenotype validated✔ Gene uploaded✔ Evaluation complete
Arena Results: Gene: hello-world Domain: general.greeting F(g): 0.72 Rank: #3 of 5 in domain Status: Active
Your gene is now live in the Arena!Arena 通过**适应度函数(F(g))**评估你的基因——一个综合评分,考量正确性、资源效率、鲁棒性和利用率。你的基因现在会与同领域的其他基因展开竞争。如果它足够好,其他 Agent 可以通过水平逻辑迁移(HLT)发现并采纳它。
刚才发生了什么?
五分钟之内,你走完了基因的完整生命周期:
编写 → 包装 → 测试 → 提交每一步在 Rotifer 协议中的对应关系:
| 步骤 | 做了什么 | 协议层概念 |
|---|---|---|
| 编写 | 在 express() 中定义逻辑 | Gene = 模块化、类型化的函数 |
| 包装 | 生成 phenotype.json | Phenotype = 可发现的接口描述 |
| 测试 | 在本地验证输入/输出 | 校准层(L2 Calibration) |
| 提交 | 在 Arena 中参与竞争 | 竞争与交换层(L3 Competition & Exchange) |
你的基因现在是生态系统的一等公民了。它有类型化的接口、适应度评分和排名。其他基因可以与它组合,Agent 可以发现它,Arena 的选择压力会决定它能否存活下去。
这就是 Rotifer 的哲学:基因通过展示的适应度赢得位置,而不是靠人工审核。
接下来做什么?
你才刚刚触及表面。推荐的下一步:
- 基因开发指南 — 深入了解
express()的模式、错误处理和多输出基因 - 组合模式 — 将多个基因串联成 Pipeline 和 Workflow
- 云端发布 — 将基因发布到云端注册表,让全球任何 Agent 都能使用
深入阅读: 查看完整的快速入门指南,了解完整的 10 步流程。