dsh-memory-vault:为 DeepSeek Harness 提供跨会话本地长期记忆

前言

在 DeepSeek Harness(DSH)里做智能体或长期协作时,常见痛点是:新开会话后,模型只能依赖当前窗口里的消息,上次约定的部署参数、踩过的坑、项目口径往往要重新说一遍。把整段历史上下文每次粘进提示词,窗口很快占满;只靠模型侧 128K 左右的上下文上限,也无法把磁盘上积累的大量对话一次塞进去。

下面介绍社区插件 dsh-memory-vault(维护者 xying-lm,分类:记忆)。它把用户与助手的关键内容自动沉淀到本机 SQLite,用 FTS5 按需检索并注入提示词,并提供 Web 面板查看占用;不依赖 npm 安装额外包,检索侧使用 Node 内置的 node:sqlite(FTS5 trigram)。

这是什么

dsh-memory-vault 是 DSH 的 bundle 插件(当前 package 版本 0.12.0,许可证 MIT)。定位可以概括为:跨会话的本地长期记忆库——说过的话、助手答过的要点写入库文件,每轮对话前按查询召回一小段相关历史,必要时由模型通过工具翻页或分段读全文。

它没有扩大模型上下文窗口的硬上限;改变的是「窗口里能取到多少」:库内任意一条记忆理论上都可访问,单次注入控制在约一两千字量级(可配置),大容量(默认档位约 5GB)以磁盘存储 + 串行读取的方式存在,而不是一次性全部进入提示词。

核心功能

自动采集与召回

开启后,对话经 session/event 进入内存队列(约 1 秒批量),写入 SQLite(mem + mem_fts)。下一轮用户输入前,通过 systemPrompt.context 注入:

  • 压缩层(sessionIndex,默认开启):仅新会话第一轮注入若干过去会话的要点摘要(默认最多 6 个会话,每个约 150 字量级)。
  • 自动召回(recall):每轮检索 top-k 条相关摘录(默认 5 条,带 id=),总字数受 recallMaxChars 等限制。

采集可配置是否包含助手回复(captureAssistant)、最短字数(captureMinChars)、是否跳过子代理会话(skipSubagent)。注入块带 【长期记忆·自动召回】 标记,避免被再次采集形成滚雪球。

七个工具(与自动召回并行)

工具 用途
memory_search 在长期记忆中检索,支持中文整句与 offset 翻页
memory_open 按 id 分段读全文(chars 控制每页,返回 next 续读)
memory_catalog 库目录:条数、按天分布、最近会话等
memory_save 显式写入一条记忆,可选 mode
memory_stats 条数、占用、配额、档位等
memory_resize 调整容量上限(常用档位或 0.05~200 GB 自定义)
memory_forget 按 id 删除(不可恢复)

README 强调:自动召回省事但可能漏检;工具需模型主动调用但更精准,两条路径同时开着更稳。

三种记忆模式

模式 生命周期
long(默认) 长期保留,跨会话可召回
multi 仅写入所在会话可见,约 12 小时后清理
once 被自动召回一次后从库中删除

自动采集默认模式由 captureMode 控制;memory_save 未传 mode 时用 defaultMode。输入框「完全权限」右侧有「记忆 长期 ▾」会话级切换(长期 / 本会话 / 单次),只影响当前会话,重启后回到配置默认。

对话文件(threads)

每条线索可对应库目录下 threads\ 中的一个 .md 文件:首条消息可自动建文件,也可挂到旧文件续聊。挂旧文件时检索会优先该线索,并可配置 threadAutoSend 将上一会话最后一条回答作为真实用户消息续接(每会话一次)。人可读 markdown 与库内 thread 外键并存。

检索与「人类式记忆」

检索为 FTS5 trigram(三字及以上子串)加最近 2000 条上的二字词补位;可选 humanMemory 做三因子排序(相关度 × 显著性 × 时间衰减)、联想扩展;factCards 对跨会话重复要点巩固为事实卡并优先召回。README 明确:没有向量嵌入,换说法的语义相近检索能力有限。

Web 面板

panel 默认开启,在宿主 Web 载体上提供 /memory-vault/* 只读查看与容量调整(resize 为写路由)。默认监听本机回环地址。

安装与启用

资料中的安装方式为:先取得插件目录,再在 DSH 中安装为 bundle。

git clone https://github.com/xying-lm/dsh-memory-vault.git
plugin_manager install_bundle  target="file:<你的克隆路径>/dsh-memory-vault"

也可在 GUI「设置 → 插件 → 安装插件」填入本地路径。装好后需重启 DSH(关闭窗口不等于退出托盘进程);插件在宿主启动时加载,无热重载。

运行环境:package.json 要求 Node ^22.19.0 || >=24.0.0;可选 peer @deepseek-ai/dsh-tools。

默认库路径:Windows 为 D:\dsh-memory\vault.db;macOS / Linux 为 ~/.dsh-memory/vault.db,可通过 dbPath 或面板「库位置」修改(改路径后需重启)。

典型用法

1、安装并打开总开关

确认配置中 enabled、capture、recall 为 true(均为默认)。需要只看跨会话历史时,可将 recallSameSession 设为 false。

2、依赖自动召回继续旧话题

正常对话即可;短于 recallMinQueryChars(默认 4)的输入不会触发检索。新会话第一轮会收到过去会话要点索引(若 sessionIndex 开启)。

3、让模型精确查库

在对话中让助手调用工具,例如:

  • 用 memory_search 换关键词或 offset 翻页(工具返回约 220 字摘要,单次最多 20 条)。
  • 用 memory_open id=… chars=2400 分段读某条全文。
  • 用 memory_save 写入约定、偏好或关键决策,必要时指定 mode: "multi" 或 "once"。

4、续接同一线索

通过输入框左侧「文件」挂到已有 threads 下的 .md;若开启 threadAutoSend,新会话第一条用户侧消息会带上一会话最后回答摘要(默认最多约 600 字,见 threadResumeChars)。

5、查看用量与调容量

调用 memory_stats,或打开 Web 面板;需要扩缩库时由 memory_resize 或面板 resize,配置项 sizePreset / maxGB 亦可在配置文件中调整。

适用场景与注意

适合:需要在本机长期保留对话事实、跨会话找回具体信息(例如「上次说的部署脚本名」)、同一线索多会话续聊,且接受「按需读取、串行翻页」而非全库一次推理的场景。

不适合或需知边界:跨全库的全局统计与推理仍受窗口与串行读取限制;语义换说法的召回弱于向量方案;压缩层为抽取式要点,不会替你做深度归纳。

安全与信任:插件以当前 DSH 进程权限读写本地数据库与 threads 目录,并在本机暴露面板 HTTP 路由。安装前请自行审阅 GitHub 仓库 源码与 MIT 许可证,确认路径与监听地址符合你的环境策略。社区目录 SkillHub 插件页 为独立收录站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态奉行「一切皆插件」,是否启用由你本地决定。

配置项非法时会在加载期报错并指出键名,不会静默使用错误配置。

结尾

dsh-memory-vault 把「可检索范围」放到本机大容量 SQLite 里,用压缩索引、自动召回和七个 memory_* 工具分层取数,并配合对话文件续接线索。若你正在 DSH 里做长期协作,值得从 README 的配置表逐项对照自己的采集、召回预算与模式需求。

  • 目录页:https://www.skillhub.cn/plugins/xying-lm/dsh-memory-vault
  • 源码与文档:https://github.com/xying-lm/dsh-memory-vault
羽毛球分组比赛记分
小程序二维码

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

小夜