dsh-recovery-memory:用 20 位恢复码在 DSH 里带走对话记忆

前言

在 DeepSeek Harness(DSH)里做长对话时,换会话、清上下文或重启引擎后,模型看不到之前的讨论。常见做法是手动复制摘要、自己维护笔记,或依赖外部笔记工具。dsh-recovery-memory 是社区维护的记忆类插件:把当前对话打包成本机一条记录,生成 20 个字母的恢复码;在新对话里用恢复码把记忆注入上下文,必要时让模型先总结上一段会话再继续聊。记忆只落在本机目录,不上传、不做云端同步。

这是什么

  • 名称:dsh-recovery-memory(npm 包名同插件 id)
  • 维护者:zilta-amaze
  • 分类:记忆
  • 许可证:MIT(见仓库 README 与 package.json)
  • 版本(资料中的当前版本):0.1.0
  • 引擎要求:dsh >= 0.2.0
  • 目录页:SkillHub 插件页
  • 源码:GitHub - zilta-amaze/dsh-recovery-memory

插件是纯 ESM、零运行时依赖(仅用 Node 内置模块),通过 /recovery 系列命令完成创建、恢复、列表与删除。

核心功能

下面能力均来自仓库 README,安装并挂载成功后可用。

输入 作用
/recovery create 打包当前对话,返回 20 字母恢复码
/recovery create <备注> 同上,并为记忆命名(列表中显示)
/recovery memory <恢复码> 在新对话中恢复记忆,并默认自动总结上一段会话
/recovery memory<恢复码> 紧凑写法,等价于上一行
/recovery <恢复码> 只给恢复码时的简写
/recovery memory <恢复码> --no-summary 只恢复、不自动总结(-n 同义)
/recovery list 列出本机恢复码(最新在前,最多 10 条)
/recovery delete <恢复码> 删除一条记忆
/recovery / /recovery help 显示用法

恢复码为 20 个大写字母,字母表去掉 I、O(避免与 1/0 混淆),显示时每 5 个字母一组,例如 ABCDE-FGHJK-LMNPQ-RSTUV。输入时大小写、空格、-、+、: 不敏感。

记忆默认保存在 $DSH_HOME/recovery/,一个恢复码对应一个 JSON 文件,权限 0600、目录 0700。可用 /recovery where 查看当前目录与可写状态。

安装与启用

插件以 DSH profile 方式安装。README 给出的从 GitHub 安装命令如下:

dsh plugin --profile web add github:zilta-amaze/dsh-recovery-memory

说明:README 记载该方式经 pnpm 从仓库拉取、零依赖,约 7 秒可完成;装完后仍需把 dsh-recovery-memory 列入 profile 的 dsh.profile.bundles,或在 cordis.patch.yml 里按文档插入一行,再重启引擎。

自定义 profile 还可通过 pnpm add link:... 链接本地包,并在 $DSH_HOME/profiles/web/cordis.patch.yml 末尾增加 insert 块;或通过 package.json 的 dsh.profile.bundles 以 bundle 模式挂载。两种方式只选一种,同时生效会导致 /recovery 注册两次、启动报错。

安装前应自行查看仓库源码与 MIT 许可证;插件在本机 DSH 进程权限下读写记忆文件,内容以明文 JSON 存储对话相关消息。

典型用法

长对话收尾或需要「换会话续聊」时,可按 README 典型流程操作:

  1. 在当前对话执行 /recovery create(可选备注:/recovery create 项目名),记下返回的恢复码。
  2. 新开对话,先执行 /recovery memory ABCDE-FGHJK-LMNPQ-RSTUV(替换为实际码)。
  3. 默认情况下,模型会先总结上一段会话(在做什么、结论、文件与命令、遗留事项等),回复最后一行含「记忆已恢复」,之后可继续提问。

若只想注入记忆、不消耗总结的 token,可加 --no-summary(或 -n),或在配置里将 autoSummary 设为 false。

配置与存储位置

在 cordis.patch.yml 中可覆盖插件配置(bundle 安装用 id 覆盖;insert 安装用完整 insert 块)。README 中的字段如下:

字段 默认值 说明
restoreChars 48000 恢复时注入的字符预算;装不下时保留开头 35% + 结尾 65%,并说明其余条目仍在磁盘完整记录中
maxRecordBytes 4000000 单条记忆落盘大小上限(约 4 MB)
autoSummary true 恢复后是否自动总结上一段会话
dir $DSH_HOME/recovery 记忆目录;支持 ~/ 与相对 $DSH_HOME 的路径

环境变量 DSH_RECOVERY_DIR 也可指定目录,优先级:配置 dir > 环境变量 > 默认。更换 dir 后需把旧目录 *.json 拷到新目录并重启引擎,旧恢复码在新路径才能找到。

记忆里主要包含模型可见的用户、助手与工具结果消息;系统提示与开发者消息不入库;默认不压缩整条消息,仅对异常长的单条做截断。恢复码仅在本机有效,换设备或清数据无法凭码单独还原。

适用场景与注意

适合:需要在 DSH 内跨会话延续同一话题、希望用短码代替整段粘贴上下文的开发者;愿意接受记忆留在本机、自行备份 recovery 目录的用户。

注意:

  • 长对话完整注入会占用较多 token;可把 restoreChars 调小或关闭自动总结以省成本。
  • 记忆为明文 JSON,若 dir 指向共享存储或同步盘,能访问该路径的其他应用也可能读到内容。
  • 同一会话重复恢复同一码不会去重,会再次注入。
  • 社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系,安装与使用以仓库文档与本机环境为准。

结尾

dsh-recovery-memory 把「对话快照 → 20 字母恢复码 → 新会话注入」做成一套本机命令,与 DSH「一切皆插件」的扩展方式一致。进一步细节、换目录示例与测试说明见仓库 README。

  • 目录页:https://www.skillhub.cn/plugins/zilta-amaze/dsh-recovery-memory
  • GitHub:https://github.com/zilta-amaze/dsh-recovery-memory
羽毛球分组比赛记分
小程序二维码

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

小夜