前言¶
DSH 的上下文窗口是有限的。随着对话轮次增加,前面的内容逐渐被稀释,模型很难回忆起早期的关键信息。dsh-fish-memory 插件旨在解决这个问题,为指定的会话提供一份长期记忆。它模拟了“鱼的记忆”机制,即数据不会永久保留,而是随着时间推移降低“鲜活度”,从而自动筛选出重要内容,避免上下文被垃圾信息填满。
安装与启用¶
该插件由 Yuuyuko-uu 维护,采用 MIT 许可证。安装过程需要使用 DSH 的 Web 界面。
dsh plugin --profile web add github:Yuuyuko-uu/dsh-fish-memory
安装完成后需要重启 DSH。重启后,在设置页面中找到“鱼的记忆”选项。
核心功能¶
插件的核心逻辑基于鲜活度和重要度,而非简单的存储。
- 会淡忘的机制:每条记忆都有鲜活度,默认半衰期为 30 天。插件不会物理删除记忆,而是通过降低鲜活度使其难以被检索。
- 自动筛选:插件会判断对话中哪些内容值得保留,每天有配额限制,防止记录过多。
- 智能检索:检索时基于证据和鲜活度排序。使用本地词表分词,避免普通词汇干扰检索。
- 事实标记:支持将重要属性标记为“长期事实”,使其平铺存放,不会随时间衰减。
- 可视化分析:提供记忆列表和“最近一次召回”功能,展示哪些记忆被选中、哪些未被选中以及原因。
使用流程¶
使用前需在设置页开启目标会话的开关,默认状态是关闭的。
- 开启会话记忆:在会话列表中找到目标会话,开启记忆开关。
- 正常对话:开启后,插件会自动记录对话。它每天有最大记录数(默认 8 条)和单次最大注入数(默认 6 条)的限制。
- 查看结果:展开“记忆列表”查看所有记录,或查看“最近一次召回”了解当前提问时模型检索到了哪些记忆。
旧档案导入¶
如果之前使用 Markdown 或纯文本写过的档案,可以迁移到插件中。
- 在设置页展开“从旧档案导入”。
- 选择包含档案的文件夹或填写路径,点击“扫描档案”。
- 查看插件生成的候选列表,勾选需要的内容。
- 点击“导入选中的”,然后点击“开始提炼”。此过程会调用模型将原文改写为记忆格式。
事实键¶
对于会变动的属性(如身高、位置),使用“事实键”可以确保只保留最新状态。
- 格式:
对象.方面,例如她.身高。 - 使用:同一个键对应同一件事,插件只会保留最新的一条,旧条目会被标记为“已被取代”。
- 注意:键中不能包含具体值(如
她.身高170),必须只写属性部分。 - 清洗:插件提供“清洗补键”功能,可以为旧条目自动补全键,但需谨慎操作,建议先“试 8 条”确认效果。
数据存储¶
- 位置:数据保存在本地,路径为
%USERPROFILE%\.dsh\fish-memory\,每个会话一个文件。 - 格式:纯文本 JSON,每次改动前会自动备份。
- 权限:由于使用本地词表分词,插件不占用对话的 token 数量。
适用场景¶
此插件适合需要长期维护上下文连贯性的场景,例如作为 AI 助手或伴侣使用。它不占用对话 token,且数据完全本地化。使用前请确保已安装 DSH Web 界面。