dsh-memory-plugin:工作区级记忆与规则,索引注入 + 按需检索

前言

在 DSH 里做长会话或跨天协作时,模型往往只能依赖当前上下文。把用户偏好、项目约束写进系统提示可以缓解,但条目一多就会挤占 token,旧内容还容易被静默截断。把记忆绑死在某个仓库里,换工作区又要重来。

下面介绍社区插件 dsh-memory-plugin(维护者 AieXile,分类:记忆)。它以 profile bundle 形式随 DSH 启动加载,重启后仍在;记忆与规则落在各工作区的 .dsh-memory/memory-store.json,与具体项目代码解耦,任何工作区都能用同一套能力。

这是什么

dsh-memory-plugin 是一个独立的 DSH 记忆 / 规则持久插件。它由 AnimeTrack 项目里的动态 Cordis 插件演化而来,v1.4.0 起独立命名;存储路径同批迁移,旧数据自动兼容。

插件做三件事:每轮向系统提示注入记忆索引和启用中的规则;向模型注册 memory_* / rule_* 工具;在会话标题栏和设置页提供可读可写的管理界面。

核心功能

索引式注入(v1.5.0 起)

v1.4 及更早会把最近 25 条记忆全文注入系统提示,条目多时占上下文,超出部分会被 slice(-25) 静默切掉。v1.5.0 起改为两层结构(README 中对标 Claude Code auto memory):

  • 索引常驻:每轮只注入一行一条的索引,例如 - [feedback] 回答用中文,不要用敬语 #风格 #语言 (m7);
  • 正文按需:模型用 memory_get(["m7"]) 读全文,用 memory_search("关键词") 按关键词、标签或类型找回索引里未列出的条目;
  • 预算固定:索引 2400 字符 / 最多 40 条,规则 1200 字符 / 最多 25 条。装不下时提示里写明「还有 N 条未展示,用 memory_search」,不静默丢弃;
  • 去重:memory_add 对忽略大小写与空白后完全相同的正文直接拒绝,返回已有条目 id。

检索为本地打分(拉丁词 + 中文 bigram + 标签/类型命中),不引入 embedding 或向量库。

记忆类型与标签

类型包括 user(关于用户)、feedback(纠正与偏好)、project(决策、约束、坑)、reference(去哪找东西)。每条可带 tags 与 createdAt / updatedAt。旧数据载入时缺字段会自动补成 project 与空标签。

模型工具

README 列出的工具:memory_view、memory_search、memory_get、memory_add、memory_remove、memory_rollback、rule_add、rule_remove、memory_debug。

轮末提炼、草稿与版本链(v1.6.0)

自动提炼默认关闭,在面板「记忆」页勾选后生效:

  1. 监听 session/event 的轮次相关事件,在轮末异步蒸馏,不阻塞轮次收尾;
  2. 只处理达到 minChars(默认 800)的轮次;同一工作区默认 5 分钟冷却;
  3. 用当前会话的 provider / model 发辅助请求,要求返回 JSON 数组;本地过滤重复与无效 supersedes;
  4. 结果先进入草稿队列(面板「待审 N」),批准后才写入 active 记忆;草稿不注入、不参与检索;
  5. 新事实推翻旧事实时可带 supersedes: "m3":新条 active,旧条 archived,面板与 memory_rollback 支持回滚一步。

默认参数:minChars: 800、cooldownMs: 300000、maxDraftsPerTurn: 3;面板目前主要暴露自动提炼开关,其余可改 memory-store.json 的 settings。

界面入口

  • 标题栏图标:conversation.session.header.utilities 同排 28×28 圆形图标,点开浮层锚在图标下方;
  • 设置页:settings.section 中的「记忆与规则」。

工作区与数据文件

记忆库按会话工作区分文件:<workspace>/.dsh-memory/memory-store.json。目标根在载入时按顺序解析并锁定:显式会话、当前 initiator 会话、pinnedRoot、配置根 sandboxPolicy.workspaceRoot。各根各自一份状态,写入只落在本次状态所属根。

