前言¶
在 DeepSeek Harness(DSH)里做 AI 陪伴或长期协作时,常见痛点是:新开一轮对话,模型不记得称呼、偏好和上次聊过的事。把历史全文塞进上下文能缓解,但窗口有限,塞满后反而丢重点;全量保留还会拖慢、抬高成本。
下面介绍社区插件 dsh-mnemosyne(维护者 i11ustriouS)。它把每轮对话归档到本地记忆库,对话开始时只注入「稳定事实 + 人设框架 + 与当前问题相关的索引」,原文留在磁盘,需要时再展开。分类属于 DSH 生态目录中的「记忆」类;仓库当前版本为 0.1.0,许可证 MIT。
这是什么¶
Mnemosyne 是面向 DSH 的长期记忆插件(package 名 dsh-mnemosyne)。目标是在跨会话场景里维持连贯的「你是谁、偏好如何、以前聊过什么」——尤其适用于 AI 陪伴类用法;数据默认落在本机 $DSH_HOME/mnemosyne,不依赖第三方服务。
README 明确说明:每轮向上下文注入记忆会降低缓存命中率,对成本或延迟敏感的工作流(批量任务、长文档、生产环境)应关闭注入(inject: false)仅做归档检索,或不要安装。
分层记忆怎么工作¶
插件用四层结构控制注入量:
| 层 | 内容 | 何时进上下文 |
|---|---|---|
| 事实 | 称呼、偏好、路径等稳定状态 | 每轮(框架的一部分) |
| 人设框架 | 从记忆里归纳的「你是谁」 | 每轮常驻 |
| 话题 / 索引 | 过去事件,一行一件 | 按当前提问检索 |
| 全文 | 当时对话原文 | 留在磁盘,按 id 展开 |
记忆库随对话自动增长:每轮归档并抽取事实;攒够 personaEvery 条后,用最近记忆与现有事实让模型归纳人设,结果经事实管道做冲突消解后再投影为框架。面板「人设框架」页签可手动点「让 AI 重新归纳」。
事实层用槽位消解冲突:单值谓词(如 nickname)新值覆盖旧值;多值谓词(如 preference)并存去重;否定表述(如「别叫我老王」)只失效匹配项而不乱改当前称呼。事件与事实分库,避免流水淹没稳定信息。
此外还有话题聚合(同会话、相邻间隔小于 2 小时合并为一行索引)、记忆固化(合并相似条目、旧话题摘要、长期未召回归档——全程可逆、不删原文)、以及存储压缩(把追加式日志重写为每条一行最终状态)。README 中给出了压缩前后行数与体积的实测示例。
若通过 dsh-astrbot-ingress 接入 QQ,插件会识别 local 与 qq 来源,并实现单向隔离:网页侧可检索 QQ 记忆,QQ 侧看不到网页记忆;工具 memory_search 支持 scope 参数(all | local | qq)。
安装与启用¶
安装命令(来自仓库 README,需带 --profile web):
dsh plugin --profile web add github:i11ustriouS/dsh-mnemosyne
装完后重启 DSH(Host 侧重载插件),刷新页面。侧栏底部会出现「记忆女神」入口。插件零第三方依赖、无构建步骤,仅使用 Node 内置模块。
DSH 插件在当前 dsh 进程权限下运行;安装前建议自行审阅 GitHub 源码 与 MIT 许可证。社区目录页 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。
典型用法¶
面板¶
侧栏「记忆女神」打开全屏面板,四个页签:
- 记忆:搜索、筛类型与来源、展开原文、手动记一条、导入历史、固化
- 人设框架:查看或编辑 AI 对你的认知,可触发重新归纳
- 事实:当前生效的稳定事实,可手动断言或失效
- 召回预览:输入一句话,查看本轮实际会注入的文本(调注入时常用)
智能体工具¶
| 工具 | 用途 |
|---|---|
memory_search |
检索索引(摘要 + id);可选 scope 限定来源 |
memory_recall |
按 id 取原文(摘要条目可展开关联轮次) |
memory_note |
手动记一条 |
memory_profile |
读/写人设框架 |
memory_facts |
读、断言或失效稳定事实 |
历史与会话回填¶
- 面板:记忆页签 →「导入历史」
- CLI:
node test/backfill.mjs [会话数] [每会话轮数] [--dry]
sessions/ 下已有会话可导入;回填不调用模型,用规则摘要保证可检索。若先装记忆库后装 QQ ingress,可用 node test/backfill-origin.mjs(预览)与 --apply(执行)补标 origin / umo / tags。
配置要点¶
在 DSH 插件配置中,id: mnemosyne 下常用字段包括:
- id: mnemosyne
name: dsh-mnemosyne
config:
dataDir: '' # 留空用 $DSH_HOME/mnemosyne
inject: true # 关掉则只记录不注入
maxInjectChars: 2600 # 注入预算
autoSummarize: true
maxRecall: 8
autoPersona: true
personaEvery: 10
autoConsolidate: true
recordSubagents: false
完整字段见仓库 README「配置」一节。数据目录结构示例:
mnemosyne/
entries/2026-10.jsonl # 情景记忆,按月分片
facts.jsonl # 语义记忆操作流
profile.json # 人设框架
state.json # 运行时状态
插件还提供 HTTP API(如 /mnemosyne/api/search、/mnemosyne/api/preview 等),便于与外部脚本集成;路径列表以 README 为准。
适用场景与注意¶
更适合:长期一对一或陪伴向对话、希望本机保留偏好与人设、需要 QQ 桥接且接受来源隔离策略的场景。
不适合或需关闭注入:对上下文缓存、token 成本或延迟敏感的生产/批处理工作流。
已知局限(README 自述):检索以字面匹配为主,「上次那个」类指代需额外扩展;作者测试规模在单机单用户几十到几百条,未验证超大库与长期多用户稳定性。纯字面检索等短板见仓库「已知短板」。
自检方面,README 提到 node test/selftest.mjs(127 项离线自检)与 node test/verify-live.mjs(对着运行中的 DSH 验收)。
结尾¶
dsh-mnemosyne 把「框架常驻、索引按需、原文留库」做成可配置的 DSH 插件,并在事实冲突、防污染、固化与压缩上做了较完整的设计。若你在 Harness 里需要跨会话记住用户而不把全文塞进上下文,可按官方命令安装,先用「召回预览」页签确认注入内容,再决定是否在工作场景关闭 inject。
- 目录页:https://www.skillhub.cn/plugins/i11ustriouS/dsh-mnemosyne
- 源码与文档:https://github.com/i11ustriouS/dsh-mnemosyne