dsh-session-rewind:DeepSeek Harness 会话内回退插件

前言

DeepSeek Harness(DSH)对“撤销几步对话”的官方流程要么创建新分叉,要么手动编辑状态。dsh-session-rewind 提供一条 /rewind 命令,将当前对话的尾部折叠到之前的某个回合,保持 sessionId 不变、事件日志只追加一次 checkpoint,模型在下一请求中确实不再访问被折叠的节点。它不是分叉,不重写磁盘上的 .jsonl,也不在侧边栏产生新会话。

插件定位

插件名:dsh-session-rewind
维护者:ixietv
分类:客户端
核心价值:在当前会话内原地折叠尾部,不创建新会话或新标签页。

核心功能

  • 原地折叠:使用 session.append('user/message', checkpoint, { surfaceOp: 'replace' }),sessionId 保持不变。
  • 仅追加日志:早期事件保留序列号,仅追加一个 checkpoint 事件。
  • 模型可见:折叠节点从 deriveMessages() 中消失,下一请求真正不包含它们。
  • 双入口:/rewind [<turn>] 命令,以及在 conversation.chat.assistant-actions 行中的图标按钮。
  • 默认安全:智能体运行时拒绝回退,单会话单次回退,持久失败报告 PERSIST_FAILED。
  • 零额外运行时依赖:Host 半边不导入任何东西;Client 半边仅依赖 react。

安装与启用

git clone https://github.com/ixietv/dsh-session-rewind.git "$HOME/.dsh/plugins/dsh-session-rewind"

安装完成后重启 DeepSeek Harness。Loader 会读取 cordis.patch.yml 并插入 Host 行;Web shell 通过 dsh.client.platform: "web" 加载 lib/client.js。

典型用法

入口 语法 行为
命令 /rewind 回退到最近一条消息之后
命令 /rewind 3 回退到第 3 条消息之前
UI Turn action-row 图标 悬停一条消息,点击将其作为回退终点

工作流程

User: /rewind <turn>
   │
   ▼
Host (lib/host.js) ── 验证回合、智能体空闲、无进行中的回退
   │
   ▼
定位目标回合 / 起始序列 ── 收集直到尾部的所有 surface 节点
   │
   ▼
session.append('user/message', checkpoint, { surfaceOp: 'replace', sourceEventSeqs })
   │
   ▼
ctx.sessions.flush(session) ── 持久化;失败则返回 PERSIST_FAILED
   │
   ▼
Client (lib/client.js) ── 隐藏折叠的 DOM 行,通过 sessionStorage 标记

适用场景与注意

适合需要在当前会话内快速“重置”尾部、避免丢失上下文的场景:例如某一步走偏、需要重新定向,或需要修剪冗长的探索路径。

务必注意:插件以当前 DSH 进程权限运行,安装前应检查源码与许可证(MIT)。

结尾

dsh-session-rewind 通过原地折叠与单次追加,在保持会话一致性的前提下提供了轻量级的对话回退能力。更多细节与源码,见插件目录页与 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

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

小夜