DEVELOPMENT
从这里开始
SDK、打包工具、授权校验器与宿主隔离实现均已开源。插件使用 HTML、CSS 与 JavaScript,面向 Windows 桌面客户端;网页版不会加载桌面插件。
git clone https://github.com/Nightsuzu/relink-plugins.git
cd relink-plugins
npm test
node tools/preview.cjs examples/hello-relink
node tools/pack.cjs examples/hello-relink my-plugin.unsigned.rlplugin需要 Node.js 22 或更高版本。修改示例的插件 ID、名称和版本,再提交自己的开发包。预览器提供模拟状态,不会操作你的真实通话。
插件清单
每个插件包含一个 manifest.json 和平级静态资源。开发包最大 2 MB,解码资源合计最大 1 MB,最多 32 个文件。
{
"id": "my-relink-plugin",
"name": "我的 Relink 插件",
"version": "0.1.0",
"apiVersion": 1,
"entry": "index.html",
"description": "说明这个插件解决什么问题",
"capabilities": ["voice.read", "app.show", "window.resize"]
}ID 使用 3–64 个小写字母、数字和短横线,首位必须是字母。版本使用三段数字。仅允许平级 HTML、JS、CSS、SVG、PNG 和 WebP 文件;不能包含路径、原生模块或依赖目录。
作者与独立设置
在清单中通过 author.name 声明作者,author.avatar 指向包内 PNG 或 WebP 头像(最多 200 KB)。作者与头像会显示在客户端和插件中心,并参与发布签名。
settings 可声明最多 12 个布尔开关或整数滑条。每个插件有自己的下拉设置区域,按插件 ID 保存;使用 getSettings、updateSettings 和 onSettings 读取、更新与订阅,不能操作其他插件的设置。
能力与接口
只申请实际需要的能力。宿主采用隔离窗口,关闭 Node.js、网络请求、设备权限和任意导航。
| 能力 | 用途 |
|---|---|
voice.read | 读取房间名、成员数、静音与共享状态 |
voice.mute | 切换麦克风静音 |
voice.deafen | 切换耳机静音 |
app.show | 返回 Relink 主窗口 |
window.resize | 在宿主允许的尺寸内展开或收起 |
music.read / music.control / music.lyrics | 读取系统媒体信息、控制播放器、匹配同步歌词;分别申请 |
channels.read / channels.switch | 读取当前 Room 可见语音频道、请求切换;分别申请 |
window.relinkPlugin.onState(state => {
// 更新显示;不要保存或上传通话信息
});
window.relinkPlugin.action('show');
window.relinkPlugin.action('mute');
window.relinkPlugin.action('expand');准确的状态类型与接口见 TypeScript 接口定义。插件不能访问账号令牌、聊天正文、原始音视频或客户端内部桥接。
审核、版本与授权
- 提交未经签名的 .rlplugin、公开源码仓库及完整提交 SHA。
- 控制台核对代码与上传包的一致性、插件 ID 归属、权限必要性、依赖安全及素材发布权。
- 审核通过后,由服务端签名;签名绑定插件 ID、版本、权限和文件内容。
- 每次代码、素材、权限或版本变化,重新打包并审核,不能沿用旧签名。
上传不会自动获得授权。未经授权或被篡改的插件,插件宿主会按安全策略停止 Relink;普通插件崩溃只停用该插件。
撤销会立即关闭官网下载,并加入签名撤销清单。已安装客户端何时执行撤销取决于对应宿主版本的清单接入,不能把下架当成即时远程停用。
SUBMISSION
提交你的插件
提交后保存查询凭证。我们不会自动发送邮件,也不会公开你的联系邮箱。首次提交无需管理账号;作者身份与发布权由审核人员核验。
查询凭证只在这里显示,请下载保存。凭证可以查询本次提交,不能授权或修改插件。
查询审核进度
AUTHORIZED PLUGINS
已授权插件
这里只展示控制台审核通过的插件。安装前请核对插件要求的客户端与 API 版本。
正在获取插件列表…