liangmianya/dsh-synapse
liangmianya/dsh-synapseDeepSeek Harness 的可视化非线性对话工作区:把会话、追问与分支变成可浏览、可拖拽的对话地图。
同一会话窗口内的 in-place 对话回退(不 fork,Claude Code /rewind 语义):每条消息的 ↶ 按钮把模型上下文回退到任意用户消息,可选用磁盘持久化的 before-backups 还原工作区文件。
DeepSeek Harness 插件:一键就地回退对话到任意更早的用户消息——同窗口内完成,不新建分支、不换窗口,可一并还原工作区文件(完整 Claude Code /rewind 语义)。
English | 中文
刻意聚焦、保持极简,只做一件事:就地回退到任意远的用户消息,还能顺手还原改过的文件。
每条用户消息的操作行都有一个 ↶ 回退 按钮。点击后弹出模式选择浮层——「仅回退对话」或「回退对话和代码」,后者会先展示文件变更清单再确认。还可以通过 `/rewind` 和 `/undo` 命令便捷地选择和回退。
用户消息旁的 ↶ 回退按钮 模式选择浮层 「回退对话和代码」影响清单 /rewind 候选面板
确认本机 DSH 版本后,在 Release 找到适配的插件版本。
命令行:
dsh plugin --profile <name> add dsh-rewind-plugin@<版本>图形界面:侧栏「插件」页 →「添加插件」→ 填 dsh-rewind-plugin@ → 安装 → 重启 DSH 并刷新浏览器。
图片仅为示例,请以实际适配版本号为准。
更新:命令行可直接覆盖安装;图形界面会拒绝重复安装,需先卸载旧版本,再装新版本。
[!WARNING]
npm 上的dsh-rewind属于其他作者,请用dsh-rewind-plugin安装。
/rewind(或其别名 /undo)打开候选列表选择。键盘操作:候选列表与模式浮层均支持 ↑↓ 移动、Enter 确认、Esc 取消/返回。
边界说明
steering 插话消息,同样可作为回退目标,不会打断当前生成。快照备份(默认开启):用于文件还原;可在本插件的配置卡片中关闭。关闭后不再创建新的快照,关闭期间的文件改动无法还原。快照存储于 /rewind-snapshots/(默认 ~/.dsh/rewind-snapshots/)。手动删除该目录仅清除文件备份(对话回退不受影响),插件可自动重建。
全局自动清理(默认关闭):把长期不活跃的会话快照整目录移除,不影响活动会话与对话日志。可在配置卡片查看与配置(自动清理开关、失活天数),也可用 /snapshot-auto-cleanup 命令查看、设置和运行。详见:快照自动清理。
# 卸载插件
dsh plugin --profile <name> remove dsh-rewind-plugin
# 如需同时删除本地数据
rm -rf <dsh home>/rewind-snapshots
rm <dsh home>/snapshot-cleanup-last-sweep.json插件的自动清理设置保存在当前 Profile 的插件配置中。如需彻底清理,可手动删除对应条目。
和常见的几种做法相比,本插件在"回退"这件事上的取舍:
维度 · 常见做法 · 本插件 对话回退 · Fork 分支新建对话 · 就地回退——不新建会话、不切窗口,便捷回退 文件还原 · 无还原功能 / git 管理或完整快照 · 写前轻量备份——写文件前自动存原内容,一键还原 依赖 · 常依赖 Git 仓库或完整快照引擎 · 无依赖——不依赖 git,普通目录即可用 存储开销 · 整树快照占空间大 · 轻量——不变不存,且只追踪写类工具改动过的文件
整套设计只有两条主线,核心哲学朴素却克制:对话部分「只遮蔽、不删除」,使用 DSH 原生的「隐藏 + 替换」机制;文件部分「局部追踪,写前轻量备份」,参考 Claude Code 的检查点语义。
append-only 是铁律:会话日志只追加、从不改写——这是可审计与信息安全的地基。回退从不动历史,它只做一步:往日志末尾追加一条 “空消息”标记,把目标消息及其之后的全部内容「遮蔽 + 替换」掉,让模型和界面都只看得到目标之前的部分。
/compact 相同的「隐藏 + 替换」:/compact 把一段历史压缩成摘要,/rewind 则换成一条“空消息”标记。由于其规范性,DSH 的日志重放、压缩、续接检查都能正确识别它,绝不会把它误认为真实对话;设计点睛:整个对话回退就是一条追加。它确定、可审计,且因为日志从未被破坏,回溯是「干净的」——用最小的动作,实现最完整的语义。那些与 DSH 内部的兼容细节(对 /compact 的复刻、空消息的遮蔽)正是插件的专业所在。文件部分对齐 Claude Code 的检查点语义——局部追踪、写前备份 + 每条消息重扫已跟踪文件,而不是整树快照。这项取舍既省空间,又更完整:
write、edit),写前备份原内容,并记录、追踪被处理的文件——从不备份整个工作区,因此轻量;单个文件过大时不备份。ref)而非复制内容。设计点睛:这套检查点的「轻」,来自只记录被工具动过、且确实变化的文件——写前备份保证可还原,不变不存与存链接压掉重复;还原时再对照真实磁盘,只动不一致的文件。
本插件刻意保持轻量、聚焦"对话回退"这一件事,以下场景不属于它的职责:
^22.19.0 || >=24.0.0。package.json 的 engines.dsh 声明。[!WARNING]
本项目与 DeepSeek Harness 均处于开发者预览阶段。可复现环境请 pin 精确版本,
并阅读上述行为说明。
需要获知哪些转录行被回退撤回的第三方 DOM 插件,应使用 dsh-rewind-plugin/client 导出的稳定、与本地化无关的纯函数,切勿解析 outcome.text。data-dsh-rewind-hidden 属性标记被撤回的行(仅观测性)。 详见:docs/contract/client-contract.zh.md。
/export 导出的会话日志包含已撤回的消息。本插件无法改动导出。v0.1.2 新增右侧导轨,为已撤回消息保留刻度,悬浮显示已撤回正文。仅显示差异,无功能影响。[!NOTE]
本插件提供浏览器端诊断输出;详见 浏览器诊断。
本插件只向会话日志追加回退标记事件,从不删除或改写已记录的历史。工作区文件仅在「回退对话和代码」时被改写,备份存储于 /rewind-snapshots/;还原以备份为唯一来源。不触碰你的 git 仓库,无网络请求,不访问任何凭据。对长期不活跃的会话,另有默认关闭的全局自动清理可整目录移除其快照,不影响活动会话与对话日志。完整安全模型:SECURITY.md。
npm install # devDeps 来自 npm registry
npm run check # 一键全检:typecheck + test + build + verify:host + pack --dry-run
npm run typecheck # tsc 三面编译(host + client + client-test)
npm test # vitest:全部单元与兼容性测试套件
npm run build # esbuild:lib/index.js(host ESM)+ lib/client.js(loader 闭包)+ .d.ts
node scripts/verify-host.mjs # 端到端验证构建产物prepare 执行完整构建,所以 git 安装与 npm pack / npm publish 总会产出完整的 lib/ 与 LICENSE。
维护者:模块地图与 harness 接口参考见 docs/harness-reference.md
贡献指南:CONTRIBUTING.md
通过 GitHub Actions Trusted Publishing(OIDC,无存储 NPM_TOKEN)发布:推送 v tag,CI 即带 Sigstore provenance 发布。
npm version patch && git push origin <branch> --tags一次性 npm 侧配置与完整流程:见 docs/release/release.md。