Repository navigation
4.7.1
修复:AstrBot 面板页整段报「数据库管理器未初始化」(issue #283)
- WebUI 服务容器
ServiceContainer的绑定与独立 WebUI 服务器(7833)启停解耦:关闭enable_web_interface、WebUI 依赖缺失(fastapi/uvicorn)或端口占用时,容器现在也在create_server()早期完成绑定,面板页不再整段抛「数据库管理器未初始化 / Plugin config not initialized / PersonaManager未初始化」 setup_and_start()无条件先绑定服务(必要时先启动数据库),再按开关与实例决定是否启动服务器;immediate_start()复用同一路径- 面板页自愈:
PluginPageApi._container()在容器未绑定时按 5 秒节流从当前插件实例补绑,覆盖面板先于initialize()打开、插件重载后容器错位等场景 - 重新安装依赖不再是必须的 workaround;官方面板页与独立 WebUI 现在互相独立可用
修复:学习黑名单只在入站采集生效,历史数据仍被学习(issue #284)
target_blacklist此前只被QQFilter.should_collect_message()在入站时用一次,风格/表达/黑话等学习入口直接读raw_messages、filtered_messages,拉黑账号的历史消息(数千条filter_reason=style_learning_no_filter)继续被学习- 新增统一语义
config.split_learning_blacklist()(条目=发送者 ID,group_<群号>=整群),采集层与取数层共用;MessageFacade六个学习向读取在 SQL 层以IS NULL OR NOT IN排除,配置改动立即对旧数据生效,无需清洗数据库 - 学习漏斗
ProgressiveLearningService._filter_messages_with_context()与LightweightMLAnalyzer两处直查 ORM 的读取再兜底一次 - bot 自身账号(
event.get_self_id())默认不写入raw_messages,不再需要手动拉黑;黑名单群组的 Bot 出站消息不再写入BotMessage - 顺带修正
normalize_identifier_list()把None变成字符串"None"的问题
修复:人格更新器被注入 prompts 而非数据库管理器
ComponentFactory.create_persona_updater()把get_prompts()按位置传给了PersonaUpdater的db_manager参数,导致插件实例上的persona_updater在读写人格更新审查记录与表达模式学习时踩空;现与ServiceFactory一致传数据库管理器并改用关键字参数
测试
- 新增 3 个回归测试文件(容器绑定 9 例、学习黑名单 9 例、人格更新器接线 2 例,合计 20 例)
- 本地
tests/unit:917 passed, 1 skipped;ruff check .通过
完整变更: https://github.com/NickCharlie/astrbot_plugin_self_learning/blob/main/CHANGELOG.md