← 返回博客

安装 vs 进化:Plugin 架构做不到的事

我们深入研究了 ElizaOS 的 Plugin 架构——最流行的 Web3 Agent 框架之一——发现了六个结构性缺口,再多工程努力也无法弥合。缺失的不是代码,而是选择压力。

安装 vs 进化:Plugin 架构做不到的事

几乎每个主流 Agent 框架都附带一套 Plugin 系统。安装一个插件,获得一项能力。干净、模块化、开箱即用——直到你面前摆着 200 个声称做同一件事的 Plugin,却无从判断哪个真正好用。

我们花时间研究了 ElizaOS(原 ai16z/eliza),最成熟、最广泛使用的 Web3 Agent 框架之一。不是为了批评它——ElizaOS 拥有活跃的生态和真实的生产用例——而是为了理解一个更深层的问题:Plugin 架构在结构上能做什么,天花板在哪里?

答案揭示了一个关于 Agent 能力管理的根本性问题。


ElizaOS 如何组织能力

ElizaOS 使用一个清晰的四部分扩展模型:

组件 角色
Actions Agent 能什么——运行时由 LLM 选择执行的行为
Providers Agent 能看到什么——每次模型调用前注入的上下文数据
Evaluators Agent 能学到什么——响应后的处理器,提取事实、追踪目标
Services Agent 能连接什么——长期运行的后台服务

Plugin 将以上组件中的一个或多个打包成独立单元。AgentRuntime 在启动时加载 Plugin、注册组件,Agent 即刻就绪。

这是优秀的工程设计。关注点分离很干净。Plugin 接口足够简单,社区贡献得以规模化。ElizaOS 拥有 30 多个官方 Plugin,覆盖从 Discord 集成到 Solana DeFi 的各种场景。

但这个架构内含一个结构性假设:开发者决定什么是好的。


选择问题

当消息到达时,ElizaOS 将所有已注册的 Actions 呈给 LLM。LLM 阅读每个 Action 的名称、描述和示例,然后选择一个执行。这是LLM 直觉选择——模型的判断决定哪项能力被使用。

当你只有 5 个 Action 且各自做明显不同的事情时,这完全可行。但当同一领域有 50 个 Action 时就崩溃了——比如,5 个不同的"搜索网页"Plugin,各自方法略有不同。

哪个返回结果更准确?哪个边缘情况处理得更好?哪个成本更低?LLM 不知道。它根据描述文本和少量示例来选择,而不是基于测量过的性能。

没有适应度函数。没有基准测试。没有历史性能数据。LLM 在它从未评估过的能力之间盲目选择。

对比生物系统解决同一问题的方式:自然选择。生物体不根据描述来选择使用哪些基因。基因在环境中竞争,产生更好结果的那些得以传播。选择机制内置于系统中,而不是委托给外部裁判。


六个结构性缺口

将 ElizaOS 的架构与 Rotifer Protocol 对照研究,揭示了六项 Plugin 模型在结构上无法提供的能力:

1. 没有适应度评估

Plugin 要么已安装,要么未安装。没有任何定量指标衡量一个 Plugin 相对于替代品的表现。如果两个 Plugin 都实现"文本摘要",唯一的选择信号是开发者的判断或 LLM 的猜测。

Rotifer 的 Arena 通过标准化基准测试运行 Gene,计算 F(g)——一个乘法适应度分数,综合成功率、利用率、鲁棒性、延迟和成本。乘法结构意味着任何单项为零(零安全、零可靠性)都会使总适应度为零,无论其他维度表现如何。质量是被测量的,不是被假设的。

2. 没有沙箱隔离

ElizaOS Plugin 在与 AgentRuntime 相同的进程空间中运行。一个 Plugin 可以访问 Runtime 的全部内存、所有其他 Plugin 的数据以及宿主系统。一个恶意或有 bug 的 Plugin 可以危及整个 Agent。

Rotifer Gene 在 WASM 沙箱中执行,内存隔离,API 边界由 Binding 层控制。一个 Gene 不能访问另一个 Gene 的内存,不能进行未授权的网络调用,也不能逃逸出沙箱。

