DOC / PLUGINS / GUIDE
SLai 插件使用说明
给使用者看的:怎么装、怎么开、怎么更新、坏了怎么修。
想自己写插件 → 看同目录README.md(开发者手册)。
一、插件是什么
插件是一个独立的小程序集,挂在 SLai 里接收检测结果,做检测之外的事:
| 插件 | 做什么 |
|---|---|
| 设备控制 | 把检测框转成键鼠 / 串口动作 |
| 目标追踪 | 跨帧跟踪 + 速度预测,锁定目标 |
| 样板插件 | 开发者起点:计数、叠加文字、设置面板 |
插件在独立上下文里加载:插件崩了,主程序不受影响,卸载即恢复。
二、安装
2.1 三种安装方式
| 方式 | 操作 |
|---|---|
| zip 直投 | 把 xxx.zip 丢进安装目录的 plugins\,重启软件 |
| 目录直投 | 把含 plugin.json 的目录整个丢进 plugins\,重启软件 |
| 软件内安装 | 插件页 →「浏览插件市场」→ 下载安装(自动放好并重载) |
2.2 目录结构(安装后应该长这样)
plugins\
device-control-5.5\
plugin.json ← 必需:id / name / version / entryAssembly / entryType
DeviceControl.dll ← 入口程序集
plugin.json ← 插件说明(不要手改)
注意:两个插件目录不能用同一个 id,否则宿主只认一个(按 id 去重)。
2.3 装完检查
插件页应出现该插件卡片;状态为「未运行」。没出现就对照第三章排错。
三、启用 / 停用 / 配置
- 加载:卡片右侧「加载」→ 状态变「运行中」,状态栏出现
已加载插件: 名称 - 停用:「卸载」→ 插件停止接收数据,目录保留
- 配置:卡片出现「设置」按钮说明插件带配置面板
- 重载:改了配置或替换了文件 → 「刷新」或重启软件
插件能拿到什么:检测结果(类别、置信度、框)、画面尺寸、宿主状态栏/叠加层、
模型与软件信息(通过 IPluginHost)。
四、更新
| 情况 | 做法 |
|---|---|
| 市场提示有新版 | 点「更新」,宿主替换目录并重新加载 |
| 手动更新 | 用新目录覆盖 plugins\<id>\(整目录替换),重启软件 |
| 只想试用新版本 | 新版本换个目录名 + 改 plugin.json 的 id(如 -beta),两版共存 |
不要只替换部分 dll:文件不完整会导致加载被拒。
五、卸载
- 软件内「卸载」→ 插件停止
- 关闭软件 → 删除
plugins\<插件目录> - 重开软件,卡片消失
残留的叠加层(画在预览上的文字/框)在插件卸载后应被清理;没清干净就重启软件。
六、排错
| 现象 | 原因 | 处理 |
|---|---|---|
| 装完列表里没有 | plugin.json 缺字段 / entryAssembly 指向的 dll 不存在 / entryType 写错 | 打开 plugin.json 逐项核对 |
| 有卡片,点加载报错 | 入口类型没实现 IYoloPlugin,或构造抛异常 | 看 %LOCALAPPDATA%\SLai\error.log |
| 加载被拒:完整性失败 | 文件被改过 / 解压不完整 | 重新解压原包,不要改文件 |
| 两个版本只生效一个 | 目录 id 重复 | 改 id 或删掉旧的 |
| 加载后界面卡顿 | 插件在后台线程直接改 UI | 卸载并反馈作者(应走 InvokeOnUI) |
| 检测框延迟明显变大 | 插件 OnDetections 里做了重活 | 卸载该插件对比帧率 |
| 卸载后仍有框/文字 | 插件没清叠加层 | 重启软件 |
排查顺序:插件页状态 → error.log → plugin.json → 完整性文件。
七、安全提醒
- 插件是本地代码,能力和主程序一样大。只装来源可信的插件。
- 插件市场里的官方插件经过审核;第三方插件请先在沙箱或虚拟机里试。
- 不要安装声称"绕过授权""解除限制"的插件 —— 这类插件会改写程序行为并可能导致封号。
八、获取插件
- 软件内:插件页 →「浏览插件市场」
- 官网:
jwdgd.asia(插件页有清单与版本) - 客服 QQ:3247131402 / 3225324877(工作日 10:00–22:00)