前言¶
在 DeepSeek Harness(DSH)里开新会话,模型往往不知道你上一段对话里定过的规矩,也不会自动继承上一次踩坑后的改法。常见做法是各自维护项目里的 AGENTS.md、靠用户反复粘贴背景,或把笔记丢进外部向量库——可读性和「所有会话共用一份、能手工改、坏了还能恢复」往往难以兼顾。
下面介绍社区插件 dsh-shared-memory(维护者 1148462398-hub)。它把记忆收敛成一份人类可读的 MEMORY.md,所有 DSH 会话共用;写入时双硬盘分区镜像备份,检索用关键词共现与 BM25,并用「质疑度」驱动方法库择优。插件还附带可选的技能库(~/.dsh/skills/ 下的 SKILL.md)与表情包自动发送能力。当前版本 1.9.4(MIT),SkillHub 分类为「记忆」。
这是什么¶
dsh-shared-memory 是 DSH 的 bundle 插件:一份全局共享记忆文件 + 可对话调整的人设 + 双分区镜像 + 方法库(methodbook)+ 文档导入分区(docs),以及技能与表情包相关能力(见仓库 README 与 package.json 描述)。
它主要解决:
- 会话之间互不相识,背景与偏好要重复交代。
- 错误与教训无法沉淀到下一次会话。
- 人设散落、难以统一修改与传递。
- 单点存储,磁盘故障即全失。
生态上,DSH 主张「一切皆插件」;SkillHub 是独立社区目录,与 DeepSeek / 幻方无官方从属关系。安装与启用前请自行审阅 GitHub 源码 与许可证;插件以当前 DSH 进程权限读写本机文件。
记忆文件结构¶
单个 Markdown 文件,可用编辑器直接改。区块由 HTML 注释划分,请勿删除 <!-- dsh-shared-memory:xxx:start --> / :end 标记。
| 区块 | 内容 | 谁来写 |
|---|---|---|
persona |
当前模型人设提示词 | 模型(用户要求时) |
requirements |
长期要求与偏好(精选) | 模型 |
requests |
用户输入流水(每轮摘要一行,滚动淘汰) | 插件自动 |
corrections |
用户指正 | 模型 |
lessons |
自我教训 | 模型 |
methods |
更好的方法(场景 / 做法 / 原因) | 模型 |
sessions |
会话索引(含压缩事件) | 插件自动 |
另有 methodbook(质疑度驱动的方法库索引与 JSON 权威副本)和 docs(外部文档导入,不进提示词、仅检索)。requests 与 requirements 分离,是为避免每轮自动摘要把长期要求挤掉。
存储、双备份与对账¶
默认路径(README 以 Windows 为例):
- 主文件:
%USERPROFILE%\.dsh\dsh-shared-memory\MEMORY.md - 镜像:
D:\dsh-shared-memory\MEMORY.md(自动选第一块非系统盘)
规则概要:
- 每次写入同时写主文件与镜像(临时文件 + rename,写完回读校验)。
- 启动时对账:缺一侧则回补;两侧内容不同则保留较旧为
.conflict-<时间>.bak后以较新为准;两侧都不存在则按模板重建。 - 主文件与镜像在同一盘符时,插件会在日志中告警。
换路径可让模型调用 memory_file_maintain(action=relocate),或修改 dsh/cordis.patch.yml 中的 primaryPath / mirrorPath 后重启。彻底清空需 action=reset 且 confirm="DELETE_BOTH",否则拒绝执行。
关键词索引写在同目录的 MEMORY.index.json;超出主文件容量上限的条目进入 MEMORY.archive.md(同样双写),仍可通过检索访问。
注入、读盘与项目作用域¶
注入:人设(约占预算 1/3)+ 记忆使用协议 + 各分区索引摘要(条数受「档位」限制;放不下的会提示用 memory_file_search 检索),作为系统提示词 section(order 25)。已记录内容会标注为参考数据而非指令;正文中的 {{...}} / ${...} 会被打断,避免被当成模板求值。
读盘:组装提示词时同步 statSync 比对 mtime(1.2s 节流),变更则重读。上下文压缩后并非只靠一次性提醒,而是持续从磁盘读取;检测到压缩事件后,该会话约 30 分钟内会在提示词开头提醒「共享记忆已重新读取」。
作用域:按会话工作目录自动打上 project:<目录名>。注入的是全局条目 + 当前项目条目;工具参数 scope 可选 current(默认)、global、all。记录时默认 scope=auto。
注入档位(memory_file_maintain({action:"profile", profile:"..."}) 或配置 profile):
| 档位 | 预算 | 每分区条数 |
|---|---|---|
lean |
标准 × 0.55 | 5 |
standard(默认) |
×1 | 8 |
rich |
×1.7 | 14 |
每类默认上限 200 条(entryCap),超出部分归档;写盘前旧内容可进 .history/(默认保留 50 个 revision),支持 history / rollback。
检索、分层与关系¶
memory_file_search 默认 mode: "fuzzy":精确、中文 2-gram、ASCII 近邻、共现联想词等多路打分,排序用 BM25;严格匹配可用 mode: "strict"。联想词典随记忆入库自举(共现图,每词最多 16 个邻居)。
主文件与归档之间按命中频率流动,而非简单「最旧先删」:检索命中、被注入使用会抬高权重;新条目有保护期(默认 3 天)。质疑度越高,主文件命中不足时越倾向翻归档(归档结果标 [分节·归档])。
质疑度 0–10 与方法库:索引里已有「最佳方法」时,质疑度大于 0 会要求换多种做法再比较 token 与耗时;更优则替换,否则累计未更优次数,连续达到 decayAfter(默认 3)可降档至 0。查询入口示例:
memory_file_method({ action: "query", task: "在 Windows 上用 ninja 构建 C++ 项目" })
条目关系(只改索引、不改正文时间线):supersedes 取代旧条、related 关联检索、ttlDays 过期后不再注入但仍可搜到。
重复写入同一内容会 reinforce 而非 duplicate;正文含「必须 / 务必 / 禁止」等强调词会提高权重,影响注入排序、检索与分层保留。
记忆网页与维护工具¶
宿主 HTTP 服务下提供自包含页面(路径示例,端口随 DSH 而定):
http://127.0.0.1:49870/dsh-shared-memory
接口包括 GET /api/state、POST /api/save、POST /api/reconcile;另有导出与历史对比相关 API(见 README)。请求需同源校验与请求头 x-dsh-memory: 1,并有体积上限。
常用维护动作(由模型通过插件工具调用,具体参数以仓库文档为准):
memory_file_maintain({ action: "rebalance" })
memory_file_maintain({ action: "export" })
memory_file_maintain({ action: "history" })
memory_file_ingest({ path: "C:\\path\\to\\AGENTS.md" })
memory_file_consolidate({ action: "scan" })
memory_file_consolidate 的 scan 只读归簇,不会自动合并;合并需模型写新条目,旧条目靠低命中自然归档。
安装与启用¶
SkillHub 目录页提供「发送给 DeepSeek Harness 安装」的文案,核心是让 DSH 安装插件标识 1148462398-hub/dsh-shared-memory。页面地址:
https://www.skillhub.cn/plugins/1148462398-hub/dsh-shared-memory
在 DSH 对话中可按目录页给出的完整说明发起安装(目录页会要求先读取插件说明再安装,具体句式以页面为准)。示例开头:
请安装 DSH 插件 1148462398-hub/dsh-shared-memory。
README 还提到:修改 host 侧逻辑后需重新 apply(例如 plugin_manager set_plugin 关再开,或重启 DSH)才生效;package.json 须为无 BOM 的 UTF-8,否则安装器可能报错。
典型用法¶
- 装好后正常对话:插件会把每轮首条用户消息摘要写入
requests,并在注入区展示各分区最新摘要;细节用memory_file_search。 - 长期规矩写进记忆:通过对话让模型写入
requirements/corrections/lessons,或手工编辑MEMORY.md(若改文件,双盘镜像两侧需保持一致,否则对账会覆盖)。 - 接项目规则不进每轮 token:
memory_file_ingest把AGENTS.md等按##标题切块写入docs,仅检索时使用。 - 重复性任务:先
memory_file_method查方法库与当前质疑度,再按协议尝试更优做法并回写methodbook。 - 浏览器维护:打开
/dsh-shared-memory查看分区、revision 与双备份是否一致,必要时对账回补。
适用场景与注意¶
适合:长期用 DSH 做同一批项目、希望跨会话共享人设与教训;重视 Markdown 可读、手工编辑与双盘容灾;希望检索不依赖外部向量服务。
注意:
- 默认镜像路径面向「主盘 + 另一块盘」;Linux 或单盘环境需通过
relocate或配置改路径,并理解同盘镜像无意义时的告警。 - 写操作带进程内排队与跨进程文件锁;极端并发下可能降级为仅进程内串行并记警告。
- 技能执行(可选
run.mjs)与表情包发送会扩大插件行为面,启用前请阅读lib/与dsh/cordis.patch.yml。 - 插件版本与 DSH 主版本需自行匹配;社区目录 Star 数会变动,以 GitHub 为准。
结尾¶
dsh-shared-memory 把 DSH 的「记忆」做成一份共享、可编辑、可镜像备份的 Markdown,并用命中分层、BM25 + 共现检索、质疑度方法库把「只会记」推进到「会择优、会回流归档」。目录与源码: