2501136589/dsh-rewind

2501136589★ 2JavaScript最后同步: 2026-08-14

在 GitHub 打开

DSH回退插件

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 上。 无论哪种方式,最后都要让 @xiaoxin/dsh-rewind 出现在 web profile 的 package.json 里: 注意:bundle 行必须用 - insert: 包裹在 bundle 的 cordis.patch.yml 里(本仓库已配好),否则 loader 会把它当“按 id 覆盖已有 entry”而静默忽略,导致按钮不出现。 然后 完全停掉再启动 dsh web (装载器与浏览器客户端 bundle 在新进程里才注册),再 Ctrl+F5 强刷。成功后,每条已完成的助手消息旁会出现一个纯…

在 GitHub 查看完整 README →
工具/开发dsh-pluginagent

分类