在 DeepSeek Harness (DSH) 的智能体开发流程中,调整历史提示词或回滚项目文件往往需要手动编辑或繁琐的会话操作。dsh-rewind 插件旨在解决这一痛点,提供类似 OpenChamber 的实时回退体验,并支持在回退点继续对话时自动回滚项目文件。
插件介绍¶
dsh-rewind 是一个 DeepSeek Harness (DSH) 插件,基于 Da-Mie/dsh-rewind 修改而来。它利用 DSH 原生的 fork、archive 和 append-only 会话日志能力,结合插件自建的项目快照机制,实现了无感的时间线回退与文件状态恢复。
核心功能¶
-
时间线对话框
- 快捷键
Alt + T打开时间线对话框。 - 支持搜索用户消息,点击后自动滚动定位。
- 在时间线中直接点击行内的
↩图标进行回退。
- 快捷键
-
行内回退
- 用户消息行:点击
↩回退到该条消息。 - 助手回复行:点击
↩回退到该回复之后。
- 用户消息行:点击
-
回退模式选择
- 点击
↩后会弹出选择窗口,可指定回退方式:- 只回退对话:回退对话上下文,后续发送新提示词不会回滚文件。
- 回退修改的内容:回退对话,且后续发送新提示词时会触发项目文件回滚。
- 点击
-
无感后台切换
- 点击回退后,界面立即显示“已回退 N 条消息”停靠条,被回退的提示词文本会自动填入原输入栏(可直接修改)。
- 会话的 fork、预载和切换操作在后台完成,用户感知不到卡顿。
- 提供逐条
[恢复到此]或[恢复全部]的选项。
-
零闪烁发送
- 在回退态下,在输入栏回车发送,对话直接继续,不做任何额外的会话切换。
- 文件回滚与旧会话归档在后台异步进行,不影响当前的对话流。
安装与配置¶
安装¶
DSH 支持自动安装,将仓库链接发给 DSH 即可:
请安装这个插件:https://github.com/ddll8023/dsh-rewind
DSH 会读取仓库中的安装指引文档,自动完成克隆、建立链接、注册和重启流程。
手动安装(备选)¶
如果需要手动操作,请遵循以下步骤:
- 克隆仓库到稳定目录,例如
E:\AI_apps\DSH\DSH_WorkFile\plugins\dsh-rewind。 - 在
$env:USERPROFILE\.dsh\profiles\node_modules下建立 junction 指向包目录。 - 在
profiles\web\package.json的dependencies中添加"dsh-rewind": "link:<包路径>",并在dsh.profile.bundles中追加"dsh-rewind"。 - 重启 DSH 桌面应用后端,并刷新浏览器加载
lib/client.js。
配置¶
插件支持通过 cordis.yml 配置。作为 apply 的第二个参数传入:
enabled: true
# 可选:覆盖默认的排除目录列表(如 node_modules/.git 等)
excludes:
- node_modules
- .git
机制与限制¶
- 回退边界:只能回退到已完成的 turn 边界。不能回退到仍在进行(尚未
turn/end)的回合内。回退到第一条消息会新建一个空会话分支。 - 长会话处理:fork 需要在宿主侧重放前缀事件日志,成本随会话长度增长。点击回退时界面会立即显示“处理中”并回填提示词,真正的会话切换在后台完成。
- 文件回滚:文件回滚在发送新提示词后异步进行,通常快于 Agent 首次写文件,但不与首条回复严格同步。
- 原会话管理:原会话在发送新提示词后才归档(侧边栏隐藏,磁盘数据保留以便恢复)。
适用场景¶
- 需要在长时间对话中频繁调整历史提示词的场景。
- 需要回滚项目文件到特定历史状态并继续开发的场景。
- 习惯 OpenChamber 风格时间线交互的用户。
该插件以当前 DSH 进程权限运行,安装前建议检查源码与许可证。