-
Notifications
You must be signed in to change notification settings - Fork 24
Description
Plugin Version
Next-2.0.6
AstrBot Version
v4.19.4
Database Type
SQLite (default)
Operating System
Linux
Bug Description
自学习插件目前可以正常抓取用户消息,但似乎不会把 Bot 的回复写入学习数据库。
这会直接导致 ExpressionPatternLearner 无法建立“用户 → Bot”的对话对,因此风格学习始终出现:
- 提取 0 个模式
- 没有对话风格结果
- 没有情感模式结果
- 没有语言特征结果
- 没有话题偏好结果
- 人格学习审查/更新建议始终为空或无实质变化
已经核实了用户消息确实被正常抓取、AstrBot 确实正常生成并发送了 Bot 回复、用户消息被存入了数据库但数据库中始终没有 Bot 回复记录、ExpressionPatternLearner 实际已经被调用,但结果始终为空
因此,当前实际表现是:
- 用户消息会被抓取
- Bot 回复会被正常发送
- 但 Bot 回复不会进入学习数据库
- ExpressionPatternLearner 被调用了,但拿不到有效样本
- 风格学习始终提取 0 个模式
另外,我检查了save_bot_message函数的调用链发现
它只在这一条路径里会被调用:
- 文件:services/response/intelligent_responder.py
- 逻辑:在 直接生成 Bot 文本回复 的那条函数里
先: - 调 llm_adapter.refine_chat_complet ion(...)
- 拿到 response_text
- 然后才:
- await self.db_manager.save_bot_message (...)
- await self._record_response(...)
但插件主入口 main.py 当前只明确注册了这些和消息相关的钩子:
- @filter.event_message_type(...) → 只处理入站消息
- @filter.on_llm_request() → 只在 LLM 请求前注入内容
没有看到:
- @filter.on_decorating_result()
- 发送后回调
- 回复完成后的钩子
- 专门记录 bot 出站消息的钩子
所以从主入口看,它没有一条稳定的“发完回复后落 bot 消息”的接线。
因此,现在看到的bot_messages = 0,感觉是代码逻辑造成的问题。
Steps to Reproduce
1.在群里发一条肯定会触发回复的话
2.确保 AstrBot 确实回了一句
3.立刻执行一次强制学习
4.用 sqlite3 查这三项:
sqlite3 /home/hm/.openclaw/workspace/data/self_learning_data/messages.db
5.然后执行:
SELECT COUNT(*) FROM bot_messages;
SELECT group_id, sender_id, sender_name, message
FROM raw_messages
ORDER BY id DESC
LIMIT 20;
SELECT COUNT(*) FROM expression_patterns;
6.看到提示无法提取风格即复现成功
Expected Behavior
bot消息也被存入数据苦,用户和bot消息对成功建立,ExpressionPatternLearner 成功提取风格
Error Logs
[2026-03-10 23:08:55.295] [Core] [INFO] [respond.stage:184]: Prepare to send - <USER_ID_SHORT>/<USER_ID_FULL>: 开始强制学习周期 for group <GROUP_ID>...
[2026-03-10 23:08:55.300] [Plug] [INFO] [state.affection_manager:1059]: 开始处理消息交互: group_id=<GROUP_ID>, user_id=<USER_ID_SHORT>..., message_len=14
[2026-03-10 23:08:55.695] [Plug] [INFO] [core_learning.progressive_learning:244]: 开始处理 33 条消息(relearn_mode=False)
[2026-03-10 23:08:55.695] [Plug] [INFO] [core_learning.progressive_learning:651]: 对话风格学习模式:直接学习 33 条原始消息(跳过LLM筛选)
[2026-03-10 23:08:55.803] [Plug] [INFO] [state.affection_manager:1063]: 交互类型分析结果: chat (group: <GROUP_ID>)
[2026-03-10 23:08:55.836] [Plug] [INFO] [state.affection_manager:1068]: 好感度更新成功: 用户<USER_ID_SHORT>... 在群<GROUP_ID> 的好感度从 5 变为 5 (变化: 0)
[2026-03-10 23:08:56.061] [Plug] [INFO] [integration.maibot_adapters:422]: 学习质量评估详情: prompt_improvement=0.000, pattern_improvement=0.000, memory_growth=0.000, knowledge_growth=0.000, overall_quality=0.000
[2026-03-10 23:08:56.062] [Plug] [INFO] [integration.maibot_adapters:428]: Before prompt长度: 2106, After prompt长度: 2106
[2026-03-10 23:08:56.062] [Plug] [INFO] [integration.maibot_adapters:433]: before和after完全相同
[2026-03-10 23:08:56.084] [Plug] [INFO] [core_learning.progressive_learning:1134]: 对话风格学习记录已保存 (ID: 9),处理 33 条消息,提取 0 个模式
[2026-03-10 23:08:56.087] [Plug] [INFO] [core_learning.progressive_learning:859]: 应用人格更新 for group <GROUP_ID>
[2026-03-10 23:08:56.107] [Plug] [INFO] [persona.persona_backup_manager:61]: 人格备份创建成功,备份ID: True
[2026-03-10 23:08:56.124] [Plug] [INFO] [persona.persona_backup_manager:61]: 人格备份创建成功,备份ID: True
[2026-03-10 23:08:56.125] [Plug] [INFO] [analysis.expression_pattern_learner:159]: 为群组 default 触发表达模式学习,消息数量: 33
[2026-03-10 23:08:56.126] [Plug] [WARN] [v4.19.4] [analysis.expression_pattern_learner:180]: 群组 default 表达模式学习未获得有效结果
[2026-03-10 23:08:56.129] [Plug] [INFO] [core_learning.progressive_learning:313]: 学习更新已应用(对话风格学习已完成,人格学习已加入审查),质量得分: 0.000 for group <GROUP_ID>
[2026-03-10 23:08:56.160] [Plug] [INFO] [core_learning.progressive_learning:363]: 学习批次完成,耗时: 0.47秒
[2026-03-10 23:08:56.162] [Core] [INFO] [respond.stage:184]: Prepare to send - <USER_ID_SHORT>/<USER_ID_FULL>: 强制学习周期完成 for group <GROUP_ID>Relevant Configuration
## 运行环境
- AstrBot: `v4.19.4`
- 插件: `astrbot_plugin_self_learning (Next-2.0.6)`
- 平台: 飞书 / Lark 群聊
- WebUI: 已启用
- 消息抓取: 已启用
- 自动学习: 已启用
- 实时学习: 未启用
## 当前相关配置
{
"enable_message_capture": true,
"enable_auto_learning": true,
"enable_realtime_learning": false,
"enable_web_interface": true
}Additional Context
No response