前言¶
在 DeepSeek Harness(DSH)里做智能体或长期协作,常见问题是:偏好、决定、踩过的坑只活在当前会话里,换一个新线程要从头交代。社区里也有「记忆平台」类方案,往往要额外跑服务、接嵌入或同步链路。若你只想在本机持久化少量可解释的记忆,并在合适的时机自动带进上下文,dsh-memory-layer 走的就是这条更轻的路。
下面按安装、存储与召回、日常操作说明这个插件能做什么、不能做什么。
这是什么¶
维护者 K-W7,分类为记忆;当前 README 标注版本 v0.11.3,MIT 许可证,要求 DSH >=0.2.0-rc.2 <0.3.0-0、Node >=22.19.0。
一句话定位:只做记忆,不做记忆平台。
它不依赖外置服务、向量检索、嵌入模型、知识图谱、云端同步或 Web UI;核心是 SQLite 单文件 加一套 确定性 的「什么时候该想起什么」规则。数据落在本机,库文件路径为 <DSH_BIOMEMORY_DIR || ~/.dsh/biomemory>/biomemory.db;拷走该文件即可迁移。
四层结构概览¶
存储层¶
记忆落在 SQLite 中,主要字段包括:
| 字段 | 含义 |
|---|---|
realm |
隔离维度:user 或 project:<工作目录> |
mtype |
类型:workflow / error / decision / fact |
trigger |
触发信号串 |
mkey |
同键覆盖用的主题键 |
text |
正文 |
另有 chains(工作流链)、trigger_counts(触发计数,用于工作流升级)等辅助结构。v0.11 起区分 被注入(last_accessed)与 真实使用(last_used、hits),避免清理规则被「每次看到就刷新」误触发。
召回层¶
不等模型自发联想,而是根据当前会话信号注入记忆:
- 信号来源:会话工作目录(
session.cwd)与最近 12 次工具调用的名字、参数(路径、命令、错误代号等)。 - 触发串形态:
file:<文件名>、tool:<工具名>、err:<错误代号>。 - 命中后按 workflow > error > decision > fact 排序注入;工作流链整链带入。
- 注入预算:每次最多 8 条、最多 1200 字符;无命中则不注入。
- 偏好/决定通道(v0.11):对缺少 trigger 的偏好类记忆单独给小预算(默认 ≤3 条 / ≤400 字符)。
- 冷启动兜底:库较小时可在零命中时回落注入最近几条;库变大后让位给触发召回。
真实使用仅计:memory action=query 关键词命中,或显式 memory action=used fp=<指纹>。
清理层¶
/memory compact 按五条可解释规则处理(支持 dryRun 预览),淘汰写入 compact.log。fact 长期未真实使用可进墓碑;error 与 decision 不自动删除;pin 条目豁免。remove 为墓碑可 restore,purge 为物理删除且不可逆。
适配层¶
同一触发串出现超过 3 次,相关记忆可升级为 workflow 并按时间顺序成链——记录的是「上次你怎么做的」,不做因果推断。
安装与启用¶
推荐在 DSH 桌面版安装:
- 打开 DSH 桌面版 → 左侧 插件 → 加插件;
- 包名填
dsh-memory-layer,点 安装(安装后自动启用)。
命令行等价(把 desktop 换成你的 profile 名):
dsh plugin --profile desktop add dsh-memory-layer
本地开发可 link:
dsh plugin --profile desktop add link:./dsh-memory-layer
安装完成后重启 DSH 生效;开启 HMR 的 profile 可热挂载。
典型用法¶
工具 memory¶
| action | 说明 |
|---|---|
add |
写入记忆(text 必填) |
query |
关键词查询;命中记一次真实使用 |
used |
标记本条刚被用上 |
list / update |
浏览 / 修改 |
remove |
墓碑(可 restore) |
purge |
物理删除(不可逆) |
restore / pin / unpin |
回滚 / 锁定 / 解锁 |
compact |
按规则清理 |
dump |
导出人类可读 Markdown |
另有 memory_recall,用于「你还记得…吗」式显式召回。
用户偏好、决定、纠正类重要记忆可走 DSH 官方审批;审批服务不可用时默认拒绝(approvalFallback=deny,可配置为 auto)。
命令 /memory¶
常用子命令包括:
/memory list | query <词> | add <内容> | edit <fp> <新内容> | entries [词]
/memory remove <fp> | purge <fp> | undo <fp> | unarchive <fp> | used <fp>
/memory pin <fp> | unpin <fp>
/memory stats | why <fp> | preview
/memory compact [--dry-run] | dump | help
stats:活跃条数、类型与 realm 分布、trigger 覆盖率 等。why <fp>:解释某条记忆(不)会被注入的原因。preview:预览当前轮次若组装提示词会注入什么。
写入时若正文含「今天 / 昨天」等相对时间但无绝对日期锚点,成功返回会附带提醒,写入仍会成功。
配置¶
配置文件:<DSH_MEMORY_ROOT || ~/.dsh/memory>/biomemory.config.json(v0.11 起配置与导出在 memory/ 目录,库在 biomemory/)。
部分可覆盖项示例:
| 键 | 默认 | 说明 |
|---|---|---|
decisionChannelMax |
3 | 偏好/决定通道每轮最多条数 |
decisionChannelChars |
400 | 偏好/决定通道字符预算 |
coldStartFallbackMax |
3 | 冷启动兜底条数 |
injectSnapshot / injectRecall / injectSummary |
true | 宿主注入开关;全置 false 则只存只查、不进 prompt |
approvalFallback |
deny | 审批不可用时的策略 |
三个 inject* 在插件 apply 时读取,修改后需重启宿主或重载插件。
环境变量:DSH_BIOMEMORY_DIR(数据目录)、DSH_MEMORY_ROOT(Markdown 备份/日志目录)。宿主开启 webServer 时可能注册本机 HTTP 端点 /biomemory/api,默认仅本机来源。
适用场景与注意¶
适合谁: 希望在 DSH 会话间保留偏好、决定、错误处理习惯和工作流重复模式,且要求检索可解释、数据不出本机的开发者。
刻意不做的事: 向量/嵌入检索、自动「反思」、跨机同步、删除即销毁(常规删除为墓碑)。
安全与权限: 插件以当前 DSH 进程权限运行,可读写本机 SQLite 与配置目录。安装前建议查看 GitHub 仓库 源码与 MIT 许可证;误存敏感信息时可用 purge,但需知悉其不可逆且写库路径不产生备份副本,事前可用 dump 或自行拷贝数据库。
结尾¶
dsh-memory-layer 把记忆收成单文件 SQLite 加触发式召回,没有额外要跑的服务;换会话时由规则决定何时注入,而不是把整库塞进 prompt。
- 社区目录:skillhub.cn 插件页
- 源码与文档:github.com/K-W7/dsh-memory-layer
DSH 生态奉行「一切皆插件」;SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系。