AI Agent 基础设施领域正在浮现一个共识模式:模块化能力单元,Agent 可以发现、安装和共享。 不同项目对这些单元有不同的叫法——Skill、Tool、Capsule、Gene——但核心思想正在趋同。Agent 不应该是单体的,它们应该从共享生态中组装能力。
各项目分歧最大的地方——看似细节,实则决定一切——是这个问题:能力单元到底由什么构成?
一个答案:JSON 文档。一个结构化的策略模板,LLM 读取、理解、自行决定如何执行。
另一个答案:编译后的 WASM 二进制。一个在沙箱中运行的可执行程序,有确定性的输入和输出。
这不是风格偏好,而是一个架构级分叉,它决定了「进化」对于 AI Agent 究竟意味着什么。
JSON 模板方案
JSON 策略模型的工作方式:将能力编码为一个结构化文档,包含问题描述、触发条件、推荐策略和置信度分数。当 Agent 遇到匹配的情境时,它读取模板并决定如何应用建议。
{ "type": "Capsule", "summary": "Retry with exponential backoff on timeout", "signals_match": ["timeout_error", "connection_reset"], "strategy": "repair", "confidence": 0.95}这个模型有真实的优势:
- 零门槛。 任何 LLM 都能读 JSON。不需要编译器、运行时或沙箱。
- 框架无关。 GPT、Claude、Gemini、开源模型——任何能处理文本的模型都能使用。
- 创建快速。 Agent 遇到问题 → 生成修复方案 → 打包为 JSON → 发布。整个周期可以在一个会话内完成。
- 低风险。 因为不执行代码,所以没有代码注入攻击面。一个坏模板最多只能给出坏建议。
但让 JSON 模板简单易用的那些特性,同时也带来了天花板。
天花板问题
1. 执行不确定性
当 Agent 读取 JSON 策略并「应用」它时,实际行为完全取决于 LLM 在推理时的解读。同一个模板,给同一个模型两次,可能产生不同的操作。给不同的模型,差异更大。
这意味着你无法有意义地 benchmark JSON 模板。你可以按流行度(获取次数)或社交信号(投票数)排名,但你无法回答:在同样的输入上,哪个模板实际表现更好?
2. 没有沙箱隔离
JSON 模板不执行代码,所以不需要沙箱。但这也意味着它们无法提供运行时保证。一个 Agent 读到「指数退避重试」模板后,可能正确实现了重试,也可能幻觉出完全不同的策略。在模板和 Agent 的实际行为之间没有强制层。
相比之下,一个编译后的程序要么在沙箱中正确运行,要么失败——没有歧义。
3. 质量评估是间接的
没有确定性执行,质量评分只能依赖代理信号:下载量、用户评分、新鲜度、人工审核。这些信号与质量相关但不直接衡量质量。
| 质量信号 | 衡量了什么 | 没有衡量什么 |
|---|---|---|
| 下载量 | 流行度 | 模板是否真的有效 |
| 用户评分 | 感知有用性 | 在基准测试上的客观表现 |
| 新鲜度 | 是否最近更新 | 更新是否意味着更好 |
| 专家评审 | 一位评审者的判断 | 在多样输入下的行为 |
4. 可移植性是隐含的
JSON 模板的「可移植性」在于任何系统都能解析 JSON。但语义不可移植。一个写着「指数退避重试」的模板,根据 Agent 生成的语言、使用的 HTTP 客户端、遵循的错误处理规范不同,含义完全不同。
可执行 Gene 方案
可执行 Gene 走了一条不同的路。能力用高级语言编写(TypeScript、Rust),编译为中间表示(带自定义元数据段的 WASM),在沙箱中以明确的输入输出执行。
# 编写 Generotifer init grammar-checker --fidelity native
# 编译为 WASMrotifer compile grammar-checker
# 确定性 I/O 执行rotifer run grammar-checker --input '{"text": "This are a test"}'# → {"corrected": "This is a test", "changes": 1}Gene 的行为由其代码定义,不取决于 LLM 如何解读描述。同一个 Gene,给同样的输入,无论哪个 AI 模型调用它、在哪个平台、在什么时间,都产生同样的输出。
这使得 JSON 模板在结构上做不到的事情成为可能:
直接竞争评估
如果两个 Gene 都声称做语法检查,你可以在相同的 1,000 条测试输入上运行两者并客观比较输出。适应度函数不依赖问卷或下载量——它衡量实际表现:
安全评分、实用性、鲁棒性、代码体积、运行成本——全部可测量,而非猜测。
真正的自然选择
当质量可衡量时,你就能实现真正的淘汰。在竞争评估中适应度低于阈值的 Gene 会被从生态中移除。这创造了真实的进化压力——不只是一个排序算法,而是一个有后果的选择机制。
JSON 模板可以被排名,但没有客观衡量表现的方法,你无法建立可信的淘汰机制。低排名的模板不断积累,生态最终面临「经验通胀」问题——信噪比持续恶化。
运行时安全保证
WASM 沙箱隔离意味着每个 Gene 运行在自己的内存空间中。除非通过基于能力的权限模型显式授权,它无法访问文件系统、网络或其他 Gene 的状态。一个恶意或有缺陷的 Gene 只会崩溃自己,不会影响宿主 Agent。
JSON 模板的安全性是信任问题——你信任建议是好的。可执行 Gene 的安全性是强制问题——沙箱阻止不良行为,无论意图如何。
真正的可移植性
从 TypeScript 编译的 WASM 二进制在云服务器、本地机器、浏览器或边缘设备上运行完全相同。中间表示(IR)保证跨环境的行为等价性。Gene 不需要为每个平台重新解释——它在所有地方运行一致。
取舍是真实的
这并不意味着可执行 Gene 在每个维度上都「更好」。取舍很清楚:
| 维度 | JSON 模板 | 可执行 WASM Gene |
|---|---|---|
| 创建第一个 Gene 的时间 | 分钟 | 小时 |
| 开发者技能要求 | 描述一个策略 | 编写可编译的代码 |
| LLM 兼容性 | 任何模型都能读 JSON | 模型无关(代码不需要 LLM 即可运行) |
| 生态冷启动速度 | 快 | 慢 |
| 执行确定性 | 无(取决于 LLM) | 完全(沙箱强制) |
| 质量衡量 | 间接(代理信号) | 直接(适应度基准测试) |
| 淘汰机制 | 排名(无真正淘汰) | 自然选择(低于阈值 = 移除) |
| 安全模型 | 基于信任 | 基于强制 |
| 可移植性 | 解析级(任何 JSON 解析器) | 语义级(跨运行时行为一致) |
JSON 模板更适合快速知识共享。如果 Agent 发现指数退避重试能修复超时错误,把它打包为 JSON 模板立即分享是有价值的。不是每个能力都需要编译成程序。
可执行 Gene 更适合正确性重要、需要比较、安全必须强制的能力——语法检查、数据转换、代码分析、安全扫描、API 集成。任何「取决于 LLM 怎么理解」不是可接受答案的场景。
它们不是在竞争——它们是分层的
最有用的框架不是「谁赢」,而是「各自服务于哪一层」。
┌──────────────────────────────────┐│ 策略层 (JSON 模板) │ ← "如何处理这类问题"├──────────────────────────────────┤│ 能力层 (WASM Gene) │ ← "执行这个具体方案"├──────────────────────────────────┤│ 编排层 (框架) │ ← "将能力链接为工作流"├──────────────────────────────────┤│ 接口层 (MCP / A2A) │ ← "发现和调用能力"└──────────────────────────────────┘Agent 可能先查阅 JSON 策略模板来决定采取哪种方法,然后调用可执行 WASM Gene 来实际执行。策略层提供启发式判断;能力层提供确定性执行。
生物进化也是这样运作的。行为策略(何时逃跑、何时战斗)编码在灵活的、依赖上下文的神经模式中。但实际执行这些策略的分子机器——蛋白质折叠、酶催化、膜转运——以化学确定性运行。两个层级都在进化,但通过不同的机制。
这对生态意味着什么
如果你今天在构建 AI Agent 基础设施,选择哪种方案决定了你的天花板:
JSON 模板让你快速扩展并降低门槛,但最终会面临质量通胀(模板太多,没有可靠的排名方式)和安全问题(「如果一个模板给强大的 Agent 危险的建议怎么办?」)。
可执行 Gene冷启动更慢,但提供了真正质量选择和运行时安全所需的基本原语。投入前置于编译、沙箱和评估基础设施——但一旦就位,生态可以在没有人工策展的情况下自选择高质量能力。
AI Agent 生态仍处于早期,两条路径都在被探索。清楚的是,「Gene」隐喻——模块化、可转移、可评估的能力——正在胜出。开放的问题是 Gene 由什么构成。答案决定了下游的一切。
安装 Rotifer CLI,体验可执行 Gene:
npm install -g @rotifer/playgroundrotifer search --domain "text-processing"rotifer run grammar-checker --input '{"text": "This are a test"}'延伸阅读: