Docs / Package

安装包格式

Release ZIP 的根目录就是插件根目录。

目录

plugin.json
plugin.py
assets/

plugin.json 必须在 ZIP 根目录,entry 指向包内存在的文件,不接受包裹整个插件的上层目录。

运行时字段

必须提供 id、version、api_version、app_requires、execution 和 entry。独立进程插件还需要 rpc_api_version 与 route_prefix;RPC 权限应逐项声明。

安全限制

  • ZIP 不超过 100 MiB,解压总大小不超过 500 MiB,最多 5000 个条目。
  • 拒绝绝对路径、.. 路径、Windows 盘符路径、符号链接和重复条目。
  • 逐字节核对 ZIP 大小与 SHA-256;不信任文件名来推断清单内容。
  • 大型模型建议运行时按需获取,不打入插件 ZIP。

Release artifact

<plugin-id>-<semver>.zip
<plugin-id>-<semver>.zip.sig   # 可选

Registry 对 ZIP 原始字节计算 SHA-256,并在版本记录的 artifact.sha256 中保存 64 位小写十六进制摘要;artifact.size 记录同一 ZIP 的字节数。下载器必须同时核对大小与 SHA-256,二者任一不匹配都应拒绝安装。

可选签名

发布者可在 Publisher 记录的 signing_keys 中登记 Ed25519 公钥,并上传同名 .zip.sig JSON。当前签名方案固定为 ed25519-sha256-v1,签名消息是 UTF-8 字符串 fuckclassroom-plugin-artifact-sha256-v1:<sha256>。

{
  "scheme": "ed25519-sha256-v1",
  "key_id": "release-2026",
  "value": "<base64-ed25519-signature>"
}

value 是 64 字节 Ed25519 签名的 Base64。签名是可选的;一旦存在,导入器和 Release 校验 CI 都会要求 key_id 对应发布者已登记公钥,并验证签名。

没有找到插件