前言¶
DeepSeek Harness(DSH)的会话有天然边界:换会话、或上下文被 compact 之后,上一轮已经对齐的结论往往带不过来,开发者不得不反复说明架构约定、踩坑记录和项目背景。社区里也有把规则写进全局 AGENTS.md、靠长上下文硬扛的做法,但那是「当轮可见」,不等于可检索、可跨工作区复用的长期记忆。
下面介绍维护者 eighteentang 在 DSH 插件目录「记忆」分类下的 dsh-plugin-memory-lite:数据落在本地 SQLite,不联网、不上传、不依赖外部记忆服务;后台做日志沉淀、按需注入,以及可选的「整理成条目」(会消耗模型额度)。
这是什么¶
dsh-plugin-memory-lite 的定位是:给 DSH 的本地优先跨会话记忆——每轮自动沉淀、空闲时可自动整理、需要时按需注入。许可证为 MIT;仓库见 GitHub,目录页见 SkillHub 插件页。
它针对的是「会话断档后信息丢失」:插件在后台分三层工作(见下表),且刻意让日志层永不进入提示词,只有蒸馏后的长期条目才会被注入,避免拖垮上下文预算与前缀缓存。
| 层 | 做什么 | 什么时候 | 成本 |
|---|---|---|---|
| 日志层 | 每轮结束把对话追加到本地 | 自动,每轮 | 零模型调用 |
| 长期条目层 | 把日志里的结论蒸馏成记忆条目 | 点「立即整理」或开启空闲自动整理 | 每次一次模型调用 |
| 注入层 | 把与当前用户句相关的记忆作为独立消息追加到对话尾部 | 自动,每轮 | 零成本 |
日志落盘前会剔除宿主注入的系统样板(如 <system-reminder> 里的用户全局 AGENTS.md),并去掉与前文重复的部分;没有内容的轮次不记。
核心功能¶
自动沉淀与按需注入¶
默认开启的 autoCapture 会在每轮结束写日志(不花模型额度);autoRecall 会在用户消息到达时按关键词找相关记忆并注入。注入是「只追加」:作为独立消息追加在本轮已领取消息之后,不改写已有历史。同一会话里已注入过的条目不会重复注入;上下文压缩后会重置该记录并补回常驻记忆。
整理成条目(可选、有额度)¶
长期条目默认需要你在设置页点「立即整理」,避免未告知就消耗额度。若把 autoDistill 设为 true,空闲 30 分钟后可自动整理(每天最多 4 次,受配置约束)。整理时模型输入会先剔系统样板,再按头 40% + 尾 60% 取样。
人设与工作规范(每轮常驻)¶
设置页「记忆控制」上方两个文本框可写人设设定、工作规范与行为准则,无格式要求,存于:
$DSH_HOME/memory-lite/persona/persona.md
$DSH_HOME/memory-lite/persona/rules.md
它们作为 system prompt 的一段、每轮生效;保存后下一轮即生效。插件停用或卸载后不再生效。
用户级记忆(跨工作区)¶
与具体项目无关的事实可写入用户级库:
$DSH_HOME/memory-lite/global/memory.db ← 用户级(跨工作区)
<工作区>/.dsh-memory/memory.db ← 该工作区(默认)
对话中说「记住(跨工作区):……」会通过 memory_note 且 scope="user" 写入。召回时当前工作区与用户级合并排序,同分时工作区优先;仍受 injectMaxItems 等注入上限约束。
模型可见工具¶
在对话中可直接让助手调用(名称以插件为准):
- 「记住:……」→
memory_note - 「搜一下我之前说过关于……」→
memory_search - 「把那条标记成已完成」→
memory_update - 「忘了那条吧」→
memory_forget(删除需审批)
记忆条目有三种状态:在用(可召回)、已完成(仍可搜到与召回)、已停用(不再注入,可恢复)。
检索与限制¶
检索是关键词级,不是语义向量;中文按连续串与子串匹配,换说法可能搜不到。每个工作区默认一个库;日志层约有每会话 200 条上限,超出会先归档 jsonl 再删库内行。
安装与启用¶
命令行安装(资料原文,<你的profile名> 换成实际 profile):
dsh plugin --profile <你的profile名> add github:eighteentang/dsh-plugin-memory-lite#v1.3.0
也可在客户端侧边栏 「插件」→「添加插件」 粘贴地址。推荐带版本钉子,例如:
https://github.com/eighteentang/dsh-plugin-memory-lite#v1.3.0
不要粘贴 Releases 页或 …/tree/main 这类非仓库根地址;版本用 #v1.3.0 拼在仓库根 URL 后。全部版本见仓库 CHANGELOG;DSH 插件目前需先卸载再装新版升级。
装完后重启客户端,设置页会出现 「记忆控制」。
在 profile 的 cordis.patch.yml 中可配置插件(节选):
- id: memory-lite
name: dsh-plugin-memory-lite
config:
autoCapture: true
autoRecall: true
autoDistill: false
distillIdleMinutes: 30
distillMinIntervalMinutes: 30
distillMaxPerDay: 4
injectMaxItems: 3
injectMaxChars: 2000
crossWorkspaceSearch: true
distillProvider: ''
distillModel: ''
默认 autoDistill: false 时,只有你点「立即整理」才会调用模型整理。
典型用法¶
- 安装并重启后,平时无需操作:每轮自动记日志、每句用户消息自动尝试注入相关记忆。
- 需要长期可召回的结论时,在对话里说「记住:……」,或在设置页列表里搜索、改状态,需要时点「立即整理」。
- 跨项目通用约定用「记住(跨工作区):……」写入用户级库;必须每轮遵守的规则写进人设/工作规范两个文本框。
- 删记忆:优先把条目改为「已停用」;彻底删除单条用
memory_forget(需确认);直接删<工作区>/.dsh-memory/会丢失该工作区全部记忆且不可恢复。
数据路径汇总:
<工作区>/.dsh-memory/memory.db
<工作区>/.dsh-memory/archive/
$DSH_HOME/memory-lite/global/
$DSH_HOME/memory-lite/persona/
$DSH_HOME/memory-lite/workspaces.json
适用场景与注意¶
适合希望在 DSH 里本地自持对话沉淀、又不想把整段聊天日志塞进提示词的开发者:日常零额度记日志与注入,把「花额度」集中在可选的蒸馏步骤。
安装前建议自行查看仓库源码与 MIT 许可证。插件在当前 DSH 进程权限下读写 SQLite 与 $DSH_HOME 下文件;敏感内容在写入时标记 sensitive,注入路径 fail-closed。SkillHub 等社区目录与 DeepSeek / 幻方无官方从属关系,DSH 生态本身是「一切皆插件」的扩展方式。
空闲自动整理依赖宿主进程保持运行;客户端关闭时不会整理。
结尾¶
dsh-plugin-memory-lite 用本地 SQLite 把「记日志、蒸馏条目、按需注入」拆开,默认不悄悄消耗整理额度,并强调注入纪律与删除审批。若要进一步了解或安装,可看目录页 eighteentang/dsh-plugin-memory-lite 与 GitHub 仓库。