Skip to content

技术架构

LivingMemory 的运行时由事件钩子、记忆处理、检索融合、存储和 WebUI API 五个部分组成。它尽量把“自动记忆”和“主动工具”放在同一套数据模型上,避免两套记忆系统互相打架。

LivingMemory runtime architecture

总体流程

  1. AstrBot 收到消息后,EventHandler 捕获会话上下文。
  2. 在 LLM 请求前,召回链路根据当前消息和最近上下文查询长期记忆。
  3. 检索结果按配置注入到请求中,或作为 Agent 工具结果返回。
  4. LLM 回复后,反思链路判断是否需要总结并写入新记忆。
  5. 后台任务执行衰减、过期清理、备份和索引校验。

主要模块

模块职责
main.py注册插件、初始化核心组件、注册 Agent 工具和 Pages API
core/plugin_initializer.py非阻塞初始化、Provider 等待、数据库迁移、索引加载
core/event_handler.py群聊捕获、记忆召回、记忆反思
core/managers/memory_engine.py统一记忆写入、搜索、删除和索引维护
core/managers/graph_memory_manager.py图谱节点、边、条目和图检索协调
core/managers/atom_lifecycle_manager.py原子过期、遗忘、强化和生命周期维护
core/retrieval/BM25、向量、图谱、原子检索与 RRF 融合
storage/SQLite 存储、图谱存储、原子存储、数据库迁移
pages/dashboard/AstrBot Pages 管理界面

双路四模式检索

普通长期记忆和图谱记忆分别走两条路线:

路线关键词模式向量模式
文档路BM25RetrieverVectorRetriever
图谱路GraphKeywordRetrieverGraphVectorRetriever

随后 RRFFusion 会融合多个排序列表,再叠加重要性、时间衰减、会话隔离和人格隔离等过滤条件。

记忆数据模型

类型说明
会话消息原始对话上下文,用于触发总结和补充查询
记忆条目LLM 总结后的长期记忆,包含摘要、重要性、会话和人格元数据
图谱节点与边从记忆中抽取的实体和关系,支持跨记忆合并
记忆原子独立事实单元,拥有类型、TTL、衰减和访问强化状态

数据安全设计

插件在高风险操作前尽量留下恢复点:

场景保护措施
插件版本变化启动时自动创建版本标记备份
数据库迁移迁移前备份
索引重建分批重建,失败后回滚
删除记忆使用事务保护相关记录
管理页面操作通过 Pages API 复用运行时组件,避免绕过 MemoryEngine