dsh-mnemosyne:分层长期记忆与跨会话人设

前言

在 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