dsh-memory (Cairn):DeepSeek Harness 的持久化记忆

前言

DeepSeek Harness (DSH) 默认情况下,智能体在会话结束后会丢失所有上下文。dsh-memory(项目名 Cairn)作为插件,为 DSH 提供了跨会话的持久化存储和上下文注入能力。它通过持久化 KV 后端存储事实、偏好和约定,确保信息在重启后依然存在。

核心功能

持久化与作用域

插件将记忆存储在持久化 KV 后端中,支持审计日志。记忆分为三层作用域:
* global:跨项目记忆。
* project:按仓库自动检测的特定项目记忆。
* user:跨项目的用户配置文件记忆。

检索与注入

  • BM25 相关性搜索:使用依赖-free 的 Okapi BM25 算法,支持 CJK 分词(拉丁词元 + CJK 单字/二字词组)。检索质量经过 CI 验证(成功@5 = 100%,MRR = 0.902)。
  • 摘要优先注入:系统提示仅保留静态指令,数据通过 <memory-digest> 和 <recalled-memory> 标签注入。默认仅注入摘要,保持提示词字节稳定。
  • 步骤级自动召回:每步对话后,系统会根据用户文本进行 BM25 搜索,匹配时追加 <recalled-memory> 标签,不触碰系统提示前缀,保持 KV 缓存稳定。

身份层

支持身份层(可选),智能体通过 identity_update 工具在对话中自动生成和更新两个自文档:
* SOUL.md:智能体的角色文档。
* USER.md:智能体对用户的理解。
这两个文档版本化存储,默认不衰减,且优先级低于部署角色。

自动化与治理

  • 自动学习:通过投影累加器监听对话,捕捉“记住意图”、修正和验证失败后的成功,积攒足够的候选后触发 LLM 提取。
  • 安全扫描:在写入和加载时扫描 API Key、Token、提示注入模式,拦截保存并标记为 [BLOCKED: ...]。
  • 去重管道:两阶段去重(停用词过滤的 Jaccard 预过滤 + 可选 LLM 判定),防止重复积累。
  • 双层生命周期:重要记忆可被固定(pin)。过期项目级记忆会被移除,过期全局/用户级记忆会被软衰减(隐藏但不删除,仍可搜索)。

管理与配置

  • 前端 UI:提供“Memory”设置面板,包含健康仪表盘、待审核队列、管理界面(支持搜索、筛选、归档、删除)。
  • 人工审核:开启 confirmBeforeWrite 后,提取和工具写入会变为待审核队列,需手动接受或拒绝。
  • 时间窗口浏览:memory_list 支持按时间范围(epoch-ms)筛选记忆。

安装与启用

插件作为 peer dependency 依赖 dsh 核心服务,以单包结构提供功能。

npm install -g @deepseek-ai/dsh

安装完成后,插件通过其自带的 cordis.patch.yml 配置激活为 DSH 的一个配置层。

典型用法

插件提供了以下工具和功能:

  • 记忆工具:memory_search, memory_add, memory_replace, memory_remove, memory_list, memory_get, memory_pin, memory_unpin, memory_forget。
  • 身份工具:identity_update(用于更新智能体的 SOUL 和 USER 文档)。

在实际使用中,智能体会在对话中自动尝试提取关键信息,并通过 BM25 算法在后续步骤中召回相关记忆。

适用场景与注意

该插件适合需要长期维护上下文、跨会话保持一致性的复杂任务开发。由于插件以当前 DSH 进程的权限运行,使用前需检查源码与许可证(当前资料未明确列出 License)。

结尾

dsh-memory 通过持久化存储、BM25 检索和自动化提取,解决了智能体“健忘”的问题,是构建长期运行智能体的基础组件。

  • 项目主页: https://github.com/chenhw7/dsh-memory
  • 生态目录: https://www.skillhub.cn/plugins/chenhw7/dsh-memory
羽毛球分组比赛记分
小程序二维码

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

小夜