dsh-memu-memory:给 DSH 一份会淡、会标注来源的长对话记忆

前言

在 DeepSeek Harness(DSH)里做长篇角色扮演或陪伴对话时,常见做法是把整段聊天记录塞进上下文,或靠模型自己「记住」——前者很快撞 token 上限,后者又容易把推断当成原话、把矛盾的两条说法同时当真。社区插件生态里,记忆类扩展各自取舍:有的偏检索库,有的偏会话摘要。

下面介绍维护者 Tkingxiao 发布的 dsh-memu-memory(npm 包名同插件名,当前版本 1.2.4,MIT 许可证)。它面向长篇 RP 与陪伴场景,默认本地优先:记忆由 agent 写入、后台整理,注入时有预算与来源约束,并对「不确定的事」在数据模型里写清楚,而不是堆成一本无差别的日志。

这是什么

dsh-memu-memory 是 DSH 的记忆类插件,在 SkillHub 社区目录 归类为「记忆」。SkillHub 是社区维护的插件索引,与 DeepSeek / 幻方无官方从属关系;DSH 本身遵循「一切皆插件」的扩展方式。

一句话定位:按文件夹共享记忆库、按对话绑定策略,完整正文落在本机 JSON 索引里;默认 agent 后端用词法召回,不依赖 Python、embedding 或 API key。可选 api 后端才接入锁定版本的 MemU 向量引擎——MemU 是「想要再用」的后端,不是启动前提。

环境要求(来自官方 README):

项 要求
DSH >=0.2.0-rc.1(web profile)
Node.js >=20.9
可选向量引擎 仅在选择向量后端时需要 Python 3.11+

官方标注本插件仍为早期软件,升级前建议备份 ~/.dsh/dsh-memu-memory,并阅读仓库内兼容性与边界说明。

核心功能

以下能力均可在 GitHub README(含中文版) 与 docs/ 中核对。

三层留存与有预算的召回

  • short_term:草稿层,默认约 72 小时过期。
  • long_term:日常记忆主体。
  • must_remember:需理由与来源,按 365 天衰减并有强度下限,可边缘化,但不会为腾位置被自动删掉。

新会话或上下文压缩后的第一个用户回合会注入锚点块(pin / core / global 分段预算);之后每个用户回合最多一次召回。去重与 token 预算由插件代码执行。注入侧多为「标题卡」(标题、id、语义标签),正文留在 WebUI 抽屉里,或通过 memu_private_recall / memu_global_recall 按需读取,避免把模型没问到的长文整段贴进提示词。

来源、矛盾与边界

每条记忆携带 source(如 user_said、inferred、imagined、told)、置信度与说出口径;模糊的推断不能冒充引语。与已有条目冲突的改写进入 pending_review,不注入、不自动召回,等人或整理作业裁决。

context 作用域(channelId / characterId / worldId / branchId)划分同一文件夹内的知情边界;secret 可见性阻止自动注入,但同文件夹内主动检索仍可读到——挡的是「自己冒出来」,不是加密保险箱。磁盘上的正文与附件默认不加密,敏感内容需自行评估风险。

关系图、词表与后台整理

整理在种子 fork 子会话中运行,不在你的待发区多出一轮。关系边带证据;图谱使用本地打包的 D3,布局不推断新关系。私有词表在整理中提取稳定术语;近乎相同的记忆会合并召回席位。

可选 MemU 引擎安装后,memoryBackend="api" 才走向量检索;仅安装引擎不会自动开启向量,还需配置 vectorSource 等项(详见 设置 → MemU → 引擎与连接)。

MemU WebUI

安装并在 web 宿主重启后,设置 → MemU 与右侧栏 MemU WebUI 提供记忆墙、文件夹策略、注入预算、统计、关系图、复核池与导入导出等。深链示例:#/settings/memories、#/settings/folders。

Agent 工具(节选)

主对话 agent 通过工具读写私有记忆;全局记忆由独立 curator 生产,主 agent 没有全局写入工具。

