Skip to content

功能说明 ​

LivingMemory 的目标不是简单保存聊天记录,而是把对话转化为可以检索、可以衰减、可以被 Agent 主动使用的长期记忆。

自动总结

达到触发轮次后,插件会让 LLM 将最近对话总结为结构化记忆,并写入长期记忆库。

富检索内容

检索内容由 summary + key_facts 组装,保证信息密度;persona_summary 面向记忆注入、面板展示和人格表达。

主动记忆工具

Agent 可以主动调用 recall_long_term_memory 搜索旧记忆,或调用 memorize_long_term_memory 写入稳定事实。

记忆原子化

关键事实会拆成独立原子,每个原子都有类型、TTL、重要性、访问次数和衰减状态。

记忆从哪里来? ​

插件有两种写入路径:

路径触发方式适合内容
自动反思对话达到配置的总结轮次长期偏好、项目上下文、关系、稳定事实
Agent 主动写入模型调用 memorize_long_term_memory用户明确要求“记住”、关键约定、长期任务
管理员手动总结/lmem summarize [message_count]立即保存当前上下文,或重新总结最近 N 条消息

总结产出的人格化 summary 同时用于记忆注入与面板展示(persona_summary),检索内容由代码从 summary 和 key_facts 组装,避免单一压缩摘要损失信息密度;自定义提示词也可以额外输出事实型 canonical_summary,供图抽取等场景使用。达到原文保留阈值的记忆还会把来源消息独立写入 SQLite;这些原文不进入检索索引,但可用于 Dashboard 核验、重新总结,以及 Agent 主动回忆时的深度回溯。

记忆如何被召回? ​

用户发送消息后,插件会在 LLM 请求前执行检索。检索结果可以追加到用户消息、放到消息前后,或模拟工具调用注入到上下文。

Dual route retrieval flow

召回结果会综合这些因素排序:

因素说明
关键词命中BM25 和图谱关键词能快速找到明确实体或短语
语义相似向量检索适合找表达不同但含义接近的记忆
图谱关系实体、关系和跨记忆边能补上“人、事、物”的结构关联
重要性用户偏好、长期约定等高重要性内容更容易被保留和召回
时间衰减旧记忆不会永久占据高权重,除非被反复访问或强化
检索边界可按最低重要性、最低向量相似度和记忆类型过滤候选
近期保留为当前作用域内的近期记忆预留槽位,避免只依赖相似度排名
最近上下文可拼接限定时间范围内的最近对话,减少跨话题误召回

自主回忆(可选 Beta) ​

agent_tools.enable_agentic_recall_beta(默认关闭,需同时开启 agent_tools.enable_recall_tool)把主动回忆扩展为单次请求内的多轮检索:

能力行为
按人检索target="current_speaker" 查询当前发言人的经历;start_time/end_time 按事件时间过滤;exclude_ids 与 search_offset 支持游标分页
证据深读read_memory_evidence 返回记忆的有效事实,以及整段原文对当前会话可验证时保留的原文;事实与原文均可按游标续读
共享预算工具调用次数、累计工具耗时与单次返回长度共享单次请求预算,耗尽后模型基于已取得的证据作答
追加式规则回忆规则提示词以临时片段注入,不进入对话历史与插件消息库

关闭该开关时,工具注册、检索与提示词行为与默认实现一致。

谁可以访问哪些记忆? ​

记忆边界在写入和召回两端统一生效:

能力行为
记忆作用域session 按会话隔离,user 允许同一平台用户跨群聊与私聊共享,global 全局共享;legacy 保留旧行为
强制隔离指定会话始终使用自己的独立作用域,优先于共享模式
记忆白名单限制哪些用户、群组或完整会话可以捕获、总结、召回和调用 Agent 记忆工具
身份别名在总结前把平台身份映射为稳定名称;图谱参与者也会优先复用稳定身份,而不是按昵称重复建点

作用域变更只影响升级后新写入的记忆,不会自动迁移已有数据。

生命周期如何工作? ​

Memory lifecycle

LivingMemory 会定期处理长期记忆:

机制作用
重要性衰减让过旧、低价值记忆逐渐降低权重
访问强化被反复召回的记忆会获得更高保留价值
原子 TTL不同类型事实拥有不同生命周期
自动清理或归档低价值记忆可以永久删除,也可以移出检索索引后保留为可恢复归档
重要记忆保护达到配置阈值的记忆不参与每日重要性衰减
原文保留高重要性记忆可保留来源消息,用于审计与重新总结
安全备份版本更新和迁移前自动备份,降低升级风险

归档记忆不会参与正常召回;在 Dashboard 恢复后,插件会重新生成 Embedding,并重建 BM25、图谱和原子等派生索引。

大规模索引维护如何保证可用? ​

插件启动后会在后台检查文档、向量、BM25 和图谱索引,不会因为大量待修复数据阻塞插件就绪:

机制作用
Provider 指纹Embedding Provider 或模型变化时触发完整向量代际重建,而不只比较向量维度
分批与断点限制读取批量、Embedding 批量、并发和请求间隔;完整向量重建可从检查点继续
影子索引BM25、FAISS 和图谱先在独立代际中构建,完成后再切换;失败时继续使用线上索引
并发写入补偿重建结束后再次检查一致性,并补偿维护期间新增或修改的数据
状态可见/lmem status 显示检查、重建、部分完成、失败和取消状态及进度

更多管理能力和数据操作见 WebUI 管理,完整参数见 配置参考。