前言¶
在 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