dsh-shared-memory:DSH 全局共享 Markdown 记忆与双盘镜像

前言

在 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(自动选第一块非系统盘)

规则概要:

  1. 每次写入同时写主文件与镜像(临时文件 + rename,写完回读校验)。
  2. 启动时对账:缺一侧则回补;两侧内容不同则保留较旧为 .conflict-<时间>.bak 后以较新为准;两侧都不存在则按模板重建。
  3. 主文件与镜像在同一盘符时,插件会在日志中告警。

换路径可让模型调用 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,否则安装器可能报错。

典型用法

  1. 装好后正常对话:插件会把每轮首条用户消息摘要写入 requests,并在注入区展示各分区最新摘要;细节用 memory_file_search。
  2. 长期规矩写进记忆:通过对话让模型写入 requirements / corrections / lessons,或手工编辑 MEMORY.md(若改文件,双盘镜像两侧需保持一致,否则对账会覆盖)。
  3. 接项目规则不进每轮 token:memory_file_ingest 把 AGENTS.md 等按 ## 标题切块写入 docs,仅检索时使用。
  4. 重复性任务:先 memory_file_method 查方法库与当前质疑度,再按协议尝试更优做法并回写 methodbook。
  5. 浏览器维护:打开 /dsh-shared-memory 查看分区、revision 与双备份是否一致,必要时对账回补。

适用场景与注意

适合:长期用 DSH 做同一批项目、希望跨会话共享人设与教训;重视 Markdown 可读、手工编辑与双盘容灾;希望检索不依赖外部向量服务。

注意:

  • 默认镜像路径面向「主盘 + 另一块盘」;Linux 或单盘环境需通过 relocate 或配置改路径,并理解同盘镜像无意义时的告警。
  • 写操作带进程内排队与跨进程文件锁;极端并发下可能降级为仅进程内串行并记警告。
  • 技能执行(可选 run.mjs)与表情包发送会扩大插件行为面,启用前请阅读 lib/ 与 dsh/cordis.patch.yml。
  • 插件版本与 DSH 主版本需自行匹配;社区目录 Star 数会变动,以 GitHub 为准。

结尾

dsh-shared-memory 把 DSH 的「记忆」做成一份共享、可编辑、可镜像备份的 Markdown,并用命中分层、BM25 + 共现检索、质疑度方法库把「只会记」推进到「会择优、会回流归档」。目录与源码:

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