dsh-persist:DeepSeek Harness 长期记忆插件

前言

DeepSeek Harness (DSH) 的 agent 默认仅依赖当前对话的上下文,一旦关闭对话窗口或切换会话,之前的交互记录就会丢失。dsh-persist 通过文件系统将记忆分层存储,支持按需注入,解决了 agent “换对话就失忆” 的问题。

核心功能

该插件提供以下核心能力:
* 对话独有记忆:每个对话拥有独立的记忆文件,其他对话无法访问,互不干扰。
* 选择性注入:默认新对话零注入,在记忆 tab 勾选需要的内容后,才会将对应记忆加入上下文。
* 项目记忆互通:同一工作目录下的对话可共享项目记忆,不同命名项目之间隔离。
* Vault 语义检索:基于 bge-m3 模型的向量搜索,支持按语义召回记忆;未配置 key 时自动降级为关键词搜索。
* 自动召回(三态模式):记忆 tab 中的自动检索功能提供三种模式:关闭(默认)、智能(本地规则过滤)、LLM 判断(调用模型判断是否需要检索,失败自动降级为智能)。
* 记忆 tab:对话顶部的可视化 tab,支持编辑记忆、勾选注入配置以及实时预览。
* 全部纯文本:所有记忆以 Markdown 格式存储在 ~/.dsh-memory/ 目录下,人类可读、可手动编辑、易于备份。
* 组合包:标准 DSH bundle,通过 dsh plugin 命令安装。

安装与启用

安装过程包含两步:安装插件并重启 DSH。

  1. 在终端执行安装命令:
    dsh plugin --profile web add dsh-persist
  1. 重启 DSH 以加载插件:
    dsh --profile web

插件安装后即可使用。如需开启语义检索功能,需申请 SiliconFlow 的免费 API Key 并设置环境变量 SILICONFLOW_API_KEY。

使用方法

基本操作

安装并重启后,打开任意对话,顶部会出现“记忆”tab。默认情况下不注入任何内容,需手动勾选要注入的块。

Agent 也可以通过 memory 工具主动读写记忆。工具的 scope 参数决定读写范围:
* scope="conversation":写入/读取当前对话记忆(默认)。
* scope="project":写入/读取当前工作目录的项目记忆。
* scope="global":写入/读取全局 keyed 记忆。

语义 Vault 操作

Vault 用于存储需要语义检索的内容,支持 add、delete、import、export 等操作:

memory(vaultOp="add", content="...")
memory(vaultOp="delete", query="...")
memory(vaultOp="import")

代码示例

让 Agent 记住内容或查询记忆:

// 写入对话记忆
memory(action="add", scope="conversation", content="用户偏好使用空格缩进")

// 写入项目记忆(同目录其他对话可共享)
memory(action="add", scope="project", content="构建脚本位于 build.ps1")

// 写入全局键值对
memory(action="add", scope="global", key="user-name", content="小明")

// 查询对话记忆
memory(action="list")

适用场景与注意

  • 适用场景:需要长期保持上下文、跨会话复用经验的 agent 开发,以及需要整理个人知识库的用户。
  • 环境要求:宿主环境 Node.js 版本需 >= 22.6(推荐 24+)。
  • 隐私与安全:
    • 启用语义搜索(SILICONFLOW_API_KEY)后,消息内容会发送给 SiliconFlow 进行向量化。
    • 启用 LLM 判断模式会将消息发送给指定的模型提供商。
    • API 路由 /dsh-memory/api/* 默认仅允许 loopback 访问,如需远程访问请设置 DSH_MEMORY_ALLOW_REMOTE=1。
  • 数据迁移:插件曾用名为 dsh-memory,存储路径和路由未变,旧数据无需迁移。

结尾

dsh-persist 通过分层存储和纯文本格式,为 DSH agent 提供了可控的长期记忆能力。插件位于 GitHub 与 SkillHub。

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

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

小夜