前言¶
DeepSeek Harness(dsh)把能力拆成插件,本体默认不带长期记忆。社区里常见做法是 SQLite FTS5 或带 Web 界面的记忆插件:前者对中文检索不友好,后者在纯 IM(飞书、微信等没有 Web 表面的 profile)里可能因 inject: ['webServer'] 导致整棵插件树启动失败。
下面介绍维护者 smallwhitelin 发布的 dsh-memory-md(SkillHub 分类:记忆)。它用一份可手改的 Markdown 作真源,检索走大小写不敏感的子串匹配,只注入 tools 与 systemPrompt,不依赖 Web。
这是什么¶
dsh-memory-md 是面向 dsh 的极简长期记忆插件:CJK 友好的子串搜索、人类可直接编辑的 Markdown、不需要 Web 表面。
定位是显性记忆(Explicit memory):用户说「记住…」「改成…」「忘掉…」时由模型调用对应工具;不自动沉淀、不调额外模型、不建索引,存什么由你决定。
相对常见做法的两点差异¶
- 中文能搜:FTS5 默认分词器常把整句中文当一个词,子串如「墨绿色」可能 0 命中;本插件用子串匹配,中文任意片段、英文、几个字都能命中,不碰分词器。
- 纯 IM 可用:仅
inject: ['tools', 'systemPrompt'],不写数据库、不联网、不起子进程,适合@dsh-feishu/dsh-feishu这类 profile。
核心功能¶
记忆文件¶
默认路径由配置 path 决定,推荐:
path: !!js dshHomePath('memory/MEMORY.md')
即 ~/.dsh/memory/MEMORY.md。示例结构:
# 记忆
<!-- 每行一条,`- 内容`;直接编辑这个文件即可,改动下一轮生效 -->
- 用户习惯用中文回复
- 用户最喜欢的颜色是墨绿色
- 部署机 workspace 是 /home/zero/workspace
可直接用编辑器增删改行,下一轮对话重新读文件即生效。插件改条目时只动目标行,原子写入(.tmp 再 rename),避免半截文件。
工具¶
| 工具 | 作用 | 匹配 |
|---|---|---|
memory_add(text) |
新增一条(完全相同内容自动跳过) | — |
memory_replace(old_text, new_text) |
改一条(整行替换,位置不变) | 大小写不敏感子串,需唯一命中 |
memory_remove(old_text) |
删一条 | 同上 |
memory_search(query) |
搜索 | 同上 |
用子串定位而非 id,手工编辑后引用不会失效;多条命中会报错,需写具体些再试。
注入¶
记忆内容作为系统提示词段落注入。默认 maxInjectChars: 3000,超出会截断并提示改用 memory_search。适合稳定事实清单,不适合堆成大型知识库。
安装与启用¶
任选一种方式,将 <你的 profile> 换成实际 profile 名;改完后重启该 profile 服务(或支持热重载时自动生效)。
方式 A — 从 GitHub(不需要任何账号)
dsh plugin --profile <你的 profile> add github:smallwhitelin/dsh-memory-md
方式 B — npm(发布后)
dsh plugin --profile <你的 profile> add dsh-memory-md
方式 C — 手写 profile 的 cordis.patch.yml
- insert:
- id: memory-md
name: 'dsh-memory-md'
config:
path: !!js dshHomePath('memory/MEMORY.md')
maxInjectChars: 3000
配置项¶
| 键 | 默认 | 说明 |
|---|---|---|
path |
必填 | Markdown 记忆文件路径 |
maxInjectChars |
3000 | 每轮注入字符上限 |
searchLimit |
20 | memory_search 单次最多返回条数 |
order |
50 | 提示词段落顺序 |
典型用法¶
- 安装并配置
path后启动 profile。 - 在对话中说「记住我习惯用中文回复」→ 模型调用
memory_add。 - 说「把我最喜欢的颜色改成深蓝色」→
memory_replace,用旧内容子串唯一定位行。 - 记忆变多、超过注入上限时,让模型用
memory_search查关键词,而不是依赖整份注入。 - 需要批量整理时,直接编辑
MEMORY.md,保存后下一轮生效。
适用场景与注意¶
适合:需要在 IM 里长期记住少量稳定事实;希望文件可读可 diff;中文检索要可靠;不想开 Web 或 SQLite FTS。
环境:Node ≥ 24(与 dsh 要求一致);零运行时依赖(仅 node:fs / node:path)。卸载时删掉 profile 里对应插件并重启,Markdown 文件仍留在磁盘。
安全:插件以当前 dsh 进程权限读写 path 所指文件。安装前请自行查看 GitHub 仓库 源码与 MIT 许可证。社区目录 SkillHub 插件页 与 DeepSeek / 幻方无官方从属关系,仅为生态收录。
结尾¶
dsh-memory-md 把长期记忆收成一份 Markdown:中文子串可搜、工具显式增删改查、不绑 Web。需要接入时,可从 SkillHub 目录页或 GitHub README 对照安装命令与配置字段。
- 目录页:https://www.skillhub.cn/plugins/smallwhitelin/dsh-memory-md
- GitHub:https://github.com/smallwhitelin/dsh-memory-md