打包、签名与发布

适用版本:StablEdge 桌面端 0.4.4

插件以 .seplugin 包分发。打包工具会校验清单、计算 files 中每个文件的 SHA-256,并在有发布者密钥时为清单签名。不要用普通 ZIP 改后缀、手写哈希或伪造签名来代替打包。

在桌面端打包

桌面端的「插件创建模式」提供完整的开发闭环:

  1. 选择源码目录:选择包含 plugin.json 和 payload/ 的 <插件目录>。
  2. 校验项目:执行清单 schema、封闭文件集、图标、界面词表和技能文件的全部检查,失败时返回结构化错误码。
  3. 打包项目:输出 .seplugin。
  4. 启动预览 / 安装到预览环境:直接安装调试,不需要手动分发包。

在对话中,Agent 也可以调用宿主的打包工具 plugin_pack 完成同样的事:参数为 source_dir(源码目录)和 output_path(以 .seplugin 结尾的输出路径)。只想校验时,把 output_path 指向一个临时文件即可。

打包时校验什么

  • 清单符合 v3 schema;没有未知的贡献类型、权限、Worker 或服务;
  • 界面、技能、Worker 的入口文件存在;
  • files 封闭且哈希正确;没有重复的 ZIP 条目、路径跳转或符号链接。安装时文件集不符报 PLUGIN_PACKAGE_UNREADABLE,资源哈希不符报 PLUGIN_FILE_HASH_MISMATCH;
  • skills 只接受 1 项,超过时报 PLUGIN_MANIFEST_INVALID;
  • 包大小、文件数、单个文件和解压后的大小都在限制内;
  • 图标是 200×200 的 PNG,不超过 500 KiB;
  • 界面词表格式正确,技能文件符合规范;
  • 权限组合合法(见组合约束)。

签名

签名算法是 Ed25519。签名内容是一个固定的域分离前缀加上清单(不含签名字段)经 JCS 规范化后的 JSON;publisher_key_id 是发布者公钥的 SHA-256。

  • 在桌面端打包时,宿主用本机的发布者密钥签名。私钥只保存在本机,不会导出到目录、参数、日志或 Agent 上下文中。
  • 签名后修改 payload/ 中的任何文件,都会让哈希和签名失效,必须重新打包。
  • signature 和 publisher_key_id 由打包器写入,清单里不要手写。

来源与信任

来源判定安装条件
官方(Official)用官方公钥验签通过直接安装预览。
开发者(Developer)其他所有包,包括用本机发布者密钥签名的包和未签名包需要在「设置 → 插件 → 安装与签名」中打开「允许安装未签名插件」,并在安装预览中勾选确认“我了解该插件来源未经密码学验证”。

官方签名只代表来源,不会自动授予任何权限,也不会自动批准受信任 Worker 或本电脑模式。部分能力(如 ai_runtime)只对官方来源开放。

安装流程

  1. 用户双击 .seplugin,或在插件页选择「安装插件」,打开安装预览。
  2. 宿主把包解到临时目录,校验 schema、平台、最低版本、文件哈希和签名。
  3. 安装预览展示来源、必需权限、可选 Workspace 权限、声明的网络访问、受信任 Worker,以及安装后再授权的 Worker 权限。
  4. 用户确认后,宿主原子替换旧版本并登记。新安装的插件默认停用。

升级时如果发布者变了,安装会以 PLUGIN_PUBLISHER_CHANGED 拒绝。同一插件的数据(KV、Blob)在 plugin_id 和 workspace_id 不变的情况下一般会保留。

全局 Worker 服务包

全局 Worker 服务使用独立的 .seworker 包,需要先单独安装并启用,依赖它的插件才能解析到。插件不能自行下载或安装服务。

发布前检查

  1. 校验包,确认没有错误。
  2. 在安装预览中检查来源、权限、网络声明和受信任 Worker 是否符合预期。
  3. 启用插件,打开工作区,确认 ready、KV 读写和快照发布正常。
  4. 如声明了拖放,测试文件拖入;如绑定了 Agent,测试读取和动作,确认快照版本增长。
  5. 测试 Worker 调用和取消。
  6. 撤销权限、停用、卸载,确认插件能正确处理并且没有残留。
只完成了源码、还没有生成可验证的 .seplugin 时,请如实说明“尚未形成可安装包”,不要把源码目录当作发布产物。
本页目录