工具 作用
memu_private_remember 写私有记忆(来源、留存层、标签、附件引用等)
memu_private_recall 自然语言或精确 id 召回
memu_private_list / memu_private_update / memu_private_archive 列表、编辑、归档
memu_global_recall / memu_global_list 按 domain 读全局记忆
memu_status 存储健康、同步与召回状态

数据默认目录为 ~/.dsh/dsh-memu-memory/(可用 $DSH_MEMU_MEMORY_HOME 覆盖),私有正文在 index/<libraryId>.json,可选向量层在 libraries/*.sqlite3(加速用,不是唯一真相源)。

安装与启用

插件以当前 DSH 进程权限运行,安装前请自行审阅 源码与 LICENSE,确认可接受的数据落盘与可选网络行为(默认记忆操作无外部请求;可选引擎安装、embedding、远程总结或视觉端点才可能出站)。

方式一 — npm(推荐)

在终端执行:

dsh plugin --profile web add dsh-memu-memory
dsh web

若 profile 不是 web,将命令中的 web 换成你的 profile 名。较旧 CLI 也支持:

dsh plugin add dsh-memu-memory

安装或更新后重启宿主。插件出现在 设置 → MemU,右侧栏出现 MemU WebUI。

方式二 — npx(不全局安装 DSH CLI)

npx @deepseek-ai/dsh plugin --profile web add dsh-memu-memory
npx @deepseek-ai/dsh web

可选 — MemU 向量引擎

默认 agent 后端无需此步。需要时在 WebUI 引擎与连接 安装,或运行:

npx --package dsh-memu-memory dsh-memu-memory-setup

安装器将锁定版本 memu-cli==0.11.0b3 放入 ~/.dsh/dsh-memu-memory/engine/ 下的私有 venv,不修改系统 Python。随后在设置里把 memoryBackend 设为 "api" 并配置向量来源。

典型用法

经过上面的安装与重启,可按官方「第一次使用」流程操作:

  1. 从右侧栏打开 MemU WebUI(或 设置 → MemU)。
  2. 新会话会询问是否启用记忆:仅私有 / 仅全局 / 私有+全局 / 不用;勾选「记住我的选择」后不再重复询问。
  3. 在 文件夹 页可设文件夹级上限(禁止私有或全局);文件夹策略是上限,会约束其中各对话的开关。
  4. 正常对话即可:私有记忆由 agent 通过 memu_private_remember 等工具写入;你在 MemU 记忆 墙审阅、编辑、归档或导出。

长回合中若第三方工具通过 ToolResult.meta.memoryInbound 上报外部用户消息,插件可在同一 turn 内做有预算的增量召回;也可在进程内调用 dsh-memu-memory/integration 的 ingestInboundBatch。协议字段与配额见 README「长工具回合中的外部消息」一节。

适用场景与注意

适合谁: 需要在 DSH web 宿主里长期跑 RP、陪伴或混合对话,并希望记忆可本地审计、可分层衰减、可区分「对方说过」与「模型推断」,且愿意用 WebUI 做复核与关系维护的开发者或重度用户。

需要注意:

  • 主动记忆整理会 fork 子会话并消耗模型 token(官方文档给出与长会话总用量对比的估算表,实际取决于回合数与工具步数)。
  • 升级前备份 ~/.dsh/dsh-memu-memory;早期版本可能存在 breaking change。
  • 默认后端无遥测;可选组件才可能访问 PyPI 镜像、embedding 端点或你配置的视觉/总结端点。
  • 社区目录页星标等信息会变动;以 GitHub 仓库与 npm 页面为准。

结尾

dsh-memu-memory 把「像记忆一样工作」拆成留存层、召回预算、来源标注、矛盾挂起与 context 边界,并在默认路径下保持本地、无 embedding 依赖。若你要在 DSH 里做可持续的长对话角色或陪伴体验,可以从 npm 安装、打开 MemU WebUI 选记忆策略开始,再按需启用 MemU 向量后端。

羽毛球分组比赛记分
小程序二维码

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

小夜