前言¶
DeepSeek Harness (DSH) 本身没有记忆插件。当新会话开始时,模型对上一个会话里定下来的约定、踩过的坑、你的偏好一无所知。这个插件补上这一层,让 DSH 能够在会话之间共享背景事实。
设计上有一条硬约束:不为了“记住”再多花一次钱。它不调用任何 LLM 进行摘要、打分或裁决,所有读写操作基于本地文件系统和纯字符串匹配。
这是什么¶
这是一个由 linshenyuan 开发的 DSH 插件,分类属于“记忆”。
它将记忆存储为 Markdown 文件,不额外调用任何 LLM。插件负责去重、冲突检测、审计日志和设置面板,模型只需通过工具调用决定“写什么”和“什么时候写”。
核心功能¶
-
跨会话长期记忆
记忆持久化存储在本地文件系统中,新会话可以读取旧会话的内容。 -
纯本地字符串匹配
读取和写入均不涉及 LLM 调用。去重基于sha256哈希,关键词检索基于本地字符串匹配(NFKC 归一化)。 -
多维度检索
支持按scope(project/user/both)、topic(精确)和keywords(全文关键词)读取记忆。 -
冲突检测与裁决
同一topic下出现结论不同的新条目时,新条目会被标记[待裁决]并冻结,直到人工或通过设置面板裁决。 -
审计日志
记录所有保存、去重、冲突、更新和拒绝操作,记录在runs.jsonl中,并支持启动时的流水自检。 -
设置面板管理
提供浏览、用量、冲突和审计四个视图,支持在线修改记忆上限和裁决冲突。
工作方式¶
插件通过三层结构将记忆注入上下文:
-
L1 · 规矩段(常驻系统提示)
一段固定的系统提示,告诉模型记忆库的位置、何时该写、topic如何命名。它被插入到系统提示词的索引 150 处(DEPLOYMENT_PERSONA_PREFIX和PLAN_POLICY之间),作为背景事实而非策略。 -
L2 · 按需读取
记忆不再在会话开始时批量注入。模型在需要背景时调用memory_read工具。支持三种取法叠加:
-scope:限定作用域。
-topic:精确匹配某个主题。
-keywords:全文关键词检索(支持空格、逗号、顿号、分号分隔),按总分降序返回。 -
L3 · 条件提醒
只有在累计修改了多个非记忆文件却未写入任何记忆时,才会注入一条提醒,提示模型“该记了但没记”。
安装与启用¶
插件通过 DSH 的插件机制进行安装和启用。
注:资料中未明确提供具体的 dsh plugin add 命令,通常需通过插件目录或配置文件管理。
启用后,插件会自动在 DSH 的工作区生成记忆文件(如 MEMORY.md)。
典型用法¶
- 写入记忆
模型调用memory_save工具写入内容。
// 示例:写入一条关于缩进风格的项目记忆
{
"topic": "indent-style",
"content": "项目统一使用 2 空格缩进",
"mode": "update"
}
mode 支持 update(替换旧条目)和 append(补充信息)。
- 读取记忆
模型调用memory_read工具按需获取。
// 示例:读取项目作用域下 topic 为 "indent-style" 的记忆
{
"scope": "project",
"topic": "indent-style"
}
- 管理面板
在 DSH 的设置面板中找到“记忆”导航项,可以查看记忆用量、分类分布、冲突列表和审计日志。
适用场景与注意¶
此插件适合需要长期维护项目上下文、偏好设置或技术约定的工作流。
注意事项:
- 插件运行在当前 DSH 进程内,使用进程内锁机制串行化读写操作,防止文件覆盖。
- 默认冲突冻结,需要人工介入裁决,避免模型被相互矛盾的信息干扰。
- 插件为 MIT 许可证,可自由使用和修改。
结尾¶
dsh-memory 解决了 DSH 缺乏持久化记忆的问题,通过本地文件系统实现了零成本的跨会话记忆能力。更多细节可参考:
- GitHub 仓库
- 技能目录页