前言¶
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