前言¶
DeepSeek Harness(DSH)拥有内置的聊天代理,但每个新会话都从零开始。dsh-memory-amem 插件向 DSH 注入 A-MEM 风格的长期代理记忆。每条用户消息都被捕获为结构化笔记,自动通过 LLM 驱动的演化步骤链接到现有记忆,并在每一轮重新注入到系统提示中,使模型能够回忆先前的对话。
核心功能与架构¶
该插件实现了 A-MEM 的核心流程,并将 DSH 的会话事件与系统提示注入机制结合,构建了一个完整的记忆闭环。
工作流程¶
记忆引擎的运行分为六个步骤:
1. 准入门:首先通过规则过滤器(如敏感词、过大文本块)和语义去重、信任分数判断来过滤噪音。不符合条件的消息会直接终止流程。
2. 分析内容:利用 LLM 提取消息的关键词、一句话上下文和标签。如果 LLM 输出不可用,会回退到 TF 算法。
3. 检索邻居:基于存储的笔记文档集进行检索,混合使用 BM25(k₁=1.5, b=0.75)和 TF-IDF 的余弦相似度,返回 Top-K 相关笔记。
4. 决定演化:LLM 根据分析结果和检索结果,选择 NO_EVOLUTION、STRENGTHEN、UPDATE_NEIGHBOR 或 STRENGTHEN_AND_UPDATE 之一。
5. 应用演化:STRENGTHEN 增加链接和标签,UPDATE_NEIGHBOR 重写相关笔记的上下文和标签。
6. 持久化笔记:将笔记写入 ~/.dsh/memory-amem/notes/*.json,每 5 秒刷新一次,索引在下次初始化时重新加载。
混合检索与防御¶
- 混合检索:结合 BM25 和 TF-IDF,在实体提升等策略下,显著提升了多跳推理场景下的召回率。
- 提示注入防御:插件内置了针对系统提示注入的防御机制,确保记忆内容的安全注入。
面向模型的工具¶
插件向 DSH 的模型暴露了四个工具:
* memory_search:搜索记忆库。
* memory_add:手动添加记忆。
* memory_recent:获取最近的记忆。
* memory_stats:记忆库统计信息。
安装与启用¶
该插件遵循 DSH 的社区插件标准模型。安装时需要指定 --profile web 参数,以便通过 dsh plugin 命令读取包配置并注入到 DSH 主进程和 Web GUI 中。
dsh plugin --profile web add
LoCoMo 基准评估¶
作者在 LoCoMo 数据集(1 对话 × 199 QA 对)上进行了评估,使用 deepseek-chat 和 deepseek-reasoner 作为下游模型。
评估结果 (v0.2.0):
| 类别 | 描述 | deepseek-chat | deepseek-reasoner |
|---|---|---|---|
| 1 | 单跳事实 | 21.9% | 25.0% |
| 2 | 多跳推理 | 45.9% | 37.8% |
| 3 | 时间/反事实 | 0.0% | 7.7% |
| 4 | 是/否 | 44.3% | 47.1% |
| 5 | 开放式 | 4.3% | 4.3% |
| Overall | 总体 | 28.6% | 29.1% |
关键观察:
* 使用较小的 DeepSeek 模型即可超越 GPT-4 的闭卷基准表现(约 37%)。
* 多跳推理类别受益于 BM25 召回率提升和实体加权,从 0% 提升至 46%。
* 类别 3(时间/反事实)和类别 5(开放式)仍表现较弱。类别 3 的失败主要是因为 LoCoMo 标注答案具有相对性(如 “9 June 2023 前一周”),而检索器缺乏日期代数运算能力。
适用场景与注意¶
- 适用场景:需要长上下文保持、多轮对话记忆以及基于历史信息进行推理的 DeepSeek Harness 场景。
- 注意事项:该插件以当前 DSH 进程的权限运行,安装前建议检查源码与许可证(MIT)。由于存在准入门,某些特定类型的对话(如仅包含问候语)可能不会被捕获为结构化记忆。