README来源: main@1aa7f43f
dsh-rewind
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 这类较宽的名字可以删掉 |
| 记录回合之间的改动 | 开 | 每轮开始时记下工作区。之后的手改和脚本改动,回退到这一轮时撤掉 |
| 记录子代理 | 开 | 子代理改的文件算到父会话当前这一轮 |
| 命令工具 | 标明跑过命令 | 只标明这一轮跑过命令,不给命令做快照。合格文件仍回到这一轮开始时的内容。另一项是「不标明」 |
| 文件冲突 | 询问 | 文件已经和记录不一致时:询问、跳过,或覆盖 |
| 删除本轮新建的文件 | 开 | 关闭后,这一轮新建的文件留在原地 |
| 把原话放回输入框 | 开 | 回退对话后,把当时的用户消息放进新会话的输入框 |
| 运行中禁止改文件 | 开 | 同一工作区还有代理在跑时,不允许回退代码 |
| 保留天数 | 30 | 0 表示不按天数删除 |
| 最大存储空间 | 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/,再运行测试。测试覆盖修改前记录、失败工具、命令缺口、冲突、新建文件、排除路径、符号链接、保留上限、回合之间的手改,以及中断回退后的启动补偿。
还没有评论,来写第一条。