@xiaoxin/dsh-rewind
Conversation rollback for the DeepSeek Harness: rewind a session to the prompt before a chosen turn (restore the files that turn changed) and continue in a fresh forked session.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:2501136589/dsh-rewind说明文档
阅读完整 README ↗dsh-rewind — 会话回退插件 (Conversation Rollback for DSH)
一个 100% 开源的 DeepSeek Harness(dsh)插件 bundle,借鉴 opencode / dsh-turn-rewind 的 OpenCode 式架构:为非 git 场景实现内容寻址的文件快照台账,并通过 DSH 官方 sessions.fork 重开一个新会话来回退对话——恢复文件 + 从选中的那一轮输入重新续起。
- 回退重开(fork):每条用户消息下方出现一个纯图标回退按钮。点击后弹出确认弹窗,预览"回退会撤销的文件",确认后:先恢复这些文件,再通过 DSH 官方
sessions.create/sessions.fork新建一个会话(从选中的这一轮输入之后继续),并把这条输入的原文填回新会话的输入框,方便你改完重新发送。原会话会自动归档(从会话列表消失;DSH 没有"删除单个会话"的 RPC,归档是官方机制——数据与历史仍在磁盘上,新会话继续可回退)。 - 内容寻址快照(非 git):每个 agent turn 第一次 step 前,用递归目录遍历(不用 git)把工作区哈希成 sha256 的内容寻址快照,存进
$DSH_HOME/rewind-ledger台账目录(内容寻址的 blob + per-turn manifest 都放在这里;rewind的第一版原型数据与之无关,已废弃);回退时把工作区恢复到那个 turn 的快照。支持新增/删除/修改/权限/文本与二进制。
为什么是"重开新会话"而不是"原地折叠":DSH 的会话日志是只读追加、不可物理截断;而且 DSH 浏览器端不会根据第三方插件追加的普通
user/message+surfaceOp.replace折叠对话。所以采取与 turn-rewind 同款的做法——恢复文件后 fork 一个新会话(原会话归档、从列表隐藏)。浏览器打开新会话时天然只显示到选中的那一轮为止,可靠且不需要 DSH 内部支持第三方 surface 折叠。
快速开始
安装
要求 dsh 与 pnpm 在 PATH 上。
REM 说明:%USERPROFILE% 是当前用户的 home(等价于 PowerShell 的 $env:USERPROFILE)。
REM 以下命令在 cmd 与 PowerShell 中均可运行(PowerShell 请把 %USERPROFILE% 换成 $env:USERPROFILE)。
# 1) 克隆
cd %USERPROFILE%
git clone https://github.com/2501136589/dsh-rewind.git
cd dsh-rewind
# 2) 安装进 web profile
# 推荐(无空格路径):
dsh plugin --profile web add .
# 若路径含空格导致相对锚定解析出错,则进 profile 目录直接 pnpm:
cd %USERPROFILE%\.dsh\profiles\web
pnpm add "link:"
无论哪种方式,最后都要让 @xiaoxin/dsh-rewind 出现在 web profile 的 package.json 里:
"dsh": { "profile": { "bundles": [ "@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "@xiaoxin/dsh-rewind" ] } },
"dependencies": { "@xiaoxin/dsh-rewind": "link:" }
注意:bundle 行必须用
- insert:包裹在 bundle 的cordis.patch.yml里(本仓库已配好),否则 loader 会把它当“按 id 覆盖已有 entry”而静默忽略,导致按钮不出现。
然后完全停掉再启动 dsh web(装载器与浏览器客户端 bundle 在新进程里才注册),再 Ctrl+F5 强刷。成功后,每条已完成的助手消息旁会出现一个纯图标回退按钮。
通过 npm 安装(可选)
发布到 npm 后,可用 dsh plugin --profile web add @xiaoxin/dsh-rewind 直接安装 package 名。