Skip to content

热重载 pre-reload 清理清单

字数
594 字
阅读时间
3 分钟

在 WebUI 保存插件配置或调用 POST /plugins/{name}/reload 之前,用本页核对变更会落在哪一层。分级说明见 Reload 与 Activation

1. 配置级(reload_policy: config_only,默认)

检查项说明
APScheduler job插件是否注册定时任务;改 cron 后旧 job 是否仍触发
HTTP 路由startup.py 是否 mount 新路径;重复 mount 会 404/冲突
协调状态分片 Redis 键、hub-only 注册表是否需手动失效
后台 worker如 repeater learn queue,配置键变更后是否需 schedule_*_reload()

activation_policy=hot-reloadable 时,控制台通常提示「保存后多数配置可热载」。

2. 元数据级(reload_policy: metadata

检查项说明
help 索引reload_metadata_after_plugin_config_save 是否成功
ingress 路由声明extra["ingress_routes"] 变更是否需进程级重建索引
cmd_perm 声明新命令是否出现在治理面板

本级不会卸载 matcher;仍走配置保存触发的元数据重建。

3. 代码级(reload_policy: full 或 pip 安装扩展)

检查项说明
import 副作用模块级全局单例、缓存、订阅者
子进程 / MCPmcp_bootstrap 已注册工具是否残留
协议端连接pb_protocol 类扩展通常需 full-restart
hub 挂载仅 hub 注册的 API/静态资源需全栈重启

控制台按 activation_policy 展示:

activation_policy用户文案
hot-reloadable安装后尝试热加载;失败再重启
workers-restart分片环境重启 Worker;单进程重启 Bot
full-restart需全栈重启(含 hub / 协议端)

4. 官方插件安装后

extension_install / 商店安装返回 needs_restartactivation_action 时:

  1. 读取返回 messagestdout_tail
  2. 若 SSE 进度流 phase=failed,不要假定已安装成功
  3. activation_policy 选择重启当前 Bot 或全栈重启

5. 社区插件安装 / 更新 / 卸载后

community_plugin_ops / 商店返回 activation_action 时:

  1. 首次安装且动作为 hot-reload:通常无需重启;确认插件页已出现且命令可用
  2. 更新:NoneBot 无法卸载旧 matcher;未重启前仍运行旧代码
  3. 分片:社区插件在 worker 加载;优先重启 worker
  4. extra_plugin_dirs 未包含 local/plugins 时,安装后无法热加载,须先改配置再重启

相关