dsh-rewind:同窗口就地回退对话与文件

前言

在 DeepSeek Harness(DSH)里做智能体开发,对话一旦走错方向,常见做法是 fork 分支开新会话,或靠 git 手动还原工作区。前者要切换上下文,后者只覆盖文件、不管模型侧已读过的对话。Claude Code 的 /rewind 提供了一种不同思路:在同一会话窗口内,把对话回退到任意更早的用户消息,并可选择一并还原被写工具改过的文件。dsh-rewind 由 SiriLee 维护,把这套语义落到 DSH web 配置档上,分类为工作流插件,GitHub 仓库 sirilee/dsh-rewind 当前约 11 stars。

这是什么

dsh-rewind 是 DSH 插件,npm 包名为 dsh-rewind-plugin(注意:npm 上的 dsh-rewind 属于其他作者,安装时勿用错)。它只做一件事:在当前会话窗口内就地回退到任意用户消息,可选同时还原工作区中被跟踪工具改过的文件,对齐 Claude Code /rewind 语义。插件不新建分支、不切换窗口;会话日志采用只追加策略,回退通过遮蔽标记实现,不删改历史记录。

核心功能

就地对话回退

回退目标消息及其之后的全部内容——agent 回复、工具调用——会同时从模型上下文和界面渲染中撤回。目标消息的文本会回填到输入框,改完后可直接重发。回退可反复进行,无阶段或次数限制;插话(模型尚未读取的 steering 消息)也可作为回退目标。若 agent 正在运行,插件会先强制停止当前回合再执行回退。

轻量工作区备份与还原

插件跟踪写文件类工具:writeeditstr_replace_editor。每次写操作前在审批门放行之后捕获原内容,按对话轮次分组并落盘到 ~/.dsh/rewind-snapshots/,跨重启保留(每会话最近 100 组)。每条用户消息边界会重扫已跟踪文件,外部编辑或删除也会被记录。还原前实时比对磁盘,只处理真正不一致的文件;符号链接与硬链接跳过。不依赖 git,普通目录即可使用。

多种触发方式

每条用户消息旁有「↶ 回退」按钮;也可输入 /rewind 打开候选列表,或用快捷键操作。模式浮层提供「仅回退对话」与「回退对话和代码」;后者在目标之后有可还原变更时可用,会先展示文件变更清单再确认。候选列表与浮层支持 ↑↓ 移动、Enter 确认、Esc 取消。

信息安全与测试

插件只向会话日志追加回退标记,不删改已记录历史;文件备份与还原限定在 ~/.dsh/rewind-snapshots/,不触碰 git 仓库,无网络请求。项目包含单元、探针与端到端主机验证,覆盖日志重放、续接、跨重启等场景。第三方 DOM 插件可通过 dsh-rewind-plugin/client 导出的稳定函数获知被撤回行,详见仓库内 docs/contract/client-contract.zh.md

安装与启用

在 DSH web 配置档下执行官方安装命令:

dsh plugin --profile web add dsh-rewind-plugin

环境要求:Node.js ^22.19.0 || >=24.0.0;peer 依赖 @deepseek-ai/* 由 harness 运行时解析。当前 npm 版本为 0.4.2,许可证 MIT。DSH 与该项目均处于开发者预览阶段,生产环境建议 pin 精确版本。

典型用法

  1. 在对话中找到要回退的用户消息,或输入 /rewind 从候选列表选择。
  2. 在浮层中选择「仅回退对话」或「回退对话和代码」。
  3. 回退立即生效:界面回到目标消息当时的状态,被撤回消息文本填入输入框,修改后重发。

「回退对话和代码」会先列出受影响文件,确认后执行还原。重复回退同一目标对已一致的文件为零副作用。

适用场景与注意

适合需要在同一窗口内快速试错、不想 fork 新会话的 DSH 开发者;适合没有 git 或不想依赖整树快照的轻量工作区。以下情况不在插件职责内:整树或 Git 级快照、子代理会话内的编辑、fork 分支回退(harness 已内置)。

使用前须知:

  • 插件以当前 dsh 进程权限运行,安装前应阅读源码与 MIT 许可证。
  • 回退本身无法撤销,但被撤回内容仍保留在会话日志中,可手动编辑日志恢复。
  • /export 导出的日志包含已撤回消息,插件无法改动导出行为。
  • v0.2.4 及更早版本回退过的会话,继续对话后可能加载历史失败;v0.3.3 及更早版本回退过的会话,压缩对话(compact)可能不可用。详见仓库 docs/compat/troubleshooting.zh.md

结尾

dsh-rewind 把 Claude Code 式的就地回退落到 DSH:对话与文件可在同窗口内一键撤回,日志只追加、文件备份轻量落盘。社区目录页与 GitHub 仓库:

  • https://www.skillhub.cn/plugins/SiriLee/dsh-rewind
  • https://github.com/SiriLee/dsh-rewind
羽毛球分组比赛记分
小程序二维码

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

小夜