前言¶
在 DeepSeek Harness(DSH)里做长期项目时,常见矛盾是:希望模型记住「这个项目里已经定下来的约束和偏好」,又不想把所有对话自动灌进上下文,更不想让 A 项目的记忆污染 B 项目。全局自动记忆、语义检索类插件各有侧重;若你更在意手动开启、工作区隔离、规则必须经你确认、数据是可读可备份的纯文本,可以看一下 wafernm-crypto 维护的 记忆图书馆(Memory Library) 插件。下面介绍它的定位、能力、安装方式与典型用法。
这是什么¶
一句话:按工作区隔离、由你手动开启、规则必须经你确认的本地记忆库。
维护者:wafernm-crypto。源码与文档:GitHub - wafernm-crypto/dsh-memory-library;社区目录页:SkillHub 插件页。当前 package 版本为 0.2.0,许可证 MIT,要求 DSH >= 0.2.1-rc.3、Node >= 20。
它把「这个项目长期有效的决定、偏好、约束」沉淀到工作区下的 .dsh-memory/,而不是逐字归档全部聊天;完整会话仍以 Harness 会话日志为准。与 dsh-memory、dsh-memory-vault、dsh-mnemosyne、dsh-recall 等偏全局、自动或语义检索的方案相比,本插件更强调项目隔离与可控性(README 中的对比表仅描述定位差异,不代表优劣)。
它不是什么(README 原文要点):
- 不是全局自动记忆:新对话默认关闭,必须手动开启。
- 不是语义检索引擎:当前按标题、简介、标签、正文做关键词匹配,不做 embedding。
- 不是逐字聊天归档:日记保留你的原话与 AI 回复摘录。
核心功能¶
设计原则¶
- 手动开启:默认关闭;只有你确认的对话才捕获、注入和使用记忆工具。
- 项目隔离:默认每个工作区一套
.dsh-memory/;跨项目需显式「共用」或「只读接取」。 - 规则优先且需确认:
RULES.md排在提示最前;AI 只能提议规则,不能直接写入。 - 分级读取:标题 → 简介 → 正文,先给索引,细节按需用工具读取。
- 可审计:条目、规则、日志均为本地文件,可直接阅读、备份、纳入 Git。
- 不静默改规则:对规则的
write/edit会被 guard 拦截,只能走审批流程。
存储与检索(当前 0.x 实现)¶
数据目录:<工作区>/.dsh-memory/。主要包含 RULES.md、INDEX.md、记忆卡 library/mem-xxxx.md、日记 journal/、可选 files/、归档 archive/,以及可重建的目录柜 catalog.db 和 settings.json 等。卡片正文是 Markdown,是「唯一真相」;目录柜丢了可扫卡片重建。
检索不走向量:目录柜先查标题、一句话、标签;中文按二字/三字切分,短查询可回退模糊匹配。每轮只把约 5–8 张「当前最容易想起」的卡注入提示,不是整库塞入。
遗忘与整理¶
每条记忆卡有 0–100 的清晰度,按重要度连续衰减(README 称「放慢的艾宾浩斯曲线」);被 memory_read 或搜索到会「回春」。整理时按清晰度台阶压缩展示形态(全文 → 摘要 → 短摘要 → 仅标题 → 归档),不是到某一天突然删除。默认每天整理 3 次(每 8 小时),也可调用 memory_consolidate 立即整理。
三种记忆模式¶
模式是工作区级设置;会话开关单独控制「本对话是否使用记忆」。需先在本对话开启记忆,再通过自然语言让 AI 调用 memory_mode(会弹审批):
| 模式 | 行为概要 |
|---|---|
| 共用 | 读写都落到源工作区的 .dsh-memory/,规则、日记、整理一并共用 |
| 只读 + 新建 | 通过 mounts.json 只读接取外部库(可过滤标签、重要度、条数),新记忆写本地 |
| 完全独立 | 默认;只用本工作区本地库 |
禁止链式共用,避免循环依赖。
工具一览¶
常用工具包括:memory_session(本对话开/关记忆)、memory_search / memory_read、memory_write、memory_forget / memory_pin、memory_status / memory_configure、memory_mode / memory_link、memory_file_*、memory_consolidate、memory_propose_rule(提议规则,需审批后才写入 RULES.md)。完整说明见仓库 README 工具表。
界面与会话开关¶
输入框工具行左侧有紧凑开关:记忆 关(灰色)不捕获、不注入;记忆 开(绿色)表示本对话启用。点击开关即视为你的手动选择,可绕过 memory_session 的审批弹窗。状态约每 5 秒同步;显示「记忆 !」通常表示本地 API 未连通(可刷新页面或检查 Host 路由)。
安装与启用¶
安装命令(来自 README 原文):
dsh plugin --profile web add @wafernm/dsh-memory-library
安装后在 Harness 插件页应能看到「记忆图书馆 / Memory Library」。插件以当前 DSH 进程权限运行;安装前建议自行查看源码与 MIT 许可证,并知悉当前为 0.x 早期版本,升级前请备份 <工作区>/.dsh-memory/(复制文件夹即可)。
默认配置在 cordis.patch.yml,各工作区可用 .dsh-memory/settings.json 或 memory_configure 覆盖,例如默认容量 5 GiB(maxStorageBytes: 5368709120)、聊天附件默认不自动进库(files.enabled: false),超过 100 MB 需单独确认。
典型用法¶
1、在新对话里手动开启记忆¶
打开输入框左侧「记忆」开关,或让 AI 调用 memory_session 开启(工具路径需审批;按钮点击不需要)。开启后,每轮结束会把你的消息与 AI 回复要点写入当天 journal/YYYY-MM-DD.md。
2、沉淀一条可复用的决定¶
在已开启记忆的对话里说明要长期保留的约束或偏好,AI 可通过 memory_write 写入记忆卡;需要项目级规则时,应走 memory_propose_rule,你在审批弹窗确认后才会追加到 RULES.md。
3、按需检索,而不是默认全文¶
需要回忆细节时,先 memory_search 查标题、简介、标签,再用 memory_read 按 id 读全文;也可读 journal:YYYY-MM-DD、index、rules。
4、与另一个项目共用或只读接取¶
在目标工作区、且本对话已开启记忆的前提下,用自然语言描述意图,例如(路径换成你的实际工作区):
- 共用:「当前项目和源工作区
/path/to/other-project共用记忆库」 - 只读接取:「只读接取
/path/to/other-project的 shared 标签、重要度 ≥3、最多 30 条,新记忆写本地」 - 切回独立:「切回完全独立的记忆库」
memory_link 可管理只读挂载的列表与移除。
5、查看容量与立即整理¶
memory_status
memory_consolidate
适用场景与注意¶
更适合:
- 同时维护多个项目,需要记忆按工作区隔离。
- 只想在部分对话里记录,而不是所有聊天自动入库。
- 希望规则与记忆是可读文本,能备份、能进版本控制。
- 能接受 0.x 阶段 API 与数据布局可能调整(CHANGELOG 会写迁移说明)。
不太适合:
- 装完就希望自动记住一切、或强依赖「换说法也能搜到」的语义检索。
- 需要百万级条目与复杂结构化查询(当前是文件扫描 + 目录柜,不是大型数据库方案)。
成熟度:README 明确当前为 0.x;minor 版本可能含不兼容变更。不承诺存储实现永远不变,但承诺不把记忆锁在不可读格式,变更会记录在 CHANGELOG。
与同类插件的差异(全局自动、设置页、SQLite/语义、对话全文检索等)请以各自 README 为准;本插件侧重可控、隔离、纯文本、连续遗忘与规则审批。
结尾¶
记忆图书馆把「项目级长期记忆」做成工作区下的 Markdown 卡片与日记,默认不自动记录,规则与跨库模式都经过你确认。若符合你的协作方式,可通过 SkillHub 目录页了解收录信息,并在 GitHub 阅读完整 README、DESIGN 与 CHANGELOG。
- 目录页:https://www.skillhub.cn/plugins/wafernm-crypto/dsh-memory-library
- GitHub:https://github.com/wafernm-crypto/dsh-memory-library