插件数据模型
本页供修改后端实现或排查持久化状态时查阅。首次开发插件先读 Quickstart,无需先了解全部数据库表。
数据分为版本声明、用户安装与权限、设备执行和消息处理四组。下表按职责列出插件记录;具体字段和状态以 service/migrations/、service/pkg/model/ 与 service/pkg/repo/plugin/ 为准。
目录与版本
plugin.json.name 是稳定标识。面向用户的名称由 extensions["com.liyanlabs"].displayName 声明,随不可变的 plugin_release 作者清单保存;未声明时显示标识。安装时从包读取,不要求用户另填名称。
安装与权限
设备与智能体运行时
外部操作与消息
权限与状态
能力声明是作者描述;plugin_permission 才是用户策略。读取、设备访问与入站事件使用 allow / deny;本地可撤销操作使用 prompt / allow / deny;外部写操作使用 prompt / deny。字段定义见 service/pkg/core/plugin/permission/service.go。
安装操作同时记录包回执和启用确认回执;只看到 succeeded 还应核对确认是否完成。接口会投影待确认状态,见 service/pkg/core/plugin/lifecycle/activation.go。
飞书和 GitHub 的操作凭据保存在设备。当前 API 的 provider OAuth 交换使用 unavailable 实现,见 service/pkg/web/database_plugin_routes.go;不要把现有 secret/OAuth 表写成可用的服务端凭据方案。
客户端模块图由当前安装、release capability、权限和设备状态投影而来,不存在独立的 UI 安装表。Web / 原生模块与 provider 属于同一插件版本;更新或撤销会使旧图失效。模块代码仍从确切 Runner 按授权读取。
长时间等待与失败应先按排障指南查看 operation、setup 和 health,不要直接修改数据库状态或插入权限记录。
包内图标
原生插件包通过 extensions["com.liyanlabs"].icon 指向一个包内 PNG、JPEG 或 WebP。打包器生成 icon 文件角色、大小与 SHA-256;原生导入和服务端都验证声明、角色、文件摘要、图片格式和尺寸。图标最多 256 KiB,宽高各不超过 1024 像素。服务端只保存这张公开图片的展示元数据,返回受限的 icon_data_url,不会返回可执行文件或设备路径。没有声明时使用通用插件图标;内置插件保留目录指定的品牌图标。图标不授予任何执行或数据权限。