ddll8023 / dsh-rewind

Listed

Modified dsh-rewind plugin for DeepSeek Harness with rewind mode choice (conversation-only or file rollback)

mainSession View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:ddll8023/dsh-rewind

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit 2a3d85aSynced Aug 18, 2026

dsh-rewind

License

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\<workspace哈希>\),提交时按目标 checkpoint 做差集恢复(删除多余、还原缺失/变更)。

示意图

点击回退后:旧消息隐藏、提示词回填输入栏

输入栏上方的"已回退 N 条消息"停靠条(逐条恢复)

安装

方式一:交给 DSH 自动安装(推荐)

把本仓库链接发给 DSH(例如:请安装这个插件:https://github.com/ddll8023/dsh-rewind)。 DSH 会读取 docs/AI-INSTALL.md(给 AI 的安装指引)并自动完成: 克隆仓库 → 建立 junction 链接 → 注册到 Web profile → 重启生效。

方式二:手动安装

  1. 克隆本仓库到稳定目录,例如 E:\AI_apps\DSH\DSH_WorkFile\plugins\dsh-rewind
  2. $env:USERPROFILE\.dsh\profiles\node_modules 下建 junction 指向包目录; 在 profiles\web\package.jsondependencies"dsh-rewind": "link:<包路径>", 并在 dsh.profile.bundles 追加 "dsh-rewind"
  3. 重启 DSH 桌面应用后端,浏览器刷新加载 lib/client.js(插件集变更需要重启)。

配置(cordis.yml 行 config,作为 apply 的第二个参数传入)

字段默认说明
enabledtrue总开关
excludes内置列表快照排除的目录名(node_modules/.git/dist 等),用数组覆盖

已知边界 / 限制

  • 回退点限已完成的 turn 边界:不能回退到仍在进行(尚未 turn/end)的回合内;回退到第一条会新建一个空会话作为分支(第一条之前无前缀可 fork)。
  • 长会话回退有处理时长:fork 需在宿主侧重放前缀事件日志,成本随会话长度增长。点击回退会立即显示停靠条("处理中")并回填提示词,真正的会话切换在后台就绪后完成;就绪前锚点之后的消息仍会短暂可见。
  • 逐条恢复(恢复到此)仍是同步操作:长会话下同样需等待 fork 完成(界面短暂"处理中")。
  • 原会话在发送新提示词后才归档(侧边栏隐藏,磁盘数据保留可恢复);回退/恢复本身不动项目文件。
  • 文件回滚在后台进行:发送新提示词后异步回滚,通常远快于 agent 首次写文件,但不与首条回复严格同步。
  • 后台处理期间的边界:fork 未就绪时发送的提示词会被转发到新分支继续;此时点"恢复全部"会取消本次回退(无用的 fork 自动归档)。

许可证

MIT

交互设计参考 OpenChamber(MIT)。

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

DocumentationDetected

Repository information

Language
JavaScript
License
MIT
Last updated
Aug 15, 2026, 3:36 PM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.