前言¶
在 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 典型流程操作:
- 在当前对话执行
/recovery create(可选备注:/recovery create 项目名),记下返回的恢复码。 - 新开对话,先执行
/recovery memory ABCDE-FGHJK-LMNPQ-RSTUV(替换为实际码)。 - 默认情况下,模型会先总结上一段会话(在做什么、结论、文件与命令、遗留事项等),回复最后一行含「记忆已恢复」,之后可继续提问。
若只想注入记忆、不消耗总结的 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