跳到内容
Lenso
简体中文
Esc
导航打开⌘J预览
本页内容

Plugin 是什么?

理解统一的 Plugin 模型、实现、Instance 以及 Capability 连接。

Plugin 是可以被团队构建、版本化、安装、配置、停用、更新和移除的 App 行为单元。 Agent Tool、Auth provider、Prompt source、Web endpoint 和 Session store 都可以是 Plugin。

Lenso 只有一种 Plugin 模型。Wasm、原生 Process、Linked Rust 和 Bun 是 Plugin 的实现或执行方式,不是不同的产品类型。

你会操作的四个对象

名称 它回答什么问题 示例
Plugin Contract 这个 Release 承诺什么行为和配置? company.uppercase@1.0.0 提供 Agent Tool Provider
Plugin Implementation 兼容 Host 如何执行这个 Contract? Wasm Component 或可信 Process
Plugin Instance App 中存在哪一个已配置副本? company.uppercase/default
Capability 这个 Plugin 如何与其他 Plugin 协作? lenso.agent.tool-provider@2

只有保持相同 Contract 和可观察行为时,一个 Release 才能包含多个实现。Host 会在 解析 App 之前选择一个兼容实现;运行时不会现场跑分,也不会在失败后自动回退到 另一个实现。

一个 App 可以从同一个 Plugin 创建多个 Instance。每个 Instance 都有自己的 key、 配置、资源、生命周期 Generation、endpoint 和 binding。

一个具体例子

第一个 App 教程会创建以下行为:

Plugin Release: company.uppercase@0.1.0
Contract:       提供 lenso.agent.tool-provider@2
Implementations:
  - wasm
  - process
App Instance:   company.uppercase/default
Visible Tool:   company.uppercase

删除 Plugin 目录,就会从该 App 删除它的软件包和 Instance。其他 Plugin 不会 直接访问它的私有 Rust 类型、文件或数据表。

Capability 负责连接 Plugin

Capability 是版本化的角色 Contract。它拥有 operation 和领域值,不拥有传输或 部署方式。consumer 只能收到 resolved App 显式绑定给它的强类型 client。

Capability 支持三种交互形态:

形态 用途 结果
Request 命令或查询 一个终结成功结果或 Domain Error
Stream 有界会话 强类型消息、half-close 和一个终结结果
Event 易失 fan-out 每个订阅者各自的准入结果

它们是 Capability operation 的形态,不是 Plugin 类型。一个 Linked Rust Plugin 可以在同一个生命周期中同时提供 Request、Stream 与 Event operation。

依赖会声明基数:必须有一个 provider、可选一个,或允许多个。App resolution 会在启动前闭合所有必需 binding。Plugin 代码不会从运行时 registry 中查找 provider。

Contract 的所有权

Plugin Contract 拥有:

  • Plugin ID 与 Release 版本;
  • 配置 Schema 与默认值;
  • 提供和依赖的 Capability;
  • restart policy 与 criticality;
  • 生命周期与状态语义。

每个实现拥有自己的 runtime artifact、target、entrypoint 与 Execution Class。 App owner 拥有 Instance、配置 patch、资源文件和 provider 选择。Host 拥有实际 可用的实现与 Adapter。

下一步阅读选择 Plugin 开发路径,决定该如何编写 Plugin。

最后更新于 2026年9月6日

这个页面有帮助吗?