dsh-memory-layer:给 DeepSeek Harness 的本地记忆层

前言

DeepSeek Harness (DSH) 采用插件化架构,旨在将核心能力开放给社区。在构建智能体工作流时,跨会话的记忆保留是刚需。传统的方案通常依赖外置的向量数据库或记忆服务,这会引入延迟,并带来隐私风险。下面介绍 dsh-memory-layer,一个给 DSH 的「记忆层」插件,它通过本地单文件存储和触发式规则,解决了记忆的持久化与召回问题。

它是什么

这是一个纯本地的记忆插件,核心是一个单文件 SQLite 数据库。它不做向量检索、不做知识图谱、不做云端同步,也不做 Web UI。它的职责很单一:在 DSH 进程中维护一份本地记忆,并在特定信号触发时,把该想起的记忆拿出来。

核心功能

插件采用四层结构设计,确保记忆的可靠性与可控性。

存储层:本地 SQLite

数据存储在本地文件系统中,路径为 .dsh/biomemory/biomemory.db(WAL 模式)。主要字段包括 realm(隔离维度,user 或 project)、mtype(类型,workflow/error/decision/fact)、trigger(触发信号串)以及 text(正文)。所有删除操作采用「墓碑」机制,仅修改状态标记,不物理删除数据。

召回层:触发式驱动

插件不依赖模型进行自动回忆,而是根据当前会话的上下文进行确定性召回。触发信号来自当前工作目录和最近 12 次工具调用,形态为可读的字符串:
* file:<文件名>
* tool:<工具名>
* err:<错误代号>

命中后按优先级排序注入(workflow > error > decision > fact),每次注入有预算限制(最多 8 条、1200 字符)。

清理层:五条可解释规则

通过 /memory compact 命令执行清理,每次淘汰都会写入 compact.log:
1. 同键覆盖:新记忆覆盖旧记忆(旧条目标墓碑)。
2. Fact 过期:30 天无使用(≤1 次)→ 墓碑。
3. Workflow/Error/Decision 降权:90 天无使用 → 权重减半。
4. Error 与 Decision 永不自动删除。
5. 每条淘汰记录均包含时间、指纹、规则摘要。

适配层:工作流链

当同一个触发串出现超过 3 次时,相关记忆会自动升级为 workflow 类型,并按时间顺序拼成一条链。例如记录下「打开文件 -> 运行测试 -> 修改代码」的顺序。

安装与启用

安装前请确保已安装 Node.js >= 22.19.0。使用官方命令安装:

# 将 --profile web 替换为你实际的 profile 名
dsh plugin --profile web add github:KLRSL/dsh-memory-layer

安装完成后,DeepSeek Harness 会自动热挂载该插件。

典型用法

插件提供了 /memory 命令和 memory_recall 工具。

命令行交互

/memory list | query <词> | add <内容> | edit <fp> <新内容> | remove <fp> | undo <fp>
/memory pin <fp> | unpin <fp> | entries [词]
/memory compact [--dry-run] | dump

工具调用

在代码或 Prompt 中调用 memory_recall 工具进行显式召回。

写入审批

对于重要的记忆(如用户偏好、决定、纠正),插件支持 DSH 官方审批机制。审批服务不可用时,默认拒绝写入(fail-closed,可通过配置放宽)。

适用场景与注意

该插件适合需要高隐私、低延迟、可解释性记忆能力的开发者。它适合单机环境,不适合需要多机协作的场景。

需要注意:
1. 不做向量检索:相同的输入必须给出相同的触发信号,检索路径是确定性的。
2. 不做自动反思:不依赖模型进行归纳,工作流链完全基于重复触发记录。
3. 零服务依赖:数据完全本地化,无网络请求,无遥测数据。

短结尾

经过上面的步骤,你已经为 DeepSeek Harness 挂载了一个纯本地的记忆层。它不提供花哨的平台功能,只提供可靠的存储与触发式召回。数据就在你自己的机器上,拷走文件即可迁移。更多细节请查看 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

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

小夜