DSH 记忆系统(dsh-memory):本机长期记忆与自动召回

前言

在 DSH 里做 Agent,常见问题不是「这一轮答不上来」,而是「下一轮又忘了」:结论散在聊天记录里,换会话就要重查;同类故障反复踩坑;写出来的规则很难在新窗口里持续生效。把整段历史塞进上下文既费 token,也难以按作用域和类型管理。

下面介绍社区插件 DSH 记忆系统(npm 包 @restregular/dsh-memory)。它把记忆落成本机 JSONL,用词法加可选本机向量检索召回,通过六个模型工具、自动注入与可视化管理面板,让模型在该记的时候记住、该用的时候用上。社区目录中的仓库 hanpu5838/dsh-memory 是上游 RestRegular/dsh-memory 的镜像,便于国内查阅;功能与上游 main 对齐,Issue 与反馈请仍走上游。

这是什么

一句话定位:DeepSeek Harness 的「记忆」类插件——本地优先的长期记忆,默认不依赖云端向量服务。

项目 说明
npm 包名 / 版本 @restregular/dsh-memory,当前资料记载 0.31.0
社区目录 skillhub.cn/plugins/HANPU5838/dsh-memory(维护者 HANPU5838)
镜像 GitHub github.com/HANPU5838/dsh-memory
上游与原作者 RestRegular/dsh-memory,作者 RestRegular
许可证 MIT(版权归原作者所有)
运行环境 Node.js ≥ 22.13.0

DSH 生态是「一切皆插件」;skillhub.cn、dsh-plugin.org 等社区目录独立于 DeepSeek / 幻方,不是官方应用商店。安装前建议自行阅读仓库源码与许可证——插件以当前 DSH 进程权限读写本机存储。

核心能力(与 README 一致)

存储与检索

  • JSONL 落盘:记忆以自洽的句子条目管理,支持作用域、类型、重要度;修正关系用 supersedes 标注,旧版默认不再参与检索与自动召回,历史仍可通过 memory_get 与面板查看。
  • 双通道检索:词法(IDF + 中文 bigram)与本机 llama-server 的 OpenAI 兼容 /v1/embeddings;向量后端缺席时自动降级为词法,不阻塞、默认不产生外网请求。
  • 嵌入后端:配置项 retrieval.vector.provider 支持 local(默认)/ openai / ollama / off(纯词法)。

六个模型工具

memory_save、memory_search、memory_list、memory_get、memory_forget、memory_scopes。检索工具默认只返回「印象」(短 id、作用域、类型、标签、摘要);正文与元数据通过 memory_get 的 fields 按需拉取,以控制 token。

作用域与权限

四种作用域:会话、项目、global、自定义名。读默认合并会话 + 项目 + global;输入框旁的「记忆权限」可设置本会话可读作用域与限制等级(绝对 / 普通 / 无限制)。普通限制下,命中范围外记忆时可走审批;绝对限制下范围外正文不可读、不可写、不可申请。

自动召回与规则

  • 新会话可注入项目 / global 摘要;每轮按用户问题召回;发布、部署、工具失败等行为可按标签定向召回。
  • kind: rule 进入系统提示常驻段;kind: state 默认 7 天 TTL;kind: procedure 可进流程索引。
  • 对外发布 memory/record-saved 等事件,供其他插件订阅(元数据不含正文)。

管理面板

设置页或侧栏「记忆系统」:服务、记录、记忆树、设置、审计。记录页支持语义检索(需向量后端)、作用域目录编辑、导入导出;面板内可一键下载 llama.cpp 运行时与内置模型(如 BGE-M3)作为向量后端。

安装与启用

Web profile 一条命令安装(来自官方 README):

dsh plugin --profile web add @restregular/dsh-memory

也可把依赖加入 profile(桌面端 ~/.dsh/profiles/desktop,Web 端 ~/.dsh/profiles/web):

pnpm add @restregular/dsh-memory
# 或
npm i @restregular/dsh-memory

包自带 cordis.patch.yml,注册唯一 entry dsh-memory → @restregular/dsh-memory。不写配置即可使用:检索先走词法。需要语义能力时,在面板「服务 → 向量服务」配置或安装本机后端。

可选配置示例(完整字段见仓库文档);面板修改会写入 <storeDir>/settings.json 并覆盖文件默认值:

storeDir: '~/.dsh/memory-store'   # 建议绝对路径;默认相对启动目录的 .dsh-memory

向量相关目录默认 installRoot 为 ~/.dsh/memory-vector;若显式设置 storeDir,安装根目录取其父目录。

典型用法

1. 打开面板

设置页 →「记忆系统」;或「设置 → 侧栏入口」打开左侧栏入口。记录页「记忆 / 作用域」子标签分别管条目浏览与作用域用途、别名。

2. 写入一条记忆

可对 Agent 说「记住:……」,或由模型调用 memory_save。README 中的入参示例:

memory_save({
  "content": "本仓库用 pnpm 11 安装依赖;PATH 上的 pnpm 10 会报 ERR_PNPM_UNEXPECTED_STORE。",
  "kind": "procedure",
  "tags": ["pnpm", "toolchain"],
  "triggers": ["pnpm", "install"],
  "importance": 0.8,
  "path": "D:/repositories/dsh-memory"
})

修正旧记录时,supersedes 须传完整 UUID(不能用摘要里显示的 8 位短 id)。

3. 检索与取全文

memory_search({ "query": "pnpm 装依赖", "topK": 5, "description": "查装依赖的约定" })
memory_get({ "ids": ["3f2a9c1d"], "description": "取装依赖那条的全文" })
memory_list({ "limit": 20 })
memory_forget({ "id": "3f2a9c1d", "description": "删除过期的临时结论" })

同一会话内重复命中同一条时,工具会先去重,只回 id,并提示用 memory_get 取全文。

适用场景与注意

适合谁:需要在 DSH 里做跨会话、跨项目知识沉淀的开发者;希望记忆留在本机、敏感内容不过第三方向量云;需要规则常驻、状态 TTL、流程索引与面板审计的团队或个人。

使用注意:

  1. 记忆默认本机存储,写入前会做凭据扫描,但仍不应把密钥明文当「事实」长期写入。
  2. 镜像仓库 HANPU5838/dsh-memory 不接收 Issue;更新与 PR 请到 RestRegular/dsh-memory。
  3. 多 DSH 实例或 MCP 共用一个 store 时,插件按作用域写锁合并,但仍应统一 storeDir 路径,避免相对路径因启动目录不同而分裂。
  4. 卸载需从 profile 移除依赖并清理 patch entry(README 示例:pnpm remove @restregular/dsh-memory 后删除 profile 中对应条目)。

结尾

DSH 记忆系统把「长期记忆」拆成可管理的条目:本机 JSONL、可选向量、六个工具与自动召回,而不是把聊天记录整段堆进上下文。若你从社区目录点进镜像仓,实现细节与架构说明仍以仓库内 docs/architecture.md、CHANGELOG.md 为准。

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

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

小夜