记忆¶
记忆系统分三层:工作记忆、情节记忆、事实记忆;另有独立的知识层用于存放导入的资料。 本页说明各层存什么、如何召回、遗忘规则,以及面板上的查看与修改入口。
默认状态:记忆全程开启,无总开关。可调项为各层的召回数量与处理节奏; 停用方式为将对应召回数量置 0,影响见文末。
三层记忆的内容¶
工作记忆:当前会话的原始消息,逐条保存。每轮回复取最近若干条送入模型,
条数由 bot.toml 的 conversation.working_memory_messages 决定(初始配置 24)。
消息被摘要归档后退出该窗口,原文保留不删除。
情节记忆:一段时期内对话的摘要。未摘要消息累计到 conversation.summarize_trigger_messages
(默认 48 条)后,后台将最老的一批(默认 16 条)交由模型写成一段情节,连同召回线索一并入库。
情节不随时间衰减。
事实记忆:关于某个人物的结构化事实,涵盖身份、偏好、关系、习惯、事件、状态。
累计 conversation.fact_extract_trigger_messages(初始配置 36 条)消息后回看一次并抽取。
每条事实带有强度、半衰期与来源场合,随时间淡化(见下节)。
知识层不属于记忆:存放经导入中心导入的资料(设定、文档、笔记)。 知识不衰减、不参与遗忘,也不会在每轮对话中自动出现,仅在需要时被主动查阅。
召回方式¶
每轮回复前,以当前消息与会话印象作为检索词,在「在场者」(当前说话人与最近发言者)的事实中检索,
再按相关性与新鲜度排序。以下四个键控制写入提示词的数量(均在 bot.toml [conversation]):
fact_recall_limit:每轮最多召回的事实条数,初始配置 10。recalled_episode_limit:按当前输入相关性召回的情节条数,初始配置 10。recent_episode_limit:无论相关性均补充的最近情节条数,初始配置 5。episode_context_limit:两路情节去重后写入提示词的总上限,初始配置 8。
向量召回开启时(features.toml vector.enabled,初始配置即为开启,需要 embedding 任务档,
见功能总览),在既有候选上叠加语义排序:相关性按词面匹配与向量余弦以 0.4/0.6 加权融合。
关闭或向量不可用时退回纯词面匹配,事实仍可召回,仅排序精度下降。
隐私边界:事实记录来源场合。私聊来源的事实默认不进入群聊提示词;
如需放开,将 conversation.private_facts_in_group 设为 true。群聊来源的事实在两种场合均可见。
遗忘规则¶
事实按遗忘曲线衰减:留存度随半衰期指数下降,被提及或被召回使用时强化回升。 半衰期按事实类型分档:身份与日期约一年,偏好与关系 90 天,习惯 60 天,事件 21 天,状态 12 小时。 留存度跌破冻结线的事实停止参与召回,再次被写入或命中时复活。冻结不等于删除,数据与历史均保留。
真正删除数据的操作仅有两处:在记忆管理中逐条删除,或在导入中心整批撤销(知识层按批物理删除)。 表达方式另有「30 天未确认且未使用即自动淘汰」的规则,见表达方式与黑话。
面板上的查看与修改¶
- 人物与关系:按人物查看其名下事实,含内容、类型、保留度与状态;只读。
- 记忆管理:逐条标失效、恢复、永久保留、以新正文取代旧事实;同槽位冲突的事实成组裁决; 每次操作均记入流水,可逐条撤销。自动纠错产生的取代写入同一流水,同样可撤销。
- 记忆联想网络:三层记忆的关系图;选中节点可预览一次真实的联想扩散。
- 导入中心:粘贴文本或上传文件写入知识层,按批预览影响面、整批撤销。
- 检索调优:召回参数(含三个召回数量键)的扫描、对照与配置档保存;
保存结果为运行期覆盖,不修改
bot.toml文件本身。 - 以上五个页面的入口说明见面板总览。
调整方式与停用影响¶
- 减少事实注入:调小
fact_recall_limit。置 0 后系统提示词不再包含事实块, 仅剩工作记忆与情节,表现为无法记住聊过的具体事项。 - 两个情节键置 0:提示词不再包含情节,失去「这段时期发生过什么」的中期记忆。
- 三个召回键全部置 0 等于关闭被动记忆注入;行动核心的主动检索不受这几个键影响。
- 摘要与抽取节奏由
summarize_*与fact_extract_*四个键控制;调大触发条数会推迟归档, 工作记忆窗口相应变长。
实现细节(遗忘曲线公式、联想扩散算法、反馈纠错链路)见开发手册·记忆系统。