dsh-memory-vault:把个人记忆库收成 DSH 宿主插件

前言

在 DeepSeek Harness(DSH)里做长期助手时,「个人记忆」往往需要三处各写一点:~/.dsh/AGENTS.md 里的规则段落、personal-memory 技能,再加上 memory.py 脚本。规则散在文档里,换 workspace 或换会话时容易出现「记得查库、但不知道怎么查、写完不重建索引」之类的不一致。

dsh-memory-vault(维护者 wsy320,分类:记忆)把上述三件套收进一个 Host bundle:一段常驻 system prompt 规定何时检索、凭据边界、写入回报;四个工具负责检索、写入、体检与维护。规则写在代码里,对每个 workspace、每个会话一视同仁。社区目录页见 SkillHub,源码在 GitHub。当前包版本为 0.4.0(MIT)。

这是什么

一句话:本地 Markdown 记忆库的 DSH 宿主插件,带加权检索、受控写入、frontmatter 自检,以及可选的 git 自动同步。

它替代的不再是「再装一个技能」,而是把「个人记忆库」从 AGENTS.md 和独立脚本里迁到插件生命周期中:挂载即生效,设置页改路径后原地 apply,无需重启 DSH。

提供的工具

下面四个工具在配置有效库路径后注册;vault 为空或路径非法时工具不注册,提示段会说明「记忆库不可用」。

工具 主要参数 作用
memory_search query(必填)、include_credentials(可选) 加权检索,返回 路径:行号、摘要与摘录;凭据目录默认不搜,需显式开启
memory_write path、text(必填)、append(可选) 写入并重建索引,返回 committed 报告
memory_health 无 lint 前 20 条问题、篇数、库路径;同步结果在输出最后一行
memory_maintain op: index\|lint\|new(必填),type、title(可选) 重建索引、全量 lint,或从模板在 inbox/ 新建

memory_write 成功后会刷新条目的 updated:、重建 INDEX.md 与 MEMORY.md 覆盖段,并追加 CHANGELOG.md。memory_maintain 的 new 从 templates/ 取模板(缺省用 通用.md)。

常驻提示词与设置

插件注册 system prompt 段 memory-vault,order 为 9600(位于 file references 之后、structured output 之前),interpolate: false,避免库路径中的反斜杠被误当成模板变量。内容涵盖:判断标准、检索方式、凭据纪律、写入回报、自检。

在 DSH 设置 → 记忆库 中可改「库目录」。该页由插件注册的 settings.section 提供,经 ctx.configForms.get('dsh-memory-vault') 读写 Config:getSnapshot() 读,set('vault', path) 写(带 revision 栅栏,保存失败会提示而非静默覆盖)。Host 侧 vault 等字段为 .volatile(),保存后插件原地重新 apply,工具与提示段立即使用新路径。

除 vault 外,可在设置页调整的字段(默认值见 README):

字段 默认 说明
vault 空 记忆库文件夹绝对路径
searchLimit 5 检索最多返回条数
maxExcerpt 120 摘录截断长度
promptOrder 9600 常驻提示段排序

cordis.patch.yml 中故意不写 vault,避免把本机路径写进 bundle 成为所有 profile 的默认值。

库目录须为绝对路径;相对路径、不存在路径或无法解析为字符串的配置一律视为未配置,Host 日志会 warn。写入前还会校验根目录存在、为文件夹,且含有 MEMORY.md / INDEX.md / CHANGELOG.md / templates 之一,否则拒绝写入。

库结构约定

一级目录固定为 me / work / life / memory / inbox;me/credentials/ 为明文凭据目录。

frontmatter 字段包括 title、type、domain、scope、summary、keywords、status、created、updated。type、scope、status 各有枚举取值(见项目 README)。

INDEX.md、MEMORY.md 中 <!-- coverage:start --> 与 <!-- coverage:end --> 之间的覆盖段,以及 CHANGELOG.md 由工具维护,不宜手改。

