RELINK / PLUGINS

为 Relink,
创造更多可能。

从一个小工具到一种新的显示方式。使用开源 SDK 开发,在独立环境中调试,通过审核后交给大家使用。

API v1–v4 · 开源 SDK · 审核授权发布

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。

审核、版本与授权

  1. 提交未经签名的 .rlplugin、公开源码仓库及完整提交 SHA。
  2. 控制台核对代码与上传包的一致性、插件 ID 归属、权限必要性、依赖安全及素材发布权。
  3. 审核通过后,由服务端签名;签名绑定插件 ID、版本、权限和文件内容。
  4. 每次代码、素材、权限或版本变化,重新打包并审核,不能沿用旧签名。

上传不会自动获得授权。未经授权或被篡改的插件,插件宿主会按安全策略停止 Relink;普通插件崩溃只停用该插件。

撤销会立即关闭官网下载,并加入签名撤销清单。已安装客户端何时执行撤销取决于对应宿主版本的清单接入,不能把下架当成即时远程停用。

SUBMISSION

提交你的插件

提交后保存查询凭证。我们不会自动发送邮件,也不会公开你的联系邮箱。首次提交无需管理账号;作者身份与发布权由审核人员核验。

查询审核进度

AUTHORIZED PLUGINS

已授权插件

这里只展示控制台审核通过的插件。安装前请核对插件要求的客户端与 API 版本。

正在获取插件列表…

发布插件更新

保留插件 ID 和源码仓库,提高版本号,重新上传开发包与对应源码 SHA。每个版本分别审核,审核通过后才会出现在客户端的插件更新提示中。

用户在「设置 → 插件」点击更新,Relink 只重启该插件,保留独立设置与通话。新增权限需单独确认,失败会恢复原版本。此能力需要 Relink 1.0.6 补丁 1;三态浮窗声明 API v2,普通插件仍可使用 API v1。