3. 没有跨环境可移植性

ElizaOS Plugin 绑定到 ElizaOS Runtime。如果你想在另一个框架中使用同样的能力,只能重写。没有中间表示,没有编译目标,没有正式的兼容性协商。

Rotifer Gene 编译为带有 Custom Sections(元数据、Schema、Phenotype)的 WASM IR。执行前,Runtime 运行 negotiate(R_ir, C_binding)——Gene 需求与 Binding 能力之间的正式兼容性检查。为本地执行编写的 Gene 可以在不修改的情况下验证 Cloud 或链上兼容性。

4. 没有传播机制

在 ElizaOS 中,Plugin 不会在 Agent 之间移动。如果 Agent A 发现了一个优秀的 Plugin 配置,Agent B 只有在人类手动安装相同 Plugin 后才能受益。没有自动化的机制让好能力传播。

Rotifer 实现了水平逻辑迁移(HLT)——灵感来自让 bdelloid rotifer 在没有有性生殖的情况下存活了 4000 万年的生物学机制。高适应度 Gene 按其适应度分数成比例地在网络中传播。好的能力自动扩散;差的不会。

5. 没有宪法层

ElizaOS 没有不可变约束层。任何行为都可以被后注册的 Plugin 覆盖。如果一个 Plugin 以相同的 serviceType 注册服务,它会静默替换已有的服务。没有不可打破的规则。

Rotifer 的 L0 Kernel 定义了宪法约束——没有 Gene、没有 Agent、没有进化过程可以修改它。游戏规则不会改变,即使玩家在进化。这映射了生物进化中的基本物理定律——重力不会进化,但一切受重力约束的事物都在进化。

6. 没有集体防御

当 ElizaOS 中发现恶意 Plugin 时,只有维护者看到公告的 Agent 才会受到保护。没有自动化的威胁广播,没有关于恶意行为者的集体记忆。

Rotifer 的 L4 Collective Immunity 层使得一个 Agent 检测到的威胁指纹可以在网络中传播,保护尚未遇到该威胁的 Agent。这是免疫系统记忆 B 细胞的计算类比。


这意味着什么

这六个缺口不是 bug。它们是一个根本性设计选择的架构后果:安装 vs 进化

Plugin 模型假设一个策展世界——某人(开发者、社区、市场)选择哪些能力可用,Agent 使用被给予的东西。当策展人判断力好且选项空间小时,这很有效。

Gene 模型假设一个竞争世界——能力通过测量的性能证明自己的价值,系统自动放大有效的、衰减无效的。当选项空间大到人类策展跟不上时,这才发挥作用。

维度 Plugin 模型(安装) Gene 模型(进化)
选择方式 开发者选择 + LLM 直觉 基于适应度的自然选择
质量信号 Stars、下载量、更新时间 F(g) 基准测试分数
安全性 信任开发者 WASM 沙箱 + V(g) 安全评分
可移植性 绑定特定 Runtime WASM IR + 能力协商
改进方式 手动更新 Arena 竞争 + HLT 传播
防御机制 手动公告 Collective Immunity 广播

两种模型都不是万能的。如果你有 10 个经过充分测试、由可信团队维护的 Plugin,安装模型更简单且完全够用。Gene 模型的额外开销只有在生态系统足够大、人类策展成为瓶颈时才值得——当你需要系统本身来区分质量时。


令人不安的问题

自 2023 年以来,Plugin 架构一直是 Agent 可扩展性的主流模式。它们熟悉、易理解,在小规模下运作良好。

但 AI Agent 生态正在快速增长。可用能力的数量每隔几个月就翻一倍。到某个时刻——许多生态系统已经到了——选项的数量超过了任何策展人的评估能力。

当这一刻到来时,问题不再是"我应该安装哪个 Plugin?"而是"我的 Agent 如何自己判断什么是好的?"

这正是 Gene 模型要回答的问题。不是用更花哨的东西取代 Plugin,而是添加 Plugin 在结构上不可能拥有的那个元素:选择压力


试一试: npm i -g @rotifer/playground · rotifer.dev · 文档