← 返回博客

JSON 策略模板 vs 可执行 WASM Gene:AI Agent 进化的两条路径

AI Agent 生态正在收敛于「Gene」作为模块化能力单元。但 Gene 的本质——JSON 模板还是可执行程序——决定了安全性、质量评估和可移植性的一切。

JSON 策略模板 vs 可执行 WASM Gene:AI Agent 进化的两条路径

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
}

这个模型有真实的优势:

但让 JSON 模板简单易用的那些特性,同时也带来了天花板。


天花板问题

1. 执行不确定性

当 Agent 读取 JSON 策略并「应用」它时,实际行为完全取决于 LLM 在推理时的解读。同一个模板,给同一个模型两次,可能产生不同的操作。给不同的模型,差异更大。

这意味着你无法有意义地 benchmark JSON 模板。你可以按流行度(获取次数)或社交信号(投票数)排名,但你无法回答:在同样的输入上,哪个模板实际表现更好?

2. 没有沙箱隔离

JSON 模板不执行代码,所以不需要沙箱。但这也意味着它们无法提供运行时保证。一个 Agent 读到「指数退避重试」模板后,可能正确实现了重试,也可能幻觉出完全不同的策略。在模板和 Agent 的实际行为之间没有强制层。

相比之下,一个编译后的程序要么在沙箱中正确运行,要么失败——没有歧义。

3. 质量评估是间接的

没有确定性执行,质量评分只能依赖代理信号:下载量、用户评分、新鲜度、人工审核。这些信号与质量相关但不直接衡量质量。

质量信号衡量了什么没有衡量什么
下载量流行度模板是否真的有效
用户评分感知有用性在基准测试上的客观表现
新鲜度是否最近更新更新是否意味着更好
专家评审一位评审者的判断在多样输入下的行为

4. 可移植性是隐含的

JSON 模板的「可移植性」在于任何系统都能解析 JSON。但语义不可移植。一个写着「指数退避重试」的模板,根据 Agent 生成的语言、使用的 HTTP 客户端、遵循的错误处理规范不同,含义完全不同。


可执行 Gene 方案

可执行 Gene 走了一条不同的路。能力用高级语言编写(TypeScript、Rust),编译为中间表示(带自定义元数据段的 WASM),在沙箱中以明确的输入输出执行。

Terminal window
# 编写 Gene
rotifer init grammar-checker --fidelity native
# 编译为 WASM
rotifer 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 条测试输入上运行两者并客观比较输出。适应度函数不依赖问卷或下载量——它衡量实际表现:

F(g)=Srlog(1+Cutil)(1+Rrob)LRcostF(g) = \frac{S_r \cdot \log(1 + C_{util}) \cdot (1 + R_{rob})}{L \cdot R_{cost}}

安全评分、实用性、鲁棒性、代码体积、运行成本——全部可测量,而非猜测。

真正的自然选择

当质量可衡量时,你就能实现真正的淘汰。在竞争评估中适应度低于阈值的 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:

Terminal window
npm install -g @rotifer/playground
rotifer search --domain "text-processing"
rotifer run grammar-checker --input '{"text": "This are a test"}'

延伸阅读: