← Back to home@YIYuNCU

dsh-rewind

No description

Stars
0
Language
TypeScript
Created
Oct 14, 2026
Updated
Oct 14, 2026

Introduction

dsh-rewind dsh-rewind

GitHub

DeepSeek Harness 的按轮回退插件。 把文件改回某一轮开始时的内容,并另开会话。原来的会话记录保持不变。

  • 每一轮开始时,记下工作区里符合条件的文件。快照放在工作区外面,不写进仓库的 Git 对象。
  • 回退会撤掉这一轮之后的文件工具改动,以及两轮之间的手改和脚本改动。
  • 回退对话时另开一个会话,不截断原来的记录。

界面语言为简体中文和 English。

安装

这是一个 DSH Profile Bundle。安装使用仓库里已经构建好的 lib/,不需要在本机再构建。

网页或桌面端

在 添加插件 的输入框填:

github:YIYuNCU/dsh-rewind

desktop 这个 profile 由桌面端独占,不要运行 dsh plugin --profile desktop,也不要手改 profile 的 package.json。第一次启用如果提示无法导入,完全退出并重新打开客户端,再启用一次。

命令行

网页 profile:

dsh plugin --profile web add github:YIYuNCU/dsh-rewind

本地检出可以用相对路径或绝对路径:

dsh plugin --profile web add ./dsh-rewind

使用

每个用户回合末尾有 回退这一轮。打开后可以选择:

操作结果
回退代码和对话恢复文件,并另开一个会话
只回退代码只恢复文件,当前会话不动
只回退对话只另开会话,文件保持现状

没有可回退的文件时,仍然可以只回退对话。文件恢复失败时不会另开会话。同一工作区还有代理在跑时,默认不允许改文件。

设置在插件详情页,不在客户端的设置面板里。改完立即生效。

设置

设置默认说明
跳过生成目录开不记录「生成目录」里列出的目录,回退时也不删除它们
生成目录常见语言的生成目录和临时目录目录名用逗号分开,按路径中的一整段匹配。*.egg-info 匹配以 .egg-info 结尾的目录。这里填的是完整名单。build、bin、obj、out、vendor、Library 这类较宽的名字可以删掉
记录回合之间的改动开每轮开始时记下工作区。之后的手改和脚本改动,回退到这一轮时撤掉
记录子代理开子代理改的文件算到父会话当前这一轮
命令工具标明跑过命令只标明这一轮跑过命令,不给命令做快照。合格文件仍回到这一轮开始时的内容。另一项是「不标明」
文件冲突询问文件已经和记录不一致时:询问、跳过,或覆盖
删除本轮新建的文件开关闭后,这一轮新建的文件留在原地
把原话放回输入框开回退对话后,把当时的用户消息放进新会话的输入框
运行中禁止改文件开同一工作区还有代理在跑时,不允许回退代码
保留天数300 表示不按天数删除
最大存储空间2048 MiB全部会话加在一起的上限。超出后丢掉最旧的一轮,至少保留一轮
最大存储轮数1000全部会话加在一起最多保留这么多轮

生成目录、符号链接、硬链接,以及超过大小或数量上限的文件,不会自动撤掉。单个文件默认不超过 8 MiB,一轮默认最多记录 2000 个文件。

存储默认在 $DSH_HOME/rewind/v1。没有该变量时用 ~/.dsh/rewind/v1。存储目录只能在配置层修改,运行中不能改。

兼容

package.json 声明的 DeepSeek Harness 版本:

>=0.1.0-rc.8 <0.2.0 || ^0.1.7-rc.1 || 0.2.0-rc.2

Node.js:^22.19.0 || >=24。

开发

pnpm install
pnpm test

pnpm test 会先构建 lib/,再运行测试。测试覆盖修改前记录、失败工具、命令缺口、冲突、新建文件、排除路径、符号链接、保留上限、回合之间的手改,以及中断回退后的启动补偿。

许可证

BSD-3-Clause