前言¶
在 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)¶
自动提炼默认关闭,在面板「记忆」页勾选后生效:
- 监听
session/event的轮次相关事件,在轮末异步蒸馏,不阻塞轮次收尾; - 只处理达到
minChars(默认 800)的轮次;同一工作区默认 5 分钟冷却; - 用当前会话的 provider / model 发辅助请求,要求返回 JSON 数组;本地过滤重复与无效
supersedes; - 结果先进入草稿队列(面板「待审 N」),批准后才写入 active 记忆;草稿不注入、不参与检索;
- 新事实推翻旧事实时可带
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 版本链。
- 社区目录:https://www.skillhub.cn/plugins/AieXile/dsh-memory-plugin
- 源码与 README:https://github.com/AieXile/dsh-memory-plugin
DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。星标与版本以仓库为准(当前 package 版本 1.6.0)。