一个 AstrBot 智能记忆插件:每群攒满 100 条消息后,AI 自动整理出人物画像(键值对)与重要要点存入长期记忆;平时记忆纹丝不动,只有群聊内容检索到相关时才注入上下文。按群隔离,群与群之间互不可见。
- 短期缓冲:所有群消息先进入缓冲,等待攒满阈值
- 满阈值自动整理:每群攒满 100 条(可配置)后,AI 提炼:
- 人物画像:
【画像】昵称:生日=…;喜欢=…;身份=…键值对形式,只记录明确出现过的信息,不编造 - 要点记忆:约定、事件、计划等重要信息(带关键词)
- 人物画像:
- 按需注入:长期记忆平时不动,群聊内容与记忆关键词/内容匹配时才按相关度排序取 top N 条注入上下文,用完即收
- L1~L4 分层记忆:识别提问时间意图(今天/最近几天/本周),自动注入对应层级的群聊记录;描述模糊时引导对方给出关键词再精准检索
- 整理后清空缓冲:避免重复整理,重新计数
- 按群隔离:每个群的记忆独立存储、独立检索,互不串群
- 可选整理提供商:配置界面直接下拉选择 AstrBot 中已配置的模型提供商,或用指令查看/设置
将本插件目录放入 AstrBot 的 data/plugins/ 下,然后在 WebUI 的插件管理页启用即可。
或从 Git 仓库安装:
https://github.com/Fangnai-byte/astrbot_plugin_stardust_diary
| 配置项 | 说明 | 默认 |
|---|---|---|
organize_enabled |
是否启用满阈值 AI 整理 | true |
organize_threshold |
每群触发整理的消息条数 | 100 |
organize_provider |
AI 整理使用的模型提供商(下拉选择,留空跟随当前对话模型) | 空 |
top_k |
检索到相关记忆时最多注入几条 | 5 |
include_recent |
是否在上下文中附带缓冲中的最近消息 | true |
recent_count |
附带最近消息条数 | 5 |
发送指令(群聊):
/mem list [n] # 查看本群最近 n 条长期记忆(默认 10)
/mem recent [n] # 查看缓冲中的最近 n 条消息(默认 10)
/mem forget <id> # 删除指定长期记忆(管理员可删任意,其他人只能删自己的)
/mem models # 列出 AstrBot 所有模型提供商
/mem model <提供商id> # 设置 AI 整理使用的提供商
/mem stat # 查看记忆统计
/mem help # 显示帮助
- 群消息进入短期缓冲(忽略 bot 自己的消息与
/mem指令) - 某群缓冲达到阈值(默认 100 条)→ 触发 AI 整理(异步,不阻塞回复)
- AI 输出 JSON:
{"profiles": [{"user": "昵称", "attrs": {"键": "值"}}], "memories": [{"content": "要点", "keywords": ["关键词"]}]} - 画像与要点存入长期记忆表,缓冲清空
- 群聊触发 LLM 请求时:
- 用关键词 + 内容片段对长期记忆评分,注入最相关的 top N 条(L1)
- 识别提问的时间意图:今天(L2)/ 最近几天(L3)/ 本周(L4),注入对应层级的缓冲记录
- 若时间段提问描述模糊,引导对方给出具体关键词,再精准检索回答
| 层级 | 范围 | 数据来源 |
|---|---|---|
| L1 | 这段时间(全部历史) | 长期记忆表(画像+要点) |
| L2 | 今天 | 短期缓冲(今天 0 点起) |
| L3 | 最近几天 | 短期缓冲(3 天内) |
| L4 | 本周 | 短期缓冲(本周一 0 点起) |
提问示例:
- "今天群里聊了什么" → 注入 L2 今天记录
- "最近发生什么了" → 注入 L3 记录,模糊时引导给关键词
- "这周有什么重要的事" → 注入 L4 本周记录
- 数据库:
<AstrBot根目录>/data/smart_memory/memory.db - 插件配置:
<AstrBot根目录>/data/config/astrbot_plugin_stardust_diary_config.json
-
问:注入 top 5 条会不会漏记忆?
- 答:相关记忆较多时可以调大
top_k,平衡上下文长度与召回率。
- 答:相关记忆较多时可以调大
-
问:满 100 条后原始消息会删吗?
- 答:会。AI 提炼完画像和要点存入长期记忆后,该批原始消息清空,避免重复整理。
-
问:和 AstrBot 的上下文压缩冲突吗?
- 答:不冲突。压缩器处理的是旧对话历史,星尘手账只往 system_prompt 注入少量记忆片段。
