dsh-plugin-memory-lite:DSH 本地优先跨会话记忆

前言

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 时,只有你点「立即整理」才会调用模型整理。

典型用法

  1. 安装并重启后,平时无需操作:每轮自动记日志、每句用户消息自动尝试注入相关记忆。
  2. 需要长期可召回的结论时,在对话里说「记住:……」,或在设置页列表里搜索、改状态,需要时点「立即整理」。
  3. 跨项目通用约定用「记住(跨工作区):……」写入用户级库;必须每轮遵守的规则写进人设/工作规范两个文本框。
  4. 删记忆:优先把条目改为「已停用」;彻底删除单条用 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 仓库。

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

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

小夜