前言¶
在 DSH 里跑长会话时,上下文会不断堆叠:工具输出、命令结果、中间推理都留在可见历史里。窗口一满就要整段重算,前缀缓存也容易在「改一处、后面全失效」的规则下被频繁打断。常见做法是删消息或粗暴截断,代价是可审计性变差,或者动到工具集导致缓存纪律更难守。
下面介绍 DreamRift 维护的 dsh-memory-context-lab(当前版本 0.13.1,MIT)。它是按 DSH 会话 启用的上下文管理插件:基础能力是上下文降温——把已经执行完的操作沉入隔离冷库,在会话表层用极小回执替换;从 0.9.0 起还扩展了全历史记忆上下文与计划先行。插件不增删模型可见的工具(工具集一变会作废整段前缀缓存),也不改写 DSH 的 append-only 事件日志;归档走宿主表层替换,原始事件可恢复、可审计、可回放。
社区目录页:dsh-memory-context-lab。源码与唯一操作说明在 GitHub README。
这是什么¶
dsh-memory-context-lab 分类为「记忆」,面向在同一 DSH 会话里需要控上下文体积、又希望原文可回读、可恢复的开发者。
它做的事包括:归档已完成的操作;保留最近 N 个操作一直生效(更旧的攒够批量阈值再归档);按相关度回注归档要点;随时恢复原文、清空本会话隔离数据。
它不做的事已在前言说明:不动工具集、不改写事件日志底层。
冷库为复合后端:灵枢子进程(T2)或本地 Node store(T1)。会话数据目录为:
$DSH_HOME/.memory-context-lab/sessions/<session-id 的 sha256 前 24 位>/
可选依赖 dsh-memory 0.8.1;缺席时独立模式运行。启用期间会按会话抑制 dsh-memory 的自动读写(不改动工具集)。已核验宿主侧包括 DSH Desktop 0.2.0-rc.2。冷库不可用时不阻止启用(T1 兜底);归档或回注失败会关闭;占用率相关能力缺 requestHeader()、tokenMeter.measure 或 contextWindow 时失败关闭,原因可通过 status / dry-run 查看。
前缀缓存纪律(为何「攒批」)¶
在位置 i 替换内容,会让 i 之后一切按未命中价重算。插件据此一批做够(批次数才是代价来源)、回注只落在批次尾部、工具集恒定。README 指向工作区文档 docs/架构与边界.md 中的「前缀缓存纪律」。
「保留最近 N 个操作」一直生效,只受批量阈值约束:窗口外攒够 batch 个才提交一批;硬保护只有 system 指令节点与最新用户消息。提交按相邻性切段,受保护、不够格或冷写失败的单元会切段,因此单批回执数可以小于阈值。
核心功能¶
上下文降温(默认路径)¶
日常通过 /memory-lab on 启用。停用用 /memory-lab off:先恢复原文,再解除抑制、删隔离目录;停用保留冷库逻辑在文档中有说明,面板拨关走同一停用路径。
模型可见的只读工具是 memory_lab_recall(record_ids=[…])——回执里「可回读」行可直接照抄调用。
全历史记忆上下文(fullhistory)¶
/memory-lab set fullhistory on
切换为全历史模式:完整保留 system 头、全部人类用户消息、退热凭证本身与计划工件;其余沉入隔离 ArchiveStore,并自动启动隔离灵枢后端、按批增量同步索引(插件来源不进索引、不被回注)。此模式下「保留最近操作」失效(面板变灰);去留由活跃证据保护层裁决,软保留受 set protect <预算>(默认 32768)与 TTL 约束。关闭全历史会先恢复再翻位。
计划先行(planfirst)¶
打开后,全新对话第一条消息前自动进入 DSH 计划模式(服务可用走服务,否则落账 plan/mode):AI 先产出计划,用户批准的瞬间自动启用降温(免敲 /memory-lab on)。计划期间降温、回注、工作状态卡挂起(手动命令仍可用);计划全文终生保留,不可退热。已有历史的会话不自动进入。插件级默认 planFirst: true,可按会话覆盖。set planfirst off 会同时退出本会话仍处 active/pending 的计划模式。
层级卡脱敏与成员级排除(0.11.0)¶
卡片默认不复制正文:摘录类值渲染为 (正文摘录未共享),只留 entity、属性标签、极性/关系标签、来源 ID 与 expand 入口;结构化属性(退出码、测试摘要、版本号)照常保留。set sharel2content on 才放摘录(默认 off、失败关闭)。
成员级排除:一条成员被遗忘不再废掉整组——被遗忘者排除出参与集,其余照常压缩;全排除仍整组失败关闭。
安全与可逆¶
归档前正文写入隔离冷库并回读校验 hash;失败、缺失或 hash 不符一律保留原文并报出阶段。超过单节点上限时按码点分块校验。回执文本只由稳定标识符构成;restore 按原字节写回。clean 在仍有未恢复回执时拒绝删除。插件只清理 $DSH_HOME/.memory-context-lab/ 自有数据,从不写真实灵枢。
安装与卸载¶
README 写明:插件已作为 bundle 安装在 desktop profile;改宿主侧源码需重启 DSH,改 src/client.js 刷新页面即可。资料中未给出 dsh plugin add github:… 类安装命令,请以你当前 DSH 发行版的 bundle / 插件管理方式为准。
卸载与清数据:
卸载:plugin_manager remove_bundle dsh-memory-context-lab
清数据:删除 $DSH_HOME/.memory-context-lab/(或在每个会话执行 /memory-lab clean)
/memory-lab clean confirm delete-session 会丢弃本会话隔离冷库(不可撤销;须先 off)。0.13.1 不兼容:/memory-lab2 已删除;旧会话目录 sessions/<key>/state.json 不再被读取(不删不迁移)。已归档原文仍在磁盘,确认不需要后可手动删除 $DSH_HOME/.memory-context-lab/sessions/。
运行与开发依赖 Node >=22.19(README 测试环境 Node v24.19.0)。
典型用法¶
唯一主命令是 /memory-lab(0.13.1 起 v1 引擎与 /memory-lab2 已删除)。
启用与状态:
/memory-lab on | off 启用 / 停用
/memory-lab status 引擎状态、记录数、最近动作、占用率、单批释放上限、成本账本
/memory-lab restore 恢复全部可恢复回执的原文,引擎保持启用
/memory-lab now | dry-run 走一次「测量→门禁→提交→替换」;dry-run 零副作用
回读与设置:
/memory-lab read <记录ID…> 回读原文(精确 ID / 冷节点基名 / callId 均可)
/memory-lab set <键> <值> auto | recall | autorestore | batch | retain | readlease | pressure | protect |
fullhistory | compress | compressmodel | sharel2content | planfirst
/memory-lab card | cost 工作状态卡 / 成本账本
检索、遗忘、压缩与子会话:
/memory-lab recall <查询词> · verify | mark-stale | relations | history | working-set | index
/memory-lab forget preview|apply|undo|status · compress preview|run|status · expand <凭证ID>
/memory-lab fork <子会话ID> | fork-status | fork-reset <子会话ID>
/memory-lab help 按「生命周期 / 回读检索 / 证据 / 遗忘 / 压缩 / 迁移 / 设置」分组
图形入口:composer 权限控件右侧的「降温」触发器(与命令同一套设置与动作);状态、全历史、计划先行三行摘要与最近一次输出在弹层底部。全局默认在 设置 → 组件 → 「记忆上下文」。
经过上面的步骤,长会话里可以先 on,用 status / card 看占用与批次,需要时用 read 或 memory_lab_recall 拉回要点,收尾前 restore 或按计划 off / clean。
适用场景与注意¶
适合:在同一 DSH 会话里长时间编码、排障、多轮工具调用,希望控制上下文长度、尽量遵守前缀缓存纪律,又需要原文可恢复、可审计的场景;需要全历史或「先计划再自动降温」时,可打开 fullhistory / planfirst。
注意:
- 插件以当前 dsh 进程权限 运行,安装或使用前应自行查看源码与 MIT 许可证,并确认 bundle 来源可信。
- 恢复放不进窗口时会如实拒绝(原文留冷库可回读);仍有未恢复回执时不会删隔离数据。
- SkillHub 等为社区目录,与 DeepSeek / 幻方无官方从属关系;星标等元数据以各站点当时展示为准(GitHub README 侧仓库约 3 stars、3 forks)。
结尾¶
dsh-memory-context-lab 把「已完成操作」沉入隔离冷库、用稳定回执替换表层上下文,并在需要时按相关度回注或完整 restore,同时明确不碰工具集与 append-only 日志。若你在 DSH 里做长会话上下文治理,可从 /memory-lab on 与 status 起步,再按需打开 fullhistory 或 planfirst。
- 目录页:https://www.skillhub.cn/plugins/DreamRift/dsh-memory-context-lab
- GitHub:https://github.com/DreamRift/dsh-memory-context-lab