前言¶
在 DeepSeek Harness(DSH)里做多轮对话或智能体开发时,上下文窗口会截断较早内容,重启后也难以延续「用户偏好」「已达成结论」之类信息。常见做法是每次把整段历史塞进 prompt,成本高,也难区分该记什么、该忘什么。社区插件 dsh-memory-v2 把结构化记忆、对话原文情景、溯源索引和巩固状态放在用户本机的 DSH 数据目录,由调用方通过工具接口读写,并支持可选语义召回与按会话分库。
这是什么¶
dsh-memory-v2 是 Yanlrx 维护的 DSH 本地长期记忆插件(当前 package 版本 0.3.1,MIT 许可证)。数据默认落在 ~/.dsh/storages/dsh-memory/,不会在插件内绑定账号、人名或聊天平台。仓库说明:本插件会在本地明文保存对话原文和提取后的记忆,使用前请阅读仓库中的 PRIVACY.md。
目录页:https://www.skillhub.cn/plugins/Yanlrx/dsh-memory-v2
源码:https://github.com/Yanlrx/dsh-memory-v2
核心能力¶
记忆模型与召回¶
插件维护四类记忆集合:语义、结论、画像、临时。无关查询默认不召回;若存在冲突记忆,仅在直接命中相关项时成对返回。memory_recall 默认最多返回 2 条,复杂问题最多 4 条。
可选语义召回依赖 @xenova/transformers,且需在插件目录 models/bge-small-zh/ 自备本地模型,代码不会自动从远程下载。
情景原文与溯源¶
情景按日保存对话原文。每个情景段使用唯一 segmentId,减轻 Markdown 标题或同分钟多轮带来的溯源歧义。memory_trace 可按字面从情景库溯源。
超长内容按 8000 字无损分块,支持跨日、进程重启后继续处理,并支持重复 ACK。
两阶段巩固¶
读取原文后不会立刻清理候选;调用方应在把需要长期保留的内容写入后,通过 memory_consolidate 回传 ackToken 完成巩固,也可显式放弃本次租约。插件校验令牌,但是否已完成所需写入由调用方负责。ACK 与放弃终态相关日志最多保留最近 1000 项。
候选工作集保留最新 50 条,同时按日追加完整审计日志。
可靠性与分库¶
实现跨进程写锁、陈旧锁恢复和多文件事务恢复。存储根目录会出现 .memory-v2.lock、.memory-v2-transaction.json、.memory-v2-tx/ 等文件;插件运行或故障恢复期间不要手动删除。
可选按会话分库:无分库配置时,具备有效会话 ID 的会话读写主库;缺少会话 ID 时失败关闭。可在 ~/.dsh/dsh-memory-v2-config.json 中用 会话归属 把会话 ID 映射到隔离分库;未映射会话的行为受 未映射会话写入待认领 等字段控制。分库目录名由规范化短标识与 SHA-256 摘要共同生成。配置损坏时首次加载会失败关闭;运行中配置暂时不可用时会保留最近一次有效配置,不会悄悄回落主库。
从 0.3.0 升级到 0.3.1 时,旧版分库目录命名规则不同,检测到旧分库会失败关闭且不自动改名,需先备份并人工核对归属后再迁移(README 有说明)。
安装与启用¶
需要 Node.js 20 或更高版本。安装步骤以仓库 README 为准:
1、安装依赖:
npm install --omit=optional
2、将本目录放入 DSH profile 的 node_modules/dsh-memory-v2,或使用 DSH 支持的本地插件安装方式。
3、把 cordis.patch.yml 加入对应 profile 的 bundle 配置。
4、重启 DSH。
DSH 生态习惯「一切皆插件」;SkillHub 等为社区目录,与 DeepSeek / 幻方无官方从属关系。插件以当前 DSH 进程权限运行,安装前请自行审阅源码与许可证。
插件配置¶
cordis.patch.yml 默认隐私优先:
语义召回: false
诊断日志: false
启用敏感调试路由: false
启用全局主库工具: false
诊断日志:开启后也不记录消息正文、会话 ID 或 RPC 标识。启用敏感调试路由:开启后/memory-v2/candidates会返回候选记忆正文,仅适合受信本地环境。启用全局主库工具:只有明确的单用户部署才应开启;多用户分库应使用会话专属工具。
会话与分库示例(完整字段见仓库 config.example.json):
{
"会话白名单": [],
"排除会话": [],
"会话归属": {
"session-example-a": "alice",
"session-example-b": "bob"
},
"排除归属": [],
"未映射会话写入待认领": true
}
请勿将真实会话 ID 提交到版本库。
典型用法:暴露的工具¶
DSH 侧通过插件注册的工具与记忆交互,README 列出四类:
| 工具 | 作用 |
|---|---|
memory_write |
写入、替代或标记冲突记忆 |
memory_recall |
按查询召回记忆(条数上限见上文) |
memory_trace |
从情景库按字面溯源 |
memory_consolidate |
两阶段读取、ACK 巩固与显式放弃租约 |
典型流程可以是:对话结束后由上层逻辑调用 memory_write 沉淀结论或画像;新会话开始时用 memory_recall 拉取相关条目;需要核对出处时用 memory_trace;处理完巩固流程后向 memory_consolidate 提交 ackToken 或放弃租约。
本地数据布局¶
默认存储位于 ~/.dsh/storages/dsh-memory/:
当前/ 结构化 JSON
情景/ 按日保存的对话原文
旧版/ 压缩快照
镜像/ 人类可读备份
日志/ 索引、巩固租约、写入日志和候选审计
这些目录可能含敏感信息,不应进入 Git。开发或验收时可运行:
npm test
npm run privacy:check
npm run privacy:check:artifact
适用场景与注意¶
适合需要在单机、自管数据前提下为 DSH 智能体增加可审计长期记忆的场景;多用户或共享主机应优先配置会话分库,并谨慎开启全局主库工具与敏感调试路由。
若需要语义相似度召回,需额外安装可选依赖并在本地准备 BGE 中文小模型;默认关闭语义召回时仅依赖结构化召回与字面溯源逻辑。
维护者提供的安全与贡献说明见仓库 CONTRIBUTING.md、SECURITY.md。
结尾¶
dsh-memory-v2 把长期记忆的存储、召回、溯源和巩固拆成本地可配置流水线,并强调隐私默认与分库隔离。进一步了解可先打开 SkillHub 目录页,实现细节与升级说明以 GitHub 仓库 README 为准。