前言¶
DeepSeek Harness(DSH)智能体在跨会话使用时,往往缺乏对历史经验的复用,导致重复解决相同的问题。dsh-self-memory 插件通过自动记录会话轨迹与解决方案,提供离线检索与闭环回写能力,帮助智能体在后续对话中直接利用历史经验。
前提¶
使用该插件前,需满足以下环境要求:
- Node.js 版本 >=22
- DSH 版本 @deepseek-ai/dsh 0.1.x
安装与启用¶
通过本地目录安装插件,支持热挂载。
dsh plugin --profile web add <本目录>
安装后,通过以下命令验证插件状态:
selfmem_status
返回内容应包含 plugin=v0.3.0 等信息。代码更新后,可使用 dev_reload_package dsh-self-memory 或重启 DSH 完成装配。
核心能力¶
该插件主要解决以下五个问题:
- 多关键词关联度:通过权重化的关键词匹配,提升检索相关性。
- 隐去细节增强泛化:记录时自动生成
abstractProblem,检索时同时匹配原始文本与泛化文本。 - 大量案例快速检索:使用倒排索引进行候选集筛选,支持大规模记录。
- 前提不同结果矛盾:记录级
preconditions与方案级appliesTo、conflictsWith,支持按前提过滤与冲突标注。 - 关键词规范统一:内置同义词表,检索与存储使用统一的规范化路径。
使用方法¶
插件通过一系列工具命令完成记忆的闭环管理。
自动注入与日常闭环¶
插件默认开启自动采集与自动注入。每次用户消息发送后,系统会自动检索历史方案,并通过 <selfmem_memory> 围栏注入上下文。智能体在解决新问题时,应遵循“先查记录 → 有就试 → 成功/失败记根因 → 无则自研 → 最后回写”的流程。
命令工具¶
selfmem_status:查看插件状态与规模统计。selfmem_search:检索既有方案,支持context前提过滤。selfmem_record:记录/追加方案,支持多方案、前提、关键词权重。selfmem_hit/selfmem_fail:标记方案成功或失败,并记录根因。selfmem_import:外部导入解决方法。selfmem_trace:查看自动采集的会话轨迹。
使用示例¶
记录一个带前提的方案:
selfmem_record {"problem":"断网时如何安装插件","solution":"解压本地包 → dsh plugin add <目录> → pnpm install → dev_install_package 热挂载","keywords":{"plugin":1,"network":0.6},"appliesTo":{"network":"no"}}
前提感知检索示例:
selfmem_search {"query":"如何识图","context":{"model_vision":"no"}}
配置¶
可通过覆盖 profile 的 cordis.patch.yml 调整插件行为。
| 配置项 | 默认值 | 说明 |
|---|---|---|
autoRecall |
true |
每次用户消息是否自动检索并注入历史方案 |
recallBudget |
600 |
召回注入的 token 预算(CJK 感知) |
captureEnabled |
true |
是否自动采集会话轨迹 |
dataDir |
~/.dsh/self-memory |
记录/轨迹/待写队列的存储目录 |
配置示例:
- insert:
- id: self-memory
name: dsh-self-memory
config:
autoRecall: true
recallBudget: 800
captureEnabled: true
注意事项¶
- 零运行时依赖:插件纯本地运行,不依赖外部服务,支持离线使用。
- 检索机制:当前检索基于关键词、泛化文本与倒排索引,暂不支持向量语义检索。
- 记录提炼:会话轨迹自动采集,但不会自动提炼为记录,需手动调用工具回写。
- 前提定义:同一问题多方案仍需在记录时手动指定
appliesTo以区分。 - 存储限制:当前为单文件 JSON 存储,记录量达万级后需考虑迁移至 SQLite。
结尾¶
dsh-self-memory 通过结构化记录与闭环回写,为 DSH 智能体提供了基础的跨会话记忆能力。更多细节可参考项目文档: