dsh-memnexus:DSH 统一长期记忆中枢

前言

在 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 / 幻方无官方从属关系。

核心功能

自动沉淀、蒸馏与召回

  1. 自动沉淀(L0):每轮对话结束,把该轮压成结构化 L0 摘要(主题、用户诉求、结论、决定、待办、动作),不额外消耗对话 token。
  2. 自动蒸馏:积累若干条 L0 后调用默认模型(或配置的蒸馏模型)生成 L1 原子记忆,再合成 L2 场景摘要;distillDepth=3 时才会重建 L3 用户画像。默认 distillDepth=2,在 L2 收手,减少过度抽象带来的失真。
  3. 自动召回:每一步开始前用 BM25 与字符二元组模糊匹配的混合打分检索记忆,将最相关条目注入 systemPrompt.context(有字符预算、按层配额、工作区隔离、来源标记);每步重算,不写进会话历史。
  4. 压缩感知:会话触发上下文压缩(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 命令。

  1. 推荐:插件管理器安装本地包
    在 DSH 中让模型执行 plugin_manager 的 install_bundle,target 指向插件包根目录的绝对路径;或在 设置 → 插件管理 → 安装本地包 选择该目录。

  2. 安装 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 的长期记忆中枢来评估与试用。

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

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

Xiaoye