dsh-rewind:恢复选中轮文件并在 DSH 新会话中继续

前言

在 DSH 里做多轮智能体任务时,常见诉求不是单纯撤销一条回复,而是把某条用户消息引入后的工作区改动退回去,再从这条消息继续。文件改动和对话历史需要一起处理:文件要恢复,对话要能继续。

dsh-rewind 是面向 DSH 的会话回退插件。它恢复被选中轮改变的文件,并通过 DSH 的 sessions.fork / sessions.create 在新会话中继续。下面介绍它的能力、安装方式和需要注意的边界。

这是什么

  • 仓库:2501136589/dsh-rewind
  • 许可:MIT
  • 定位:DSH 会话回退插件
  • 目标场景:非 git 工作区中,按轮次恢复文件,并在 fork 出的新会话里继续对话

核心能力

  • 通过 sessions.fork / sessions.create 新建会话,把对话续到选中轮之后。
  • 在非 git 场景使用 sha256 内容寻址快照恢复文件,支持新增、删除、修改、权限、文本与二进制。
  • 在用户消息下方提供回退按钮,点击后预览将被恢复的文件改动。
  • 提供 /rewind 命令,支持 rewindlist-filesdry-run 子命令。
  • /rewind list/rewind 可列出本会话所有可回退的用户消息。
  • fork 会话可以沿 header.parentSession 血缘链继续回退父会话消息。
  • 回退范围限制为该会话碰过的文件,提供跨会话隔离。
  • 默认归档原会话;可用 archiveOriginalSession: false 关闭。

安装与启用

安装要求 dshpnpm 在 PATH 上。

进入插件仓库目录后,执行:

dsh plugin --profile web add .

README 中还提到 npm 发布后的安装方式;由于是否已发布可用未明确,若包可安装,可尝试:

dsh plugin --profile web add @xiaoxin/dsh-rewind

注意:bundle 行需要用 - insert: 包裹在 cordis.patch.yml 中,否则 loader 可能静默忽略,导致按钮不出现。

安装后,需要完全停掉再启动 dsh web,然后在浏览器里执行 Ctrl+F5 强刷。

浏览器回退流程

1、打开会话,找到用户消息下方的回退按钮。

2、点击按钮,预览将被恢复的文件改动。

3、确认后,插件先恢复文件,再通过 sessions.fork / sessions.create 新建会话。

4、新会话输入框中填入该条用户消息原文,可以修改后重新发送。

5、默认归档原会话;归档后原会话从侧栏和搜索消失,但数据仍在磁盘。若不想归档,可以设置:

archiveOriginalSession: false

命令回退流程

列出本会话可回退的用户消息:

/rewind list

也可以直接执行:

/rewind

执行回退:

/rewind <messageSeq|messageId> rewind

只预览文件改动:

/rewind <messageSeq|messageId> list-files

或者:

/rewind <messageSeq|messageId> dry-run

注意:seq 是会话日志的原始事件流水号,可用 /rewind list 获取可用值。

回退边界

  • 只能回退到开启采集之后的 turn;启用插件之前的轮次没有快照,无法回退。
  • 快照边界为 turn;首轮没有上一轮 turn/end,会走 sessions.create
  • 工作区遍历跳过 .gitnode_modules 和台账目录;超大或超总量会明确失败。
  • 跨会话隔离是启发式的;最后一个 turn 的 shell 改动可能不被归因,会话事件缺失时退回全量差异。
  • 两个会话改过同一个文件时,后回退的一方可覆盖另一方的该文件改动。

适用场景与注意

适合:

  • 使用 DSH web 做多轮开发,希望从某条用户消息重新出发。
  • 工作区不是 git 仓库,或不想依赖 git 状态做文件回退。
  • 需要在脚本或无 UI 环境中用 /rewind 命令完成预览和回退。

注意:

  • 插件会以当前 dsh 进程权限运行;安装前建议检查源码与 MIT 许可证。
  • DSH 没有删除单个会话的 RPC;默认归档后,原会话从侧栏和搜索消失,但数据仍在磁盘。
  • 跨会话隔离依赖会话事件和快照漂移;共享工作区、shell 副作用和并发修改都可能影响回退范围。
  • 社区目录页是独立站点,不是官方应用商店;选择插件时应自行核对仓库与许可。

相关链接

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

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

小夜