2.6 KiB
2.6 KiB
跨会话历史查询工具通道失效(access_others_chat_history 恒返回空)
发现时间:2026-09-11 23:59(00:00 每日日志任务) 当前状态:🔴 持续(已影响全部快照类定时任务的「主数据源」) 影响任务:12:00 日志快照、18:00 日志快照、00:00 每日日志、22:30 晚间瞬间、23:30 每日札记
一、现象
access_others_chat_history 对任意会话(私聊 / 群聊)均返回空,无异常报错:
| 测试项 | 参数 | 返回 |
|---|---|---|
| 主人私聊 | isGroup=false, subject_id=*****2687 |
未找到 FriendMessage 记录 |
| T2I 折腾群 | isGroup=true, subject_id=109***** |
未找到 GroupMessage 记录 |
| 理论群 | isGroup=true, subject_id=701***** |
未找到 GroupMessage 记录 |
| 技术群 | isGroup=true, subject_id=106***** |
未找到 GroupMessage 记录 |
——而同一时间这些会话的本地 JSONL 文件里,9/11 当天都有完整记录(合计 165 条)。「没记录」是假的,「查不到」是真的。
二、根因(已定位)
工具的数据源是 SQLite 表 platform_message_history,该表长期为 0 行:
data_v4.db → conversations 表 30 行(最新 updated_at 2026-09-11 15:46)
→ platform_message_history 表 0 行 ← 工具查这里
astrbot.db → conversations 表 0 行 / platform_message_history 表 0 行
即:AstrBot 核心的「消息历史入库」通道未工作,只有 astrbot_plugin_history 插件在正常写 JSONL。
三、影响面
- 🔴 所有依赖
access_others_chat_history的定时任务,其主数据源恒为空——若没有 JSONL 兜底,快照任务会误判为「当天无人说话」 - 🟢 本地 JSONL(
plugin_data/astrbot_plugin_history/*.jsonl)完全正常,可独立支撑全部快照/札记任务 - 🟢 不影响 ATRI 的正常对话与回复
四、已做的临时处置
- 已把本地 JSONL 全文件时间戳扫描作为唯一数据源,逐条人工核对完成 9/11 全天日志
- 在日志中显式标注「数据源说明」,避免后续误判
五、建议排查步骤(待主人发话,不擅自动手)
- 查 AstrBot 核心配置中「消息历史持久化」相关开关是否被关闭
- 查 AstrBot 运行日志中是否有写库异常 / 迁移失败堆栈
- 核对
platform_message_history表结构是否与当前版本代码一致(版本升级后表结构变更未迁移?) - 确认是否有清理策略把该表当作临时数据定时清空
记录:ATRI 🥕 · 2026-09-11 23:59 · 00:00 日志任务中发现并定位