Savana 长期记忆怎么工作 — 角色为什么能"记得你说过的话"
长期记忆是 Savana 最"有温度"的功能之一——你上次提到自己养了只猫,这次角色会主动问"你的小猫最近怎么样?";你之前选过"拔刀对抗"的剧情分支,下次对话时角色会说"上次你选了拔刀,我想听听你有没有新的想法"。这一切的背后是一个设计清晰的记忆系统。
记忆数据怎么产生
Savana 的长期记忆有两个来源:
自动记忆
你和角色对话时,模型会自动从对话中提取"值得记住"的信息点并存入记忆库。被自动存入的信息通常包括:
- 你的个人细节("我叫小明""我养了一只橘猫""我在上海工作")
- 重要的剧情选择("上次你选了拔刀""你接受了他的表白")
- 角色对你的态度变化("你让他信任你了""你被他认作敌人")
- 你表达的情感状态("你说最近压力很大""你提到想出去旅行")
模型不是"每句话都存"——只存对后续对话有价值的关键信息。如果某句话没什么信息量(比如"嗯""好的""哈哈哈"),就不会被存入。
手动记忆
你可以在记忆管理界面手动添加、编辑、置顶或删除记忆。手动添加的记忆通常是自动记忆可能没抓到的:
- 你希望角色记住但没机会在对话中自然提到的事(比如"我下周三考试""我不喜欢被直接问工作")
- 自动记忆有误需要纠正的地方
- 你特别希望角色"忘不了"的某个关键信息
手动记忆的优先级高于自动记忆——角色在对话中会优先参考你手动维护的内容。
记忆数据存在哪里
所有记忆数据都加密存储在 Savana 的云端。存储结构有两个关键设计:
按 user_id + character_id 隔离
每条记忆都和你的账号(user_id)以及具体角色(character_id)绑定。这意味着:
- 你对"古风侠客"说过的事,不会被"腹黑学长"知道
- 你说过的话,不会被其他账号的用户看到
- 不同设备上的同一个账号,看到的记忆是一样的
和对话历史分开存储
记忆数据和原始对话历史是两份独立的数据:
- 原始对话历史:逐字记录你和角色说过的每一句话
- 记忆数据:从对话中提炼出来的关键信息点
模型在生成回复时,会同时参考原始对话历史(当前会话内的)和长期记忆数据(跨会话的)。记忆数据像一张"你和这个角色关系的摘要卡片",每次对话前模型都会先"读一遍"这张卡片。
记忆数据怎么被使用
模型生成回复前,会按以下顺序获取上下文:
- 当前会话对话历史(最近的 N 轮对话,N 取决于模型窗口大小)
- 长期记忆数据(和你、和这个角色相关的所有记忆条目)
- 角色人设(性格标签、背景故事)
- 系统提示词(角色的人格设定)
长期记忆是"第 2 层上下文"——当前会话之外,但对建立连贯关系至关重要。
记忆会自动"遗忘"吗
部分版本可能有"记忆衰减"机制:很久没被提及的记忆条目会被降低权重,但不会被自动删除。你可以随时在记忆管理界面查看和维护——你看到的就是角色当前"记得"的全部。
记忆不准或消失是怎么回事
记忆系统还在持续优化中。如果遇到角色"忘了"你说过的事,可能的原因见 记忆不准或消失怎么办。