DEVELOPMENT
从这里开始
SDK、打包工具、授权校验器与宿主隔离实现均已开源。插件使用 HTML、CSS 与 JavaScript,面向 Windows 桌面客户端;网页版不会加载桌面插件。
git clone https://github.com/Nightsuzu/relink-plugins.git
cd relink-plugins
npm test
node tools/create.cjs ../my-plugin
node tools/preview.cjs ../my-plugin
node tools/pack.cjs ../my-plugin my-plugin.unsigned.rlplugin需要 Node.js 22 或更高版本。create.cjs 从模板创建插件:语音页面板、聊天命令或 AI 助手,生成后直接能通过检查。预览器提供模拟的通话、成员、频道聊天和命令,不会操作你的真实通话;relinkPlugin.fetch 按和客户端相同的规则真实代发,方便调试 AI 接口。
在 Relink「设置 → 插件」打开插件开发者模式,选择插件文件夹即可在真实客户端里运行未签名的插件:保存文件自动重新加载,可以打开插件的开发者工具,查看插件的 console 输出和报错;清单有问题时会用中文指出具体哪一项。开发者模式只在本次运行有效。完整流程见 开发与调试指南。
插件清单
每个插件包含一个 manifest.json 和平级静态资源。签名安装包最大 100 MB,资源采用 Base64 存储,解码资源合计最多 75 MB;开发包需为授权信息预留 1 KB,最多 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、设备权限和任意导航;插件页面不能直接联网,需要联网时通过 API v4 的 net.fetch 由 Relink 代发到声明的网站。
| 能力 | 用途 |
|---|---|
voice.read | 读取房间名、成员数、静音与共享状态 |
voice.mute | 切换麦克风静音 |
voice.deafen | 切换耳机静音 |
app.show | 返回 Relink 主窗口 |
window.resize | 在宿主允许的尺寸内展开或收起 |
music.read / music.control / music.lyrics | 读取系统媒体信息、控制播放器、匹配同步歌词;分别申请 |
channels.read / channels.switch | 读取当前 Room 可见语音频道、请求切换;分别申请 |
net.fetch(v4) | 访问 manifest 里 network 声明的 HTTPS 网站,例如 AI 接口;不能访问内网,不带登录状态 |
secrets(v4) | 让用户填写 API Key;系统加密保存,插件读不到明文,只能在请求头里用 {{secret:id}} 引用 |
chat.read / chat.send(v4) | 读取当前文字频道消息和变化事件(需 Room 域主允许);以用户名义发消息,带“来自 插件名”标签,可发 Markdown,可修改自己 15 分钟内发的消息实现边生成边显示 |
chat.commands(v4) | 在聊天输入框注册 /命令,命令文字只交给插件 |
chat.history(v4) | 读取更早的消息和这个 Room 里能看到的其他文字频道(需同时有 chat.read,并由域主允许) |
notify / storage(v4) | 系统通知;本机保存插件数据(5 MB) |
window.relinkPlugin.onState(state => {
// 更新显示;不要保存或上传通话信息
});
window.relinkPlugin.action('show');
window.relinkPlugin.action('mute');
window.relinkPlugin.action('expand');准确的状态类型与接口见 TypeScript 接口定义。插件不能访问账号令牌、原始音视频或客户端内部桥接;聊天正文只有申请 chat.read 且 Room 域主允许时才能读取。API v4 完整说明与 DeepSeek 助手示例见 SDK 的 docs/api-v4.md 和 examples/deepseek-assistant。
审核、版本与授权
- 提交未经签名的 .rlplugin、公开源码仓库及完整提交 SHA。
- 控制台核对代码与上传包的一致性、插件 ID 归属、权限必要性、依赖安全及素材发布权。
- 审核通过后,由服务端签名;签名绑定插件 ID、版本、权限和文件内容。
- 每次代码、素材、权限或版本变化,重新打包并审核,不能沿用旧签名。
上传不会自动获得授权。未经授权或被篡改的插件,插件宿主会按安全策略停止 Relink;普通插件崩溃只停用该插件。
撤销会立即关闭官网下载,并加入签名撤销清单。已安装客户端何时执行撤销取决于对应宿主版本的清单接入,不能把下架当成即时远程停用。
SUBMISSION
提交你的插件
提交后保存查询凭证。我们不会自动发送邮件,也不会公开你的联系邮箱。首次提交无需管理账号;作者身份与发布权由审核人员核验。
查询凭证只在这里显示,请下载保存。凭证可以查询本次提交,不能授权或修改插件。
查询审核进度
AUTHORIZED PLUGINS
已授权插件
这里只展示控制台审核通过的插件。安装前请核对插件要求的客户端与 API 版本。
正在获取插件列表…