插件管理
插件通过 Python 扩展斜杠命令、消息匹配规则、定时播报、聊天模型工具、后台任务技能,或按群接管长期记忆与回想压缩。LenBot 核心不内置具体业务功能,官方业务插件按需独立安装与升级。
官方插件目录
内置插件目录(plugin_catalog.json)收录三个官方插件,可在首次配置向导或面板插件 → 发现插件中直接安装:
| 插件 | 主要功能 |
|---|---|
群聊总结与群工作(group_digest) | /群日报 生成图文总结卡片并支持每日定时播报,/群总结 生成文字摘要,/群工作 委派后台长任务;同时提供对应的聊天模型工具 |
GSUID Core 桥接(gscore_adapter) | /gs 将指令桥接至独立运行的 GSUID Core 服务并由宿主发送返回图文,提供 /gs连接 重连指令与连接状态查询工具 |
哔哩哔哩(bilibili) | 公开视频、分 P、搜索与评论查询,订阅直播间开播/下播与关注 UP 主动态推送,以及经主人明确授权的账号读取与点赞收藏操作 |
官方目录默认使用随当前宿主版本测试固定的提交。发现插件同时列出社区插件目录收录的插件,卡片上标明官方或社区,可按来源筛选;在自定义目录中还可以填入一个自建目录的地址。
安装与按群启用
在插件 → 发现插件(或已安装 → 安装插件)中支持三种安装来源:
- 从插件目录挑选:一键拉取官方、社区或自定义目录中的插件。
- 从 Git 仓库安装:填写 HTTP(S) 或
ssh://仓库地址,可选填标签、分支或提交哈希(主机需已安装git)。 - 导入 ZIP 文件:上传打包好的插件发行归档(支持离线环境)。
安装采用安全的两阶段候选机制,准备期间不影响正在运行的旧版本:
- 准备候选版本:下载或解压源码至
plugins/.candidates/<名称>,校验plugin.toml清单中的接口代次、宿主版本范围、Python 版本和操作系统平台。 - 填写参数并应用:在插件详情的设置页签补全必填参数后点击应用(新插件点击保存并启用)。若 Python 依赖未变化且插件声明
reload = "plugin",宿主当场热加载该插件;若需要安装新 Python 依赖、切换进程隔离模式或插件声明reload = "host",则登记为待应用状态并在下次点击面板重启时自动安装依赖并切换。
新安装的插件默认未分配给任何群。启用插件后,在插件详情的使用的群页签(或群聊 → 设置 → 本群启用的插件)中勾选目标群即可立即生效,仅重载该插件,不中断其他群聊。
插件详情页共设六个页签:设置、使用的群、工具、技能、日志与错误、版本。
更新、自动恢复与手动回退
- 更新提醒:从插件目录安装的插件有新版本时,侧栏插件显示可更新数量,已安装页顶部列出可更新的插件,卡片版本号旁显示新版本。点击全部更新或单个插件的更新,下载、应用并重载,失败的插件保留原版本。插件目录的远程索引每隔几小时自动读取一次,也可在发现插件页手动刷新。
- 选择版本:在版本页签点击更新或选择版本准备新候选版本。候选配置独立暂存,点击取消候选不会改动当前线上运行的参数。
- 启动失败自动回退:应用新版本时,旧版源码自动移入
plugins/.previous/<名称>。若新版本在导入、start()启动或migrate_data()数据迁移阶段抛出异常或超时,宿主自动切回上一版源码;若新版本已触发数据目录迁移,宿主会一并从plugins/.data/.backups/还原迁移前的数据备份。 - 手动回退:运行期间可在版本页签点击回退到上一版本,一键恢复上一版的源码和参数配置(若新版本已提升过
data_version,旧版插件会拒绝读取更高版本数据,需停机配合.backups/中的旧数据备份一并还原)。
权限控制与进程隔离
- 最小权限声明:插件在
plugin.toml的permissions中显式列出所需的宿主能力(如send、events、history、memory、generate、delegate、network、schedule),面板会在详情页展示权限清单;越权调用会被宿主直接拦截并记为PermissionError。未声明permissions字段的旧清单默认保留完整宿主能力并标注为未声明权限。 - 进程隔离:插件可运行在与主程序同进程(
inline,支持全部入口与模型工具)或独立进程(process,崩溃仅影响该插件子进程,点击重载即可拉起新进程)。独立进程用于故障隔离,插件与 LenBot 使用同一个系统账号,权限相同。
停用、卸载与数据清理
- 停用:停止命令、工具、定时任务与后台循环,保留全部配置参数、启用群列表和数据文件。
- 卸载:停止插件并移除源码目录与
lenbot.config.json中的启用配置,但默认保留plugins/.data/<名称>下的业务数据。 - 删除数据:卸载或停用后,可在已安装页底部的已卸载插件的数据中单独执行不可逆的数据目录删除。
自行开发插件的完整步骤见写插件。