v1.3.x 及更早写在 .animetrack/memory-store.json,格式一致;新路径不存在而旧路径存在时会回退读取,下一次落盘写新路径,旧文件不会被改写或删除。

安装与启用

这是标准 npm 包 + DSH bundle,通过 plugin_manager install_bundle 安装(不要手工改 profile 的 package.json / cordis.patch.yml,也不要手工跑 pnpm)。操作要求会话为 danger-full-access,或审批策略为 ask 并由你批准。

从 GitHub 安装(发布形态,当前版本 tag 为 v1.6.0):

plugin_manager install_bundle
  target: github:AieXile/dsh-memory-plugin#v1.6.0
  # 也可以写完整地址:git+https://github.com/AieXile/dsh-memory-plugin.git#v1.6.0

从 npm 安装(发布后):

plugin_manager install_bundle
  target: dsh-memory-plugin@1.6.0

从本地目录安装(开发用):

plugin_manager install_bundle
  target: F:\Projects\dsh-memory-plugin

本地路径会写成 link:<绝对路径>,改源码后重启 DSH 才载入 Host 半部新代码;Client 半部刷新页面即可。

从 @animetrack/memory-plugin 升级时需 remove_bundle 后重装 dsh-memory-plugin,并重启 DSH;若 cordis.patch.yml 仍留 id: animetrack-memory-rules,应删掉(新版条目为 dsh-memory-rules)。工具名与数据格式无需搬运。

典型用法

验证是否加载

  • Host:cordis_inspect_query → host / Config / listConfigs,entry 为 include:dsh-memory-rules;
  • 工具:新会话工具表应出现 memory_view、memory_search、memory_get 等;memory_debug 可查看已知根、条目数、注入统计等;
  • 注入:系统提示里应出现 Memory index (N of M; …),正文不应整段出现;memory_get(["m1"]) 可取回全文;
  • 路由:GET /dsh-memory/memory-store?sessionId=<会话id> 返回 store 与 preview 预算统计;
  • 界面:标题栏圆形图标与设置页「记忆与规则」。

模型侧读写记忆

需要全文时调用 memory_get,按关键词或标签找回索引外条目时用 memory_search,增删用 memory_add / memory_remove,规则用 rule_add / rule_remove。

自动提炼(可选)

在面板「记忆」页勾选「轮末自动提炼为草稿」,完成一轮不少于 800 字符的对话后,在「待审」中批准再入库。默认关闭,因会产生额外模型调用。

不改 DSH 的自测

node test/host-harness.mjs

用真实文件系统与假 ctx 驱动 lib/host.js,覆盖工具、注入、路由、旧路径迁移等逻辑。

适用场景与注意

适合谁:需要在多个工作区复用同一 profile、又希望记忆跟项目目录走、且希望控制每轮提示词体积的 DSH 用户;需要规则常驻、记忆可检索、可选轮末提炼与人工审批的场景。

结构与依赖:dual-face 包,Host 为 ESM(lib/host.js),Client 为经典脚本(lib/client.js);零依赖、零 peer,不参与 DSH 版本门禁。README 记载已在 DSH 0.1.7-rc.2 + pnpm 11.7(Windows)实测。

权限与安全:插件在当前 DSH 进程权限下读写工作区文件并注册 HTTP 路由与工具。安装前应阅读仓库源码与 MIT 许可证,确认是否符合你的环境策略;自动提炼会向当前会话的模型发起辅助请求,注意成本与数据出境策略。

改代码后务必重启 DSH:Host 半部的 webServer / tools 注册在进程内不会随 disable→enable 或重装 bundle 完全释放,仅重启才能保证单实例干净加载。

结尾

dsh-memory-plugin 把「记忆 + 规则」做成与工作区绑定的持久 bundle:索引注入控预算,工具与本地检索补全文,面板与设置页可管可审,v1.6.0 还可选轮末提炼与 supersedes 版本链。

DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。星标与版本以仓库为准(当前 package 版本 1.6.0)。

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

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

Xiaoye