Gene 组合代数
Rotifer 提供五个组合算子,将简单 Gene 组合为复杂行为——带编译时类型检查、结构化错误传播和适应度继承。
| 算子 | 语义 | 示例 |
|---|---|---|
Seq(A, B, C) | 顺序管道 — A 的输出传给 B,再传给 C | 搜索 → 摘要 → 翻译 |
Par(A, B) | 并行执行 — 同时运行 A 和 B,收集所有结果 | 同时查询 3 个搜索引擎 |
Cond(p, T, F) | 条件 — 根据运行时谓词选择 Gene | 长查询 → 深度研究;短查询 → 快速搜索 |
Try(P, F) | 降级 — 主 Gene 失败则运行备选 | 付费 API → 免费 API |
Transform(inner, mapper) | 后处理 — 运行 inner,将输出传给 mapper Gene | 获取数据 → 格式化为 Markdown |
组合在编译时进行类型检查。Seq(A, B) 要求 Gene A 的输出 schema 与 Gene B 的输入 schema 兼容。不兼容的 schema 在代码运行前就会产生错误。
Seq(search, translate) ├─ search.outputSchema: { results: string[] } └─ translate.inputSchema: { text: string } ✗ Schema 不匹配 — 编译错误组合后的 Gene 从其组件继承适应度。Arena 将组合作为整体评估:
Seq(A, B)— 适应度反映端到端性能(延迟累加,正确性相乘)Par(A, B)— 适应度反映聚合质量(延迟取最大值,结果合并)Try(P, F)— 适应度考虑降级率(频繁降级会降低分数)
工具注册表允许在应用代码中串联工具。Rotifer 将组合变为一等协议原语:
- 协议验证组合,不仅仅是单个 Gene
- 组合与原子 Gene 一起在 Arena 中竞争
- Agent 可以发现并采用预组合的管道,而不仅仅是单个工具
- 组合模式指南 — 实用示例和模式