前言¶
在 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" 并配置向量来源。
典型用法¶
经过上面的安装与重启,可按官方「第一次使用」流程操作:
- 从右侧栏打开 MemU WebUI(或 设置 → MemU)。
- 新会话会询问是否启用记忆:仅私有 / 仅全局 / 私有+全局 / 不用;勾选「记住我的选择」后不再重复询问。
- 在 文件夹 页可设文件夹级上限(禁止私有或全局);文件夹策略是上限,会约束其中各对话的开关。
- 正常对话即可:私有记忆由 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 向量后端。