StablEdge 插件是一个签名或经用户确认安装的 .seplugin 包。插件可以在桌面端里提供自己的工作区界面、顶部栏小部件、Agent 技能,以及在后台运行的 Worker 进程。宿主负责加载、隔离和授权;插件只能使用清单里声明、并被用户授予的能力。
插件能做什么
| 贡献类型 | 清单字段 | 说明 |
|---|---|---|
| 工作区界面 | contributions.workspaces | 在沙箱 iframe 里运行的 HTML 页面,可替换文件区、编辑区或两者,通过 Workspace Bridge 与宿主通信。 |
| 顶部栏项 | contributions.topbar_items | 显示在顶部栏的小部件:静态文字、由 Worker 方法刷新的数值,或嵌入的小页面。 |
| 技能 | contributions.skills | 一份 Markdown 说明,告诉 Agent 如何使用本插件。 |
| 资源 | contributions.resources | 随包分发的静态资源,例如图标、示例数据。 |
| 知识源 | contributions.knowledge_providers | 声明一个提供知识检索的 Worker。目前只通过清单校验,宿主尚未消费。 |
| Worker | workers | 在独立进程中运行的后台逻辑,使用 JSON-RPC 与宿主通信。 |
| 后台任务 | triggers、event_channels | 按间隔、启动或唤醒时调用 Worker;或保持 SSE、WebSocket、Webhook 长连接。 |
| 凭据 | credentials | 由宿主保管的静态密钥或 OAuth2 令牌,按声明注入到 Worker 的请求中。 |
一个插件至少要提供 knowledge_providers、workspaces、skills、resources 中的一项。
运行结构
- 宿主(Host):StablEdge 桌面端。负责安装校验、权限授予、会话管理,所有网络和文件访问都由宿主代为执行。
- 工作区界面:包内的
payload/ui/*.html,在受 CSP 限制的 iframe 中运行,只能通过window.stabledgePluginSDK 调用宿主。 - Worker:包内的
payload/worker/*,作为子进程运行,通过标准输入输出上的 JSON-RPC(协议版本2.0)与宿主交换消息。 - 服务(Service):宿主或其他插件公开的可调用服务,插件通过
service.invoke权限访问。
安全模型
- 封闭文件集:清单的
files列出包内每个文件的 SHA-256,安装时逐一核对,多出或缺少文件都会拒绝安装。 - 最小权限:所有能力都要在
requested_permissions中声明。必需权限在安装时授予,可选权限由用户勾选。 - 签名与信任:通过官方公钥验签的插件为「官方」来源;其余插件按「开发者」来源处理,需要用户在设置中允许安装未签名插件。
- 默认停用:新安装的插件默认处于停用状态,由用户手动启用。
协议版本
当前清单协议为 v3("schema_version": 3)。v1 和 v2 清单仍可安装,仅用于兼容和迁移;新插件一律使用 v3。
下一步
- 快速开始:从零写一个工作区插件并安装到桌面端。
- Manifest 参考:清单字段完整说明。
- 权限:14 项权限的用途和授权方式。
- 示例插件:内置 PC Control 插件与常见清单写法。