前言¶
在 DSH(DeepSeek Harness)里跑长会话时,事件日志会滚到几百条,而真正要长期保留的往往只有几份 memory/ 下的 Markdown。手工翻记录提炼,容易漏项,也容易把引擎注入的 <system-reminder> 或运行时快照当成用户原话。直接改记忆文件又没有版本校验和备份,人和模型同时改还容易互相覆盖。
下面介绍社区插件 dsh-memory-refine(维护者 mjtwt):把一场会话取成提炼素材,由模型整理候选条目,每条写入前都要你点头;侧边栏面板可查看、编辑、导入、删除受管记忆文件。插件以 MIT 许可发布,当前 GitHub 星标为 0,分类属于 DSH 生态目录中的「记忆」类。
这是什么¶
dsh-memory-refine 是 DSH 的「记忆提炼」插件:长期记忆以你亲手确认过的内容为准,而不是模型自行攒进文件。它注册五个仅操作白名单路径的工具,并提供「记忆提炼」侧边栏面板;写入统一走版本预检、整份备份、读回核验,且必须拿到用户确认才会落盘——拿不到问答服务时直接拒绝,不静默降级为自动同意。
- 目录页:https://www.skillhub.cn/plugins/mjtwt/dsh-memory-refine
- 源码:https://github.com/mjtwt/dsh-memory-refine
它解决什么问题¶
README 里归纳的三类痛点与插件对策如下:
- 日志长、记忆短:通过
memory_gather从会话事件流取料,生成 markdown 素材,供提炼候选。 - 注入内容混入「他说的话」:取料时丢弃
<system-reminder>整块、Current runtime context.之后的运行时快照、request/header里的提示词清单,推理正文默认砍掉(可配置保留字数)。 - 改记忆没有安全网:
memory_write与面板保存都走同一套confirmAndWrite:版本哈希预检、备份到DSH_HOME/memory-refine-backups/、写后读回逐字比对。
核心功能¶
五个模型工具(仅白名单文件)¶
| 工具 | 作用 |
|---|---|
memory_list |
列出受管文件(含 AGENTS.md、索引、常记、存档),带版本哈希与行数 |
memory_read |
分页读取受管文件 |
memory_gather |
把指定会话取成提炼素材,markdown 落盘,返回预览与统计 |
memory_write |
写入受管文件,必须用户点头 |
memory_import |
将外部内容导入某记忆文件(新章节或追加) |
白名单范围:DSH_HOME/AGENTS.md 与 DSH_HOME/memory/**/*.md;.. 越界或盘外路径一律拒绝。
memory_gather 常用参数¶
| 参数 | 默认 | 说明 |
|---|---|---|
session_id |
当前会话 | 要提炼哪一场 |
mode |
incremental |
incremental 只取水印之后的新轮次;full 取全程 |
max_reasoning |
0 |
每段保留推理字符数,0 表示整段省略为一行占位 |
out_dir |
会话工作区下 memory-refine-scratch/ |
素材落点,不往 DSH 配置目录堆 |
增量边界靠素材首行水印 <!--memory-refine:watermark ... seq=...-->,下次从会话日志里上一次 memory_gather 的 tool/result 解析 seq,无需额外状态文件。
侧边栏面板¶
装好后侧边栏会出现「记忆提炼」图标。左栏为受管文件列表(存档可折叠);右栏可编辑正文并保存。顶栏提供刷新、清理本会话 memory-refine-scratch/ 下 material-*.md / tools-*.md、导入(支持贴正文或单行绝对路径 ≤4096 且文件存在)、删除(先备份再删)等操作。AGENTS.md 在面板里不可删除,只能改。
面板默认通过本机 POST /memory-refine/ui 与 Host 通信(与工具共用 handleUiRequest);路由不可用时会回退斜杠命令,并在顶部显示红色警告。
写记忆时的约定(README 建议)¶
- 一条记忆一个
<!--@refine-->块,避免将来无法单独改删。 - 主语写清楚,减少模型误猜。
- 写完让模型复述「这条是什么意思、归谁」,比假设它已理解更稳。
安装与启用¶
前提:DSH 具备 profile 机制(Desktop 版或带 profile 的 CLI)。官方 README 未提供 dsh plugin add github:... 一类一键命令,而是本地目录 + profile 软链。
- 将插件目录放到任意位置(示例路径需换成你自己的):
D:/plugins/dsh-memory-refine
- 在 profile 的
package.json的dependencies中加入:
{
"dependencies": {
"dsh-memory-refine": "link:D:/plugins/dsh-memory-refine"
}
}
- 同一文件的
dsh.profile.bundles数组中加入 bundle 名:
{ "dsh": { "profile": { "bundles": ["dsh-memory-refine"] } } }
- 重启整个 DSH 进程。改插件代码后也必须整进程重启;在插件管理器里开关不会重新 import ESM 模块。
Windows 上 DSH_HOME 一般为 C:\Users\<用户名>\.dsh。新装环境可能没有 memory/ 目录,面板左栏为空属正常:可让模型通过 memory_write 建占位文件,或在 DSH_HOME/memory/ 下自建 .md 后点「刷新」。
典型用法¶
- 在长会话中与模型协作,让它调用
memory_gather(默认incremental可只取上次水印之后的新内容)生成素材。 - 根据
protocol.js注入的提炼协议,模型整理候选记忆条目;每条经你确认后,由memory_write或面板保存写入。 - 用
memory_list/memory_read核对版本与内容;需要合并旧笔记时用面板「导入…」或memory_import。 - 素材用完可在面板「清理素材…」删除当前会话工作区下的 scratch 文件。
离线自测(不启动 DSH、不碰真实记忆):
node test/smoke.mjs
适用场景与注意¶
适合谁:需要把 DSH 长对话沉淀为可控长期记忆、且希望写入前逐条人工确认的开发者或个人用户。
权限与安全:插件以当前 DSH 进程权限运行,安装前请阅读源码与 MIT 许可证,确认 link: 路径指向你信任的目录。
已知限制(README):
- 面板在「一个会话都没打开过」时无法确定
sessionId,需先打开会话。 - 作者写明目前只在 Windows 上验证过。
- 命令通道为兜底;正常使用面板 HTTP 路由时,对话视图里不会出现
memory-refine · {...}命令记录。
卸载时从 profile 去掉依赖与 bundle 并重启 DSH;可选清理 memory-refine-backups/ 与各会话下的 memory-refine-scratch/,不会删除 AGENTS.md 与 memory/ 正文。
结尾¶
dsh-memory-refine 把「取料 → 提炼 → 逐条确认 → 安全写入」串成一条可复现链路,并用面板把受管记忆文件管在同一套白名单与备份规则里。若你在用 DSH 做长期记忆,可从目录页查看简介,在 GitHub 阅读完整 README 与 protocol.js 后再接入 profile。