前言¶
在 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
典型用法¶
- 在对话中输入
/rewind或/undo,弹出候选列表(最新的在前)。 - 选择一条消息,执行回退:模型上下文截断到这条消息之前,界面隐藏这条及其之后的行,原提示词回到输入框。
- 修改后直接发送。
也可以手动输入 /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