dsh-memory:为 DeepSeek Harness 提供本地 SQLite 跨会话记忆

前言

DeepSeek Harness(DSH)的插件机制允许为智能体补充工具与提示段,但记忆并不是默认就具备的能力。对于需要在多个会话之间保留用户偏好、长期事实或项目上下文的开发者来说,缺少持久记忆意味着每次会话都可能重新提供背景。

ben7am1n/dsh-memory 是一个 DSH 记忆插件:它使用单个本地 SQLite 文件和 FTS5 索引提供跨会话记忆,不需要嵌入服务、API key 或 sidecar 进程。

下面介绍它的定位、功能、安装命令、配置项和适用边界。

这是什么

dsh-memoryben7am1n 维护,许可证为 MIT。它面向 DeepSeek Harness 的跨会话记忆场景,通过三个模型可见工具和一段 memory:recall 提示段工作。

它把记忆保存在本地 SQLite 文件中,并使用 FTS5 做关键词检索。记忆可以跨进程重启保留;卸载插件时,插件会移除对应工具和提示段,并关闭数据库。

运行环境要求 Node.js:

^22.19.0 || >=24.0.0

在 Node 22/24 下,由于使用 node:sqlite,运行 harness 时可能会打印一条 ExperimentalWarning

核心功能

这个插件给模型提供三个工具:

1、memory_write:存储一条自包含的持久事实,可添加标签并置顶。

2、memory_search:对记忆文本和标签进行关键词搜索。

3、memory_forget:删除已经错误或过期的记忆。

插件还提供 memory:recall 提示段。该提示段在字符预算内渲染记忆,排序规则是置顶优先,然后按最近更新顺序排列。这样模型不必每次都先调用搜索才能看到近期重要记忆;搜索更适合查找预算之外的更旧内容。

检索是词法检索,不是语义检索。搜索会对每个 token 加引号,使 FTS5 操作符按字面匹配,而不是改变查询语义。

memory_write 的提示会引导模型避免存储临时任务状态、密钥以及仓库已经记录的事实。

安装与启用

先执行安装命令:

dsh plugin --profile web add dsh-memory

默认 bundle 行会把记忆存储到:

$DSH_HOME/memory/memory.db

在同一台机器上,所有 profile 会共享这个默认存储位置。

path 是必填配置,没有代码侧默认值。它可以指向一个 SQLite 文件,也可以使用 :memory: 做临时存储。

插件没有为 path 设置代码侧默认值,是为了避免把持久用户事实分散到 harness 启动时所在的目录。部署值放在 patch row 中。

配置

默认配置示例如下:

- id: memory
  name: dsh-memory
  config:
    path: !!js dshHomePath('memory/memory.db')
    promptRecentCount: 10
    promptMaxChars: 2000
    maxTextChars: 2000
    searchLimitDefault: 10
    searchLimitMax: 50
    promptOrder: 50

各字段含义如下:

字段 默认值 说明
path 必填 SQLite 文件路径,或 :memory: 临时存储
promptRecentCount 10 memory:recall 中提供的近期记忆数量
promptMaxChars 2000 memory:recall 渲染段落的字符预算
maxTextChars 2000 单条记忆允许的最大字符数
searchLimitDefault 10 memory_search 未指定 limit 时的默认值
searchLimitMax 50 memory_search 的硬上限
promptOrder 50 提示段顺序

加载期配置错误会直接报错。例如:path 为空、边界值非正、searchLimitDefault 大于 searchLimitMax

典型用法与开发

安装完成后,模型可以通过 memory_write 写入持久事实,通过 memory_search 检索记忆,通过 memory_forget 删除失效记忆。memory:recall 会按置顶优先、最近更新的顺序,在字符预算内把记忆渲染到提示中。

如果你要本地开发这个插件,可以按下面流程执行:

pnpm install --ignore-workspace
pnpm run typecheck
pnpm test
pnpm run build

这些命令分别完成依赖安装、类型检查、测试和构建。

适用场景与注意

dsh-memory 适合这些场景:

  • 希望 DSH 跨会话保留少量长期事实,而不是每次重新提供上下文。
  • 希望记忆检索不依赖外部嵌入服务、API key 或 sidecar 进程。
  • 能接受关键词检索,而不是语义相似检索。
  • 希望通过标签、置顶和近期记忆控制模型看到的上下文。

它不适合强语义相似检索、大规模向量召回,或必须依赖语义匹配的场景。

使用前请注意:

1、插件会在当前 dsh 进程权限下运行,安装前应检查源码、许可证和配置来源。

2、默认共享存储会写到 $DSH_HOME/memory/memory.db。同一台机器上使用多个 profile 时,要确认这些 profile 是否应该共享同一份记忆。

3、memory_write 的提示会引导模型避免写入临时任务状态、密钥和仓库已记录的事实,但实际使用仍应遵守项目的安全策略。

4、:memory: 适合临时存储,不适合作为跨重启保留的长期记忆方案。

结尾

dsh-memory 的价值在于把 DSH 的记忆扩展做成一个低依赖的本地 SQLite + FTS5 方案:它提供写入、搜索、遗忘工具,也用提示段召回近期和置顶记忆。对于只需要跨会话记住少量持久事实的开发者,它比引入嵌入服务更轻。

  • GitHub:https://github.com/ben7am1n/dsh-memory
  • 目录页(来自插件线索,访问前请自行核对):https://www.skillhub.cn/plugins/ben7am1n/dsh-memory
羽毛球分组比赛记分
小程序二维码

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

小夜