Memora 群忆
AstrBot 的 QQ 群长期记忆插件,从群聊提炼长期事实,具备来源证据、置信度、状态与不可变版本历史,高风险候选需管理员审批,并按记忆组严格隔离。
发布于 更新于

作品介绍
Memora(群忆)是一款面向 AstrBot 的 QQ 群长期记忆插件:从群聊消息中提炼成员信息、群体共识、项目、活动、待办等长期有效事实,让机器人“记住”这个群,而不是每次对话都从头开始。
与简单记录聊天历史不同,Memora 把“记忆”当作可审计、可审批、可撤销的数据资产:每条事实都有来源证据、置信度与不可变版本历史,高风险、冲突、低置信及敏感候选必须先经管理员审批,并严格按记忆组隔离。
功能
- 从群聊消息中提炼成员信息、群体共识、项目、活动、待办等长期有效事实
- 一个记忆组可包含多个群,在组内共享事实
- 所有查询、索引、注入和工具调用严格按记忆组隔离,不存在跨组捷径
- 事实具有来源证据、置信度、状态和不可变版本历史
- 高风险、冲突、低置信及敏感候选必须由管理员审批
- 提供完整 Plugin Page WebUI 管理能力(记忆组、Provider、索引、审计)
兼容性
- AstrBot
>= 4.26.8, < 5(基线 v4.26.8) - NapCat + OneBot 11(AstrBot
aiocqhttp平台接入) - Python 3.11+
配置
全部配置通过 Plugin Page WebUI 管理,无需编辑配置文件。首次安装后:
- 打开 AstrBot Dashboard → Plugin Page → Memora
- 在「记忆组」页面创建记忆组并绑定 QQ 群
- 在 Provider 页面选择提炼 Provider、Embedding Provider(可选)、Reranker Provider(可选)
- 消息采集自动开始
默认配置项见 migrations/0001_initial.sql 中 settings 表的初始值。
管理命令
| 命令 | 说明 |
|---|---|
/memora_status |
查看插件运行状态和能力矩阵 |
/memora_search query=关键词 [fact_type=类型] |
搜索当前记忆组事实 |
/memora_whois qq=QQ号 或 name=昵称 |
查询成员记忆档案 |
/memora_timeline subject=主题 |
查看时间线条目 |
首版不提供 QQ 聊天内的管理命令。所有管理操作通过 Plugin Page 完成。
数据与隐私
- 原文明文保留:规范化后的消息正文在 SQLite 中明文保留最多 30 天(默认),到期自动脱敏(清除正文与可识别段信息,保留不可逆哈希与最小证据摘要)
- 持久化要求:必须持久化 AstrBot data 目录,否则容器重建会丢失全部事实与索引
- FAISS 非备份源:FAISS 索引文件可从 SQLite 完全重建,备份至少应包含 SQLite 数据库
- Embedding 切换:切换 Embedding Provider 或模型会触发全量索引重建
- Provider 隔离:提炼 Provider 故障不会回退到聊天模型执行提炼,避免污染对话上下文
- 权限边界:QQ 群管理员身份不等于 Dashboard 管理权限,
admins_id仅用于群事实管理员证据与告警接收者候选 - 不采集内容:Bot 回复、语音正文、文件正文、图片二进制均不采集;语音和视频仅保留占位标签
数据目录布局
<astrbot-data>/plugin_data/astrbot_plugin_memora/
├── memora.sqlite3 # 主数据库(事实、候选、消息、审计等)
├── indexes/
│ ├── <memory_group_id>.faiss # 每组独立 FAISS 索引
│ └── <memory_group_id>.meta.json # 索引元数据(指纹、维度、ID映射)
├── backups/ # 备份目录
└── runtime/ # 运行时临时文件
备份与恢复
备份
- 在 Plugin Page 停用所有记忆组(暂停写任务)
- 执行 SQLite 在线备份或 WAL checkpoint 后复制数据库文件
- 可选:复制 FAISS 索引文件(恢复后仍需运行一致性检查)
恢复
- 停止 AstrBot
- 恢复 SQLite 数据库到原路径
- 删除所有 FAISS 索引文件(启动后自动重建)
- 重新启用记忆组
- 启动 AstrBot,在索引页面确认各组状态为
ready
故障降级行为
| 故障场景 | 行为 |
|---|---|
| 提炼 Provider 未配置 | 消息正常保留,任务进入 blocked_provider,恢复配置后自动重排 |
| FAISS 不可用 | 自动回退到 FTS5 单路检索,聊天不受影响 |
| FTS5 不可用 | 自动回退到 FAISS 单路检索 |
| FTS5 + FAISS 均不可用 | 不注入动态事实,正常聊天继续 |
| 知识库检索失败 | 单个 KB 失败不取消其他来源,超时 2 秒后返回已有结果 |
| 图片转述 Provider 不可用 | 消息仍正常入库,使用 [图片] 占位 |
| Embedding Provider 缺失 | 禁用向量检索,回退 FTS |
许可证
本插件基于 GNU AGPLv3 开源。