典型用法流程

  1. 在设置里填好记忆库绝对路径并保存。
  2. 对话中需要回忆时,由 agent 调用 memory_search,按需传入 query;涉及密码、token 等时再设 include_credentials: true。
  3. 需要落笔时调用 memory_write;追加正文用 append: true(内容追加在 frontmatter 之后)。若返回 committed: false,应把 reason 原样告知用户。
  4. 定期或怀疑索引异常时调用 memory_health;需要重建索引、全量 lint 或在 inbox 建稿时用 memory_maintain。

写入流程在插件内完成:校验路径与内容 → 写盘 → 读回校验 → 刷新 updated: → 重建索引与覆盖段 → 记 CHANGELOG → 返回 { committed, path, line, verify, index },其中 line 为刷新 updated: 后的行号,便于局部读取。

凭据与检索纪律

me/credentials/ 下内容为明文;检索命中时与其它笔记一样返回摘录行,以便 agent 取出用户所需的值。默认检索不包含凭据文件,只有 include_credentials: true 才纳入,避免普通问题顺带泄露秘密。常驻提示段约束使用侧:只用于用户交办的事或原样交还用户,不进日志、不进 commit、不主动罗列。

自动 git 同步

记忆库本身是 git 仓库时,插件可保持多机一致:

  • 插件挂载(应用启动或保存设置后重挂)时拉取一次远程。
  • 每隔 syncIntervalSeconds(默认 300 秒,小于 60 按 60 处理)先 pull 再 commit + push。

配置项 syncEnabled 默认 true;设为 false 则不做启动拉取也不定时同步。实现遵循「先 pull 后 push」「失败自动 abort」「commit 先于 push」;工作区有未提交改动时 pull 会跳过并报告。自动 commit 标题来自 memory_write 记录的实际写入,无记录时回退为 memory: 自动同步。同步失败不抛错、不影响工具调用,状态出现在 memory_health 最后一行。

安装与依赖

README 给出的安装方式是用 plugin_manager 的 install_bundle,指向本插件目录的绝对路径(并非凭仓库名拼接 CLI 添加命令)。

依赖 @deepseek-ai/schemastery(^3.18.0),Config 须为真正的 schemastery schema,设置页才能看到本插件。包通过 link: 装进 profile 时,node_modules 落在插件目录自身;换机器或删掉 node_modules 后,在插件目录执行:

pnpm install

回滚可选:移除 bundle,或将 cordis.patch.yml 里对应 row 设为 disabled: true。两种方式都不会删除库文件。

原 AGENTS.md「个人记忆库」节与 personal-memory 技能已退役;memory.py 保留在 ~/.agents/skills/_retired/personal-memory/scripts/ 仅作逃生参考。

适用场景与注意

适合:已在用或打算用本地 Markdown 库沉淀偏好、项目、凭据索引,并希望 DSH 会话里检索与写入有统一规则、索引自动维护的开发者。

注意:

  • 插件以当前 DSH 进程权限读写你配置的库路径;安装前请自行审阅 源码 与 MIT 许可证。
  • 凭据目录为明文;同步开启时 commit 会带上记忆库变更,请确认远程仓库可见范围。
  • SkillHub 目录为社区站点,与 DeepSeek / 幻方无官方从属关系;星标等元数据以各站点实时显示为准。

项目自测命令(Node 24 下需带引号):

node --test "test/*.test.js"

结尾

dsh-memory-vault 把个人记忆从「文档 + 技能 + 脚本」收成一套宿主插件:工具管数据面,提示段管行为面,设置页管路径与检索参数,可选 git 同步管多机一致。若你正在 DSH 里维护长期上下文,可按 README 用 install_bundle 挂载并配置库目录试用。

  • 目录页:https://www.skillhub.cn/plugins/wsy320/dsh-memory-vault
  • GitHub:https://github.com/wsy320/dsh-memory-vault
羽毛球分组比赛记分
小程序二维码

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

Xiaoye