dsh-rewind
Conversation rewind / restore / branch-continue for DeepSeek Harness — OpenChamber-style timeline with project-file rollback
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:ddll8023/dsh-rewind说明文档
阅读完整 README ↗dsh-rewind
DeepSeek Harness(DSH)插件:在 Web 会话中实时回退对话、回退后可恢复; 若在回退点发送新提示词,则项目(工作区文件)回退到该阶段并从新提示词继续。
本仓库为修改版,基于 Da-Mie/dsh-rewind 修改而来。
交互设计与呈现方式参考自 OpenChamber: 时间线对话框、回退清单停靠条、"提示词回填输入栏后直接修改"的交互模型, 以及"回退即完成、发送即普通发送"的无感机制。 底层机制使用 DSH 原生能力(fork / archive / append-only 会话日志)+ 插件自建项目快照。
功能
- 时间线对话框(Alt+T):搜索用户消息、点击滚动定位;行内 ↩ 回退到此;上一个回合 / 最新 / 加载更早;
- 消息行 ↩ 图标(复制键左侧,OpenChamber 式):用户消息行回退到本条;回合尾部(assistant 回复)行回退到该回复之后;
- 回退方式选择弹窗:点击 ↩ 后先选择 只回退对话 或 回退修改的内容;选择“只回退对话”时后续发送也不会回滚文件,选择“回退修改的内容”时在发送新提示词后回滚项目文件;
- 回退即回显、后台切换(无感):点击回退后立即出现 "已回退 N 条消息"停靠条(todos 同款视觉、流式占位不遮挡),被回退的提示词文本填入原输入栏(可直接修改);
fork 前缀会话 → 预载 → 切换全部在后台完成,就绪后无感切到该点(OpenChamber 式:破坏性动作在回退时完成);可逐条 [恢复到此] 或 [恢复全部]; - 发送 = 普通发送(零切换零闪烁):回退态下在输入栏回车发送,对话直接继续(不做任何会话切换);文件回滚与旧会话归档在后台完成;
- 项目文件只在发送新提示词时回滚;回退 / 恢复本身不动文件。
机制
- 回退(点击 ↩ / 时间线) = 立即回显停靠条并回填提示词,随后后台 fork 前缀会话、预载、切换(旧会话保留为恢复源,原 turn 后台取消);
- 恢复 = 切回旧会话([恢复全部])/ 重新 fork 到该条([恢复到此]);无用的 fork 后台归档;
- 发送 = 普通发送;若回退时选择了“回退修改的内容”,检测到新消息后后台完成:取消旧会话 turn → 项目文件回滚(
/dsh-rewind rollback)→ 归档旧会话,全程不影响对话;选择“只回退对话”则只归档旧会话、不回滚文件; - host 快照引擎:每次
turn/end后对工作区拍增量快照(mtime/size 快速路径 + 内容寻址 blobs;排除 node_modules/.git 等;存放于%USERPROFILE%\.dsh\plugins\dsh-rewind\\),提交时按目标 checkpoint 做差集恢复(删除多余、还原缺失/变更)。
示意图

