dsh-rewind-lite:同窗口对话回退与文件还原

前言

在 DeepSeek Harness(DSH)里调试智能体,经常遇到「走了一步才发现前面的提示词写错了」或者「改完文件后想回到上一次交互点」。如果手动删掉、重写,日志就断了,搜索和导出都不方便。现有的 DSH 交互方式只能新建分支,无法「就地」回退并保持历史完整。

dsh-rewind-lite 插件提供的是「就地回退」能力:在当前会话窗口内,把对话回退到任意更早的用户消息,只追加一条标记,不新建分支、不删改历史。被撤回的提示词会回填到输入框,可以修改后直接重发。同时,它还支持文件还原:回退时把 AI 改过的文件恢复成改动前的状态。

这是什么

dsh-rewind-lite 是一个 DeepSeek Harness 插件,由用户 280832849 独立维护。它不修改 DSH 客户端代码,而是通过官方扩展点(session.append、surfaceOp.replace、commands、slots、commandUi.decorate、tools/* 事件)实现功能。核心语义与 Claude Code 的 /rewind 一致,但只做一件事:就地回退,不建分支、不留副本。

核心功能

  • 命令入口:提供 /rewind 和 /undo 命令,打开官方 popupSelect 选择目标。
  • 回退到任意更早用户消息:撤回目标及其之后的所有内容,模型上下文截断到目标之前。
  • 提示词回填:原提示词回到输入框,可修改后直接重发。若 setDraft 失败,会尝试 DOM 回填。
  • 界面隐藏:被撤回的聊天行在界面中隐藏,持久化刷新/换会话/重启后仍然隐藏。
  • 只追加不删改:日志保留全部原文,可搜索、可导出。
  • 并发与状态守卫:生成中先取消再回退、并发回退加锁、被压缩遮蔽的目标拒绝、子会话拒绝。
  • 二次确认:消息旁「↶」按钮,可选择「只回退对话」或「对话+文件」。
  • 文件还原:回退时把 AI 改过的文件还原,删掉目标之后新建的文件。
  • 撤销回退:设计如此,不可撤销。

安装与启用

要求:DSH >=0.2.1-rc.2 <0.3.0-0,Node 22+。

方式一:从 GitHub 安装(推荐)

dsh plugin --profile desktop add "github:280832849/dsh-rewind-lite"

方式二:本地打包安装

npm install && npm run build && npm pack
dsh plugin --profile desktop add "file:$PWD/dsh-rewind-lite-0.4.0.tgz"

安装完成后重启 DSH,再刷新页面。

卸载

dsh plugin --profile desktop remove dsh-rewind-lite

典型用法

  1. 在对话中输入 /rewind 或 /undo,弹出候选列表(最新的在前)。
  2. 选择一条消息,执行回退:模型上下文截断到这条消息之前,界面隐藏这条及其之后的行,原提示词回到输入框。
  3. 修改后直接发送。

也可以手动输入 /rewind @123 指定目标(seq 见候选列表),效果相同。

点击消息旁的「↶」按钮,会弹出确认对话框,可选择「只回退对话」或「对话+文件」。

适用场景与注意

适合需要「在当前会话内回退并保持历史完整」的场景,例如调试提示词、纠正文件改错、重新组织对话流程。

插件以 DSH 进程权限运行,安装前建议查看源码与许可证(MIT)。

已知限制:
- 回退不可撤销,想恢复只能重新发消息。
- 目标消息被压缩遮蔽后不能再回退。
- 回退标记会短暂出现在模型上下文里,重发后与新消息并存。
- 文件备份从插件加载后开始记录,插件装上之前的改动没有备份。
- 「对话+文件」会覆盖你在 AI 之后又手动改过的文件。

短结尾

dsh-rewind-lite 通过「追加标记 + 表面截断 + 文件快照」的方式,实现了同窗口内的就地回退与文件还原,保持了历史日志的完整性。它不修改 DSH 客户端代码,通过官方扩展点实现,适合需要频繁调整交互流程的开发者。

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

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

小夜