前言¶
DeepSeek Harness(DSH)的插件机制允许为智能体补充工具与提示段,但记忆并不是默认就具备的能力。对于需要在多个会话之间保留用户偏好、长期事实或项目上下文的开发者来说,缺少持久记忆意味着每次会话都可能重新提供背景。
ben7am1n/dsh-memory 是一个 DSH 记忆插件:它使用单个本地 SQLite 文件和 FTS5 索引提供跨会话记忆,不需要嵌入服务、API key 或 sidecar 进程。
下面介绍它的定位、功能、安装命令、配置项和适用边界。
这是什么¶
dsh-memory 由 ben7am1n 维护,许可证为 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