Skip to content

Reload 与 Activation

字数
783 字
阅读时间
4 分钟

两个正交策略,禁止混用。

reload_policyactivation_policy
视角作者 / 插件内部维护者 / 装包运维
触发WebUI 改配置或声明安装、升级、卸载扩展
类型config_only | metadata | fullhot-reloadable | workers-restart | full-restart
定义pallas.core.plugin_reload.metadataplugin_matrix.ActivationPolicy

热重载三级

级别变更内容生效方式现状
配置config.py 字段 → webui.jsoninstall_hot_reload_config 保存后立即 reload默认路径
元数据PluginMetadata.extra、help、ingress重读声明 / 重建索引(不卸载 matcher)WebUI 保存对 metadata/full 触发;pallas plugin reload
代码Python 模块受控 reload 或提示重启默认需重启

明确不做:

  • NoneBot matcher 级热卸载不作为默认运维路径
  • 已加载扩展包的代码热更(更新后须重启;unified 下首次安装可热加载)
  • 社区插件 git 更新 / 卸载的代码级热更

reload_policy

适用变更运行时行为
config_only开关、频率、文案等配置字段(默认保存即可
metadata帮助、权限、ingress 声明重建元数据索引
full需模块级重载的结构尝试 importlib.reload;失败则提示重启
python
extra={
    ...
    "reload_policy": "config_only",
}

代码级逻辑变更仍按进程重启理解。

activation_policy

运维视角的装包生效策略,独立于作者声明的 reload_policy

含义典型场景
hot-reloadable优先运行时热加载纯命令型、无 hub 路由 / 后台任务
workers-restart分片优先 workers-only;单进程整进程重启主要影响 worker 命令处理
full-restart全栈重启hub 路由、协议端、跨角色挂载

社区插件(local/plugins/<id>/

操作activation_policyunified(不勾重启)shard(勾重启)
首次安装hot-reloadable热加载提示待重启;勾选则 workers-only
git 更新workers-restart提示待重启workers-only
卸载full-restart提示待重启workers-only

前提:[bootstrap].extra_plugin_dirs"local/plugins"

官方插件建议

扩展activation_policy
pallas-plugin-draw / bot-statushot-reloadable
duel / who-is-spy / dream / ai-mediaworkers-restart
protocol / maafull-restart

并存示例

text
reload_policy = metadata
activation_policy = workers-restart

含义:WebUI 改声明可重建索引;新装 / 升级包仍需 worker 重启才真正生效。

运维入口

场景推荐
改插件开关 / 频率WebUI 插件页保存
改命令权限 / CDWebUI 命令权限 / 冷却页
改 help / ingress 声明reload_policy: metadata 时保存可重建索引;或 pallas plugin reload <name>
改 Python 代码重启 Bot(full 可尝试 reload,失败则重启)
安装官方插件插件商店;勾选「安装并重启」或手动重启
安装 / 更新社区插件社区商店;unified 首次可热载,更新须重启

规则

角色规则
作者按变更粒度选 reload_policy;勿把代码变更标成可热载
维护者装包看 activation_policy;支持配置热载 ≠ 装包免重启

相关