持久记忆插件(memory)

August 17, 2026 · View on GitHub

为 dsh 会话提供跨会话持久记忆的预构建插件。安装只使用仓库根目录 dist/ 下的 tarball,不依赖本机 harness 源码路径。版本对齐 DeepSeek Harness 0.1.0-rc.5

角色
bundle/dsh-plugin-memory组合包:声明 dsh.bundle,patch 层插入三行插件
dsh-memory/服务定义(ctx.memory):putsearchlistremoveconsolidate 抽象接口与词汇
dsh-memory-storage/本地提供方:memory 存储域记录,确定性 token 重叠召回评分
dsh-tool-memory/模型工具:memory_writememory_search + 每个用户 pre-step 自动召回
dsh-memory-consolidate/自动整理:压缩成功或空闲静默期后合并重复条目,另有 /memory 指令

行为摘要

  • 写入与召回:模型经 memory_write 记忆事实、经 memory_search 查询;每个用户 step 会自动召回评分达标的条目并注入上下文。
  • 自动整理:每次成功的会话压缩(compaction/end)之后、以及主机连续 30 分钟无新 turn 之后,自动把内容被包含在另一条目中的条目合并进保留条目(标签取并集)。手动输入 /memory 随时整理并查看统计。
  • 数据位置$DSH_HOME/storages(存储域 JSON 后端)。

与内置记忆的关系

较新的 harness 构建在 dsh-base 组合包里已内置这三行(行 id:memory-storagetool-memorymemory-consolidate)。本组合包的 patch 层先定向禁用内置三行,再以 memory-storage-plugintool-memory-pluginmemory-consolidate-plugin 插入同包名的本层行——Loader 对跨层重复 id 报错,不能直接复用 id,也不能只靠「替换」;插入的新行由 profile 的直接 tarball 依赖解析。未内置记忆的构建里,三条禁用补丁找不到目标、以 patch: entry ... not found, skipping 的 warning 跳过,insert 照常生效。两种组合下都只激活一份,不会重复注册服务。

安装

在仓库根目录(dist/ 所在处)执行。demo 可换成任意已有或新建的 profile 名。不要传入 harness 源码目录或 file: 路径。

dsh plugin --profile demo add \
  ./dist/dsh-plugin-memory-0.1.0.tgz \
  ./dist/deepseek-ai-dsh-memory-0.1.0-rc.5.tgz \
  ./dist/deepseek-ai-dsh-memory-storage-0.1.0-rc.5.tgz \
  ./dist/deepseek-ai-dsh-tool-memory-0.1.0-rc.5.tgz \
  ./dist/deepseek-ai-dsh-memory-consolidate-0.1.0-rc.5.tgz

验证层级:

dsh --profile demo --dump-config
# 输出中应包含 "# == dsh-plugin-memory" 层:
# - 三条 "disabled: true" 的定向补丁(id 为 memory-storage / tool-memory / memory-consolidate)
# - 三条插入行(id 为 memory-storage-plugin / tool-memory-plugin / memory-consolidate-plugin)

验证功能(dsh --profile demo --port 3081 启动后,在对话中):

  1. 对模型说「请记住:我的验证饮品是正山小种」——模型调用 memory_write
  2. 新会话问「我的验证饮品是什么?查一下记忆」——模型调用 memory_search 或召回注入直接给出答案。
  3. 输入 /memory——返回「Consolidated memory: merged 0 and updated 0 of N entries. N entries remain.」格式的统计。

卸载:

dsh plugin --profile demo remove \
  dsh-plugin-memory \
  @deepseek-ai/dsh-memory @deepseek-ai/dsh-memory-storage \
  @deepseek-ai/dsh-tool-memory @deepseek-ai/dsh-memory-consolidate