dsh-session-suite:在 DSH 里把会话、工作区文件和记忆一并检查点与回滚

前言

在 DeepSeek Harness(DSH)里做长对话开发时,常见做法是只删聊天记录,或靠 Git 手工还原文件。这样会话记忆与磁盘状态容易脱节:回退了几轮对话,但改过的文件还在;或者文件恢复了,上下文里却仍留着之后的结论。社区插件 dsh-session-suite(维护者 heixiua,分类为记忆)面向 desktop 配置,把检查点、回滚、分享和跨会话长期记忆接到同一套交互里,设计上参考 Trae 的 session actions。本文介绍其能力边界、安装方式与典型操作,事实以 GitHub README 为准。

这是什么

dsh-session-suite 是一个 DSH bundle(Host + Web Client),针对 desktop profile 构建。一句话:在同一轮助手回复上,可把对话、该轮产生的工作区快照以及会话记忆一起回滚;支持分段删除、永久删会话、多格式分享,以及需明确确认的长期记忆。

DSH 生态理念是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

核心功能

回滚与删除(破坏性操作各影响什么)

README 用表格明确每种操作触及的范围:

操作 对话 记忆 工作区文件
回滚(↺) 在该消息处截断 截断到该点 恢复到该轮快照
删除一轮(🗑) 含 prompt、reply 及中间步骤 截断到该点 不动
删除一段对话 从所选第一轮起截断 截断到该点 不动
删除整个 session 从磁盘移除 移除 不动(工作区目录仍在)

只有 回滚 会改文件;其余删除保持当前工作树不变。会话日志为 append-only,「截断」语义是保留前缀并退役原会话,被删范围之后的轮次一并消失。

入口(Client UI):

  • 每条最终助手消息:↺ 回滚(对话 + 文件 + 记忆),确认条在输入框上方;🗑 删单轮(对话 + 记忆)。
  • Session 菜单:Delete part of the conversation(选轮次)、Delete session(确认对话框)。
  • Session snapshots:Session 菜单与 Settings 中均可管理快照。

回滚机制(Host 侧)

因 DSH 会话日志 append-only 且为唯一真相源,回滚不能删事件,suite 实现为原子多步操作(README 摘要):

  1. Protect:对工作区和记忆账本做临时 undo 快照(10 分钟 TTL)。
  2. Conversation:sessionController.fork({ sessionId, atSeq }) 将事件前缀复制到新 session。
  3. Files:恢复该轮检查点——改写变更文件、删除会话之后新建的文件,会话开始前已存在的文件不 touched。
  4. Memory:裁掉目标序列号之后的记忆项。
  5. Retire:归档源 session(侧栏隐藏,日志保留)。

Undo 可整体逆转:文件、记忆、归档会话与 fork 出的子会话。

分享

Session 菜单 → Share:列出每轮 prompt 与回答预览,默认全选,可取消勾选后选输出格式:

  • Image:Canvas 绘制 PNG,无额外图像库。
  • Web page:单文件 HTML(内联 CSS,明暗主题,可打印 PDF)。
  • Markdown / JSON:便于 issue 或其它工具。
  • Copy text:纯文本剪贴板。

富格式会渲染模型 Markdown(标题、列表、代码块、表格、链接等);Host 用 lib/markdown.js 解析日志为块,HTML 与图片共用同一套块,避免页面与图不一致。截图通过 attachments.imageHostPath 以内联 data URL 写入(有预算上限),保证单文件可携带;PNG 无法点击放大大图时,应选 HTML。

导出默认只含用户 source.kind === "user" 的 prompt 与各轮 最终回答;可关闭「仅最终回答」以导出含工具叙述的全部助手步骤;工具结果不出现在富导出中。本 bundle 不提供 依赖公网服务器的分享链接,可携带的 HTML 文件即 portable 等价物。

长期记忆

两套隔离存储:global 与按 workspace 划分;重要性由频率、新近度、情感、唯一性四因子评分,带动态衰减、冷归档、相似聚类摘要压缩与规则抽象。README 强调:没有你的同意不会隐式写入。 每轮结束后由便宜模型提议可持久化事实,在设置页排队,仅点 Keep 才写入;显式 【记住:…】 / 【新增全局记忆:…】 跳过队列立即写入。设置入口:Settings → Long-term memory;亦可使用 memory 工具。细则见仓库 docs/long-term-memory.md。

不在此 bundle 内的事项

使用 WorkBuddy / Trae credits 作为模型:非本 bundle,见仓库 docs/credits.md。

安装与启用

官方自 npm 安装(desktop profile):

dsh plugin --profile desktop install @heixui/dsh-session-suite

安装一次后 重新加载页面。bundle 在 Host 侧注册一行 session-suite,补丁位于 cordis.patch.yml;Client half 由 package.json → dsh.client 发现。package.json 要求 Node >= 22。

若从本地仓库目录安装(非本文推荐的 SkillHub/npm 路径,仅 README 原文):

dsh plugin --profile desktop install .

或由运行中的 Harness 通过 plugin_manager 的 install_bundle 安装本地路径。README 禁止把 git clone 当作读者必做步骤,此处不展开 clone 流程。

典型用法

下面按 UI 路径复现 README 中的主要流程。

  1. 从某条助手最终回复回滚整轮成果
    在该消息上点 ↺,在输入框上方确认。对话 fork 到新 session,工作区恢复到该轮快照,记忆裁到对应序列;原 session 归档隐藏。若误操作,在有效期内用 Undo。

  2. 只去掉一轮错误问答、不动磁盘
    点该轮 🗑,或 Session 菜单 → Delete part of the conversation,在轮次选择器里选定范围。

  3. 导出可发给同事的对话片段
    Session 菜单 → Share,取消不需要的轮次,选 Image / Web page / Markdown 等;需要可点击看大图截图时用 Web page。

  4. 写入长期记忆
    在对话里写 【记住:…】,或 Settings → Long-term memory 审阅队列后点 Keep;也可用 memory 工具(行为以 Host 实现为准)。

  5. 查看或清理快照
    Settings 或 Session 菜单 → Session snapshots。磁盘布局示例(%DSH_HOME% 为 DSH 主目录):

%DSH_HOME%/storages/dsh-session-suite/
  sessions/<sessionId>/index.json
  sessions/<sessionId>/manifests/*.json
  sessions/<sessionId>/blobs/<ab>/<hash>
  memory/<sessionId>.json
  memory/_glob
  …

适用场景与注意

适合谁: 在 DSH desktop 里长时间结对编程、需要「这一刻的代码 + 记忆 + 对话」一致回退的开发者;需要把选定轮次导出为图/HTML/Markdown 做归档或评审的团队;希望跨 workspace 保留经确认的长期记忆的用户。

安全与权限: 插件在 当前 DSH 进程权限 下运行,回滚与快照会直接读写工作区与 %DSH_HOME%/storages/dsh-session-suite/。安装前请查看 源码仓库 与 MIT 许可证,确认与自身环境策略一致。删除 session 不可恢复对话与对应记忆,但工作区文件夹本身不会被插件删掉。

版本: 已抓取 package.json 标明发布版本 0.10.2;日后以 npm / 仓库 tag 为准升级。

结尾

dsh-session-suite 把 DSH 里最容易失真的三块——会话前缀、工作区检查点、记忆账本——绑在同一套回滚与分享路径上,并用显式确认队列管住长期记忆。若你正在 desktop profile 上使用 DSH,可从 npm 安装 @heixui/dsh-session-suite 后 reload,再试单条消息上的 ↺ 与 Share。

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

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

小夜