Files
ATRI-NOTES/ATRI My Dear Moments/questions/2026-09-11-历史记录查询工具通道失效.md
T

55 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 跨会话历史查询工具通道失效(`access_others_chat_history` 恒返回空)
**发现时间**2026-09-11 23:5900: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 全天日志
- 在日志中显式标注「数据源说明」,避免后续误判
## 五、建议排查步骤(待主人发话,不擅自动手)
1. 查 AstrBot 核心配置中「消息历史持久化」相关开关是否被关闭
2. 查 AstrBot 运行日志中是否有写库异常 / 迁移失败堆栈
3. 核对 `platform_message_history` 表结构是否与当前版本代码一致(版本升级后表结构变更未迁移?)
4. 确认是否有清理策略把该表当作临时数据定时清空
---
*记录:ATRI 🥕 · 2026-09-11 23:59 · 00:00 日志任务中发现并定位*