前言¶
在 DeepSeek Harness(DSH)里做长任务,常见问题是:会话一压缩,前面的决定和待办就难找;换机器或新开工作区,偏好和项目状态又要重讲一遍。社区里已有多种记忆类插件,有的偏重本地沉淀与召回,有的做分层蒸馏,有的在 compaction 时留结构化摘要,还有 Hindsight 这类外部 bank 的桥接。dsh-memnexus(维护者 SMPcosy,当前版本 v0.0.5,MIT 许可)把这几类能力收进一个包:本地 JSONL 持久化、L0~L3 分层蒸馏、压缩事件摘要、可选 Hindsight 推拉,以及可视化记忆面板。下面介绍它做什么、怎么装、怎么配,以及使用时需要留意的边界。
这是什么¶
dsh-memnexus 是 DSH 的「记忆中枢」插件:在本地持久保存记忆,按层从对话原话逐步蒸馏到场景摘要与用户画像(层数可配),每步开始前按当前输入检索并注入相关条目,并在上下文发生 compaction 时把压缩摘要额外存成 L0。模型还可通过 13 个 memory_* 工具读写记忆;需要与 Hindsight 对齐时,可配置 REST bank 的拉取与推送。
插件在 SkillHub 社区目录分类为「记忆」,GitHub 仓库为 SMPcosy/dsh-memnexus,目录页见 skillhub.cn/plugins/SMPcosy/dsh-memnexus。DSH 生态是「一切皆插件」;社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
自动沉淀、蒸馏与召回¶
- 自动沉淀(L0):每轮对话结束,把该轮压成结构化 L0 摘要(主题、用户诉求、结论、决定、待办、动作),不额外消耗对话 token。
- 自动蒸馏:积累若干条 L0 后调用默认模型(或配置的蒸馏模型)生成 L1 原子记忆,再合成 L2 场景摘要;
distillDepth=3时才会重建 L3 用户画像。默认distillDepth=2,在 L2 收手,减少过度抽象带来的失真。 - 自动召回:每一步开始前用 BM25 与字符二元组模糊匹配的混合打分检索记忆,将最相关条目注入
systemPrompt.context(有字符预算、按层配额、工作区隔离、来源标记);每步重算,不写进会话历史。 - 压缩感知:会话触发上下文压缩(compaction)时,把压缩摘要额外留存为 L0 场景记忆,便于长任务不断线。
可视化面板与模型工具¶
面板提供侧边栏「记忆」图标、1180px 整页与设置页嵌入三处入口:浏览、搜索、筛选、增删改、归档、导入导出、一键蒸馏,以及 Hindsight 拉取/推送。窄窗下可「放大查看」全列表弹窗。
模型侧工具包括:memory_remember、memory_search、memory_recall、memory_get、memory_update、memory_forget、memory_list、memory_stats、memory_distill、memory_lineage、memory_audit、memory_export、memory_import。其中 memory_lineage 用于追溯某条 L1/L2/L3 结论对应的原始 L0 记录(依赖 sourceIds)。
Hindsight 桥接(可选)¶
读取 ~/.hindsight/coding-agent.json(或环境变量 HINDSIGHT_CONFIG)中的 apiUrl、apiToken、bankId;也可在面板填写。bank 留空时可按 bankId → bankIdTemplate → Hindsight 使用日志里最近的 bank 自动识别。未启用时本地记忆功能照常;云端后端需配置 apiToken,否则请求可能 401。
设计上的几个取舍(摘自 README)¶
- 记忆存 JSONL,不引入 SQLite,便于备份与手改。
- 蒸馏失败只记日志,不阻塞已沉淀的 L0。
- 注入内容带
source.kind: plugin:dsh-memnexus,捕获时跳过,避免自我污染。 - L2 折叠后若字数超过源文本 1.05 倍会拒收,避免「摘要比原文还长」。
安装与启用¶
安装方式以仓库 README 为准,不要用凭名称拼出的 dsh plugin add 命令。
-
推荐:插件管理器安装本地包
在 DSH 中让模型执行plugin_manager的install_bundle,target指向插件包根目录的绝对路径;或在 设置 → 插件管理 → 安装本地包 选择该目录。 -
安装 tgz 包
解压dsh-memnexus-0.0.5.tgz,将解压出的package目录按方式 1 安装。
装完后重启 DSH。设置页出现「记忆」分区即表示加载成功。不要手工改 profile 的 package.json / cordis.patch.yml。修改宿主侧 hooks、工具、路由后需重启 DSH;客户端半刷新页面即可。
运行环境要求 Node.js >= 22(见 package.json 的 engines)。
数据与配置¶
存储路径¶
默认在 DSH 用户目录下(设置 DSH_HOME 时前缀随之改变):
- 记忆:
~/.dsh/storages/dsh-memnexus/memories.jsonl - 配置:
~/.dsh/storages/dsh-memnexus/config.json - 导出:
~/.dsh/storages/dsh-memnexus/exports/
常用配置项¶
可在面板「设置」或直接编辑 config.json:
| 键 | 默认 | 说明 |
|---|---|---|
autoCapture |
true | 每轮结束写 L0 |
autoRecall |
true | 每步前注入记忆 |
autoDistill |
true | 自动 L0→L3 蒸馏 |
captureMinChars |
60 | 内容过短不沉淀 |
captureMaxChars |
1200 | 单轮沉淀字符上限(200–6000) |
distillEvery |
8 | 攒够多少条 L0 触发蒸馏 |
distillDepth |
2 | 1/2/3 层,默认只到 L2 |
recallLimit / recallMaxChars |
8 / 1400 | 召回条数与字符预算 |
modelProvider / modelId |
空 | 蒸馏模型,空则跟随默认模型 |
hindsight.enabled |
false | 启用 Hindsight |
hindsight.pullOnStart |
false | 启动时自动拉取 |
重要度 importance 为 1~5,数字越大越重要(默认 2);召回主要按相关性排序,重要度在分数接近时起加分作用。蒸馏到 L3 时,importance>=3 会作为强事实参与画像重建。
从 0.0.x 升级:剪短历史长 L0¶
旧版可能把长达 6000 字的整段转写存进 L0,单条即可占满默认召回预算。新版默认 captureMaxChars=1200,但历史行不会自动变短。动手前建议先 GET /export?format=jsonl 备份,再使用包内脚本:
# 只读统计,不修改
node scripts/trim-long-l0.mjs
# 截断超长 L0 的 text(--max 默认 1200)
node scripts/trim-long-l0.mjs --apply
# 复验
node scripts/trim-long-l0.mjs
截断不可逆;脚本会把原始长度记在 rawChars 字段。
典型用法¶
在对话里依赖自动链路¶
保持 autoCapture、autoRecall、autoDistill 为 true(默认即可)时,正常多轮对话会自动写 L0、按需蒸馏、每步注入相关记忆。长任务若发生 compaction,插件会把压缩摘要额外写入 L0。
用工具显式操作¶
模型在合适时机可调用 memory_search / memory_remember 等工具;需要解释「这条结论从哪来」时用 memory_lineage。导出备份可走 memory_export 或 HTTP GET /export?format=json|jsonl|md。
HTTP API(面板与外部脚本共用)¶
前缀 /api/dsh-memnexus,例如:GET /memories?q=&layer=&limit=&offset=、POST /op(create / update / delete / distill / import 等)、POST /hindsight/import 与 POST /hindsight/push。
维护者自测命令(离线)¶
在插件包目录下,README 提供 smoke 与集成测试,不依赖 DSH 进程即可跑存储与检索等逻辑:
npm run test:all
发布前维护者记录:npm run test:all 全绿(2026-11-01 实测)。
适用场景与注意¶
适合谁:需要在 DSH 里长期保留项目决定、偏好与待办,并希望少依赖「整段聊天记录重贴」;愿意接受默认 BM25+模糊检索(非向量语义)的召回方式;可选与 Hindsight bank 同步的团队或个人。
务必知晓:
- 插件以当前 DSH 进程权限运行,安装前应自行查看 GitHub 源码 与 MIT 许可证及
docs/引用与参考.md中的上游说明。 - 检索无向量语义,跨语言同义改写可能搜不到;与 compaction 类插件同场时,召回每步重算可能带来 system prompt 前缀缓存抖动(README 路线图 v0.1.0 提及召回稳定化)。
- 万级记忆检索约 10~60ms;十万级会明显变慢。
- 面板「删除」为物理删除;日常清理建议用「归档」。
- Hindsight 推送可能写入本地全部有效记忆,体量大时注意 bank 体积;云端无 token 时推拉失败,本地库不受影响。
结尾¶
dsh-memnexus 把本地持久记忆、可配深度的 L0~L3 蒸馏、compaction 摘要留存、pre-step 召回、13 个 memory 工具与可选 Hindsight 桥接、以及三入口可视化面板放在同一插件里,适合作为 DSH 的长期记忆中枢来评估与试用。
- 社区目录:https://www.skillhub.cn/plugins/SMPcosy/dsh-memnexus
- 源码与完整配置、路线图、迁移说明:https://github.com/SMPcosy/dsh-memnexus