记忆图书馆(dsh-memory-library):按工作区隔离的本地记忆库

前言

在 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 回复摘录。

核心功能

设计原则

  1. 手动开启:默认关闭;只有你确认的对话才捕获、注入和使用记忆工具。
  2. 项目隔离:默认每个工作区一套 .dsh-memory/;跨项目需显式「共用」或「只读接取」。
  3. 规则优先且需确认:RULES.md 排在提示最前;AI 只能提议规则,不能直接写入。
  4. 分级读取:标题 → 简介 → 正文,先给索引,细节按需用工具读取。
  5. 可审计:条目、规则、日志均为本地文件,可直接阅读、备份、纳入 Git。
  6. 不静默改规则:对规则的 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
羽毛球分组比赛记分
小程序二维码

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

小夜