Skip to content

WebUI 配置与热重载

字数
728 字
阅读时间
4 分钟

控制台(pallas_webui)通过 data/pallas_config/webui.json 读写插件与通用配置(主配置见 config/pallas.toml)。src/console/webui/ 供插件作者接入「保存后立即生效」。

配置落盘

入口写入
插件webui.jsonenv,字段名大写
通用配置 各段同上;部分段有专用 payload(语料联邦、联邦控制、服务网关)
合并顺序pallas.toml → 遗留 .envwebui.jsonWebUI 最高

命令权限说明见 cmd_perm

热重载分级(配置 / 元数据 / 代码):见 Reload 与 Activation。插件可在 extra["reload_policy"] 声明期望粒度(默认 config_only)。

三级与插件作者

级别改什么要不要适配生效方式
配置config.py 字段install_hot_reload_config(见下)WebUI 插件页保存后立即 reload
元数据extra 内 help、ingress、command_permissions 等声明可选:设 reload_policy: metadata同上保存时重建 help/ingress 等索引(不卸载 matcher)
代码Python 模块无热载须重启 Bot

未声明 reload_policy 时等价于 config_only:只热载 config.py改 extra 声明后仍须重启

python
extra={
    ...
    "reload_policy": "metadata",  # 频繁改 help/ingress 声明且不想重启时
}

full 表示期望代码级重载;当前实现仍只做到元数据索引重建,改代码请重启。

插件接入热重载

config.py 末尾:

python
from pydantic import BaseModel, Field
from src.console.webui import install_hot_reload_config

class Config(BaseModel, extra="ignore"):
    my_enable: bool = Field(default=False, description="是否启用某功能。")

plugin_webui = install_hot_reload_config(Config, config_module=__name__)
get_my_config = plugin_webui.get

业务代码统一 get_my_config(),勿缓存 import 时快照。可选 parse_env_valueon_reload(见 draw)。

未使用热重载时仍可用 get_plugin_config(Config),但进程内值需重启才与磁盘一致。

通用配置段

env_sections.py_registered_sections() 注册。已 install_hot_reload_config 的插件经注册表读当前值;保存时尝试 reload_plugin_config

段 ID标题说明
cmd_perm命令权限覆盖矩阵
control_plane联邦控制专用 payload
corpus_federation语料联邦专用 payload
community_stats在线统计与社区主站(插件 pb_stats专用 payload
ingress_fanout入站:全员同响口令
repeater_learn复读:后台语料学习
message_scrub消息审查与入站过滤4.0 默认开启
service_gateways外部服务地址画画 / MAA / 点歌 + 连通检测
pallas_webui / pallas_protocol / help各插件子集

包内文件

文件职责
plugin_config.pyinstall_hot_reload_config
registry.py按插件名 get / reload
plugin_api.py插件页 GET/PUT
env_sections.py通用配置段注册
field_labels.py / field_help.pyWebUI 中文名与说明
service_gateways_section.py网关聚合与检测 API

参考插件

插件说明
sing标准热重载
draw自定义解析 + on_reload
pallas_webuiHTTP 路由层

实现

src/console/webui/ · 路由薄层 extended_api.py

API 契约(按域)

REST 路径、鉴权、写操作与热重载行为见 api/README.md(与 WebUI consoleApi.ts / OpenAPI 对齐)。