DSH 跨会话记忆插件 dsh-memory:YAML 存储、语义检索与两级注入

前言

在 DeepSeek Harness(dsh)里,跨会话信息如果只靠上下文窗口承载,新会话开始后容易丢失:项目偏好、历史教训、用户约定等需要反复说明。已有做法通常是手工维护笔记,或在提示词里反复贴背景;前者依赖人工整理,后者容易占用较多 token 并干扰缓存。

DSH 的插件生态强调以插件扩展能力。社区目录是独立站点,并非 DeepSeek / 幻方官方应用商店。下面介绍 Towzai 提供的 dsh-memory:一个面向 dsh 的跨会话记忆插件。

这是什么

dsh-memory 是 DeepSeek Harness 插件,MIT 许可证,包名为 @towzai/dsh-memory,仓库为 Towzai/dsh-memory

它解决的是 dsh 会话之间记忆不连续的问题:把记忆写入 YAML 文件,在后续会话中按需要检索和注入,并保留完整细节供查看。

插件默认使用本地 ollama 和 embedding 模型;没有 ollama 时,会降级为纯关键词检索。

核心功能

  • 提供六个工具:rememberrecallviewlistforgetpin
  • 记忆存储在 YAML 文件中,默认文件为 memory.yaml
  • recall 支持关键词 + 本地 ollama embedding 的混合检索,采用 RRF 融合。
  • 默认 embedding 模型是 qwen3-embedding:0.6b,可用环境变量 DSH_MEMORY_EMBED_MODEL 覆盖。
  • 注入时标题优先:会话中先看到带 id 的标题,完整内容通过 view 展开。
  • 支持 sessionauto 两级注入:session 级固定记忆在会话第一步注入一次,后续随历史携带;auto 级记忆按话题检索,不污染固定记忆注入集。
  • 注入记忆带来源标注前缀 Retrieved memories from the memory store (not conversation history),避免被误认为对话历史。
  • 检索匹配包含泛词降权、关键词至少 2 词命中、检索门控跳过测试性话语。
  • 数据安全包含串行写入队列、损坏文件隔离备份、原子写入、mtime 缓存失效。

安装与启用

先从 GitHub 安装:

dsh plugin --profile <name> add github:towzai/dsh-memory

也可以用本地路径:

dsh plugin --profile <name> add ./dsh-memory

README 还列出 npm 包方式(如已发布):

dsh plugin --profile <name> add @towzai/dsh-memory

如果首次从 git 安装时被 pnpm 拒绝运行 prepare,按提示在该 profile 的 pnpm-workspace.yaml 中加入:

allowBuilds:
  '@towzai/dsh-memory': true

插件依赖本地 ollama 实例和 embedding 模型。默认模型为 qwen3-embedding:0.6b,可用 DSH_MEMORY_EMBED_MODEL 覆盖。没有 ollama 时自动降级为纯关键词检索。

典型用法

下面是插件提供工具的职责:

1、remember:保存记忆,字段包括 contenttitlecategorytagsimportanceforceInjectinjectLevelsource

2、recall:按关键词 + embedding 混合检索 top-N 结果。

3、view:按 id 展开一条记忆的完整内容。

4、list:查看标题列表,支持分类、标签、重要性过滤;full 可看全文。

5、forget:软删除记忆,标记 retired 并保留历史。

6、pin:切换 forceInject,用于让行为铁则始终常驻。

一条记忆的大致结构如下:

- id: MEM-20260814-001
  title: "总结标题(缺省自动推导)"
  content: "..."
  category: preference | project | lesson | fact
  tags: [tag1, tag2]
  importance: high | normal | low
  created: 2026-08-14
  updated: 2026-08-14
  source: user | agent | conversation
  retired: false
  forceInject: false
  injectLevel: session | auto
  vector: [...]

这里 vector 是写入时自动计算的 embedding,用于语义检索。

适用场景与注意

适合在 dsh 中需要跨会话保留用户偏好、项目约定、历史教训或固定行为规则的场景。如果依赖本地 ollama 语义检索,需要保证本地实例和模型可用;如果只是关键词检索,也可以无 ollama 降级运行。

使用前建议检查源码和依赖,因为插件代码会在当前 dsh 进程权限下运行。该插件许可证为 MIT,安装和分发前应按团队规范审阅代码。

注意:

  • 记忆文件是私有数据,建议加入 .gitignore,不要提交到仓库。
  • 更换 embedding 模型会使已存向量失效;维度不匹配会被检测并告警。
  • 插件针对 dsh v0.1.0-rc.5 开发,peerDependencies 版本范围可能需要随 dsh 升级调整。
  • npm 安装方式取决于包是否已发布;如使用 npm 方式,请以实际发布状态为准。

结尾

dsh-memory 把“记住、检索、查看、管理”放进 dsh 的工具调用链路里,用 YAML 文件承载记忆,用标题优先和两级注入控制上下文占用。

目录页:

  • https://www.skillhub.cn/plugins/Towzai/dsh-memory

GitHub:

  • https://github.com/Towzai/dsh-memory
羽毛球分组比赛记分
小程序二维码

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

小夜