DeepSeek Harness 插件:DeepSeek Harness 编程会话的回退/撤销方案

前言

在使用 DeepSeek Harness (DSH) 进行编程时,智能体会在工作区中持续编辑文件。如果对话进行到中间,智能体走了弯路,想要回退到之前的某个状态,现有的 DSH 机制通常无法满足:会话日志是追加式的,无法回滚;而用户的本地 Git 仓库可能处于未提交状态,或者根本没有初始化。直接执行 git checkout 会丢弃当前所有未提交的修改,导致有效工作丢失。

DeepSeek Harness Rewind 插件旨在解决这一痛点。它通过在插件自己的影子仓库中保存快照,为每次对话回合提供“时间旅行”能力,让你能够随时将工作区恢复到之前的任意状态,且完全不会触碰你自己的 Git 仓库。

插件定位

这是一个 DeepSeek Harness (DSH) 插件。它的核心职责是自动保存工作区快照,并允许将文件系统恢复到历史任意点。插件维护者为 zoyluoblue,许可证为 MIT。

安装与启用

安装该插件需要在终端中执行以下命令。该命令会将其作为一个插件添加到你的 DSH 配置中。

npx -y @deepseek-ai/dsh plugin --profile web add @zoytown/dsh-rewind

安装完成后,需要重启 dsh 进程。重启后,在设置页面的侧边栏会出现一个 Rewind 入口。

前置条件:机器上必须安装 git。如果没有安装 git,插件会报告快照功能暂停,但其他功能不受影响。

基本用法

插件提供了命令行界面和图形界面两种方式来管理快照。

命令行操作

以下命令由 DSH 本地处理,不消耗 Token,也不会发送给模型。

命令 功能说明
/rewind 恢复上一回合的状态
/rewind 3 恢复第 3 回合结束时的状态
/rewind a1b2c3d4 通过 ID 恢复快照(ID 为 4 个以上字符的唯一前缀)
/rewind list 列出当前工作区的所有快照
/rewind save 在对话回合之外手动保存当前状态

注意:恢复操作会打印出它覆盖的快照 ID,你可以使用该 ID 再次执行恢复命令来撤销这次回退操作。

图形界面操作

进入 Settings(设置) -> Rewind(回退)页面。列表会按时间倒序列出所有快照,显示每个快照改变了哪些文件以及运行了哪些工具。点击 Restore(恢复)按钮进行恢复,系统会弹出确认对话框,明确告知哪些新文件将被删除。

工作原理与配置

存储机制

插件不会修改你本地的 .git 仓库。所有快照都存储在 $DSH_HOME/rewind/ 目录下的一个影子仓库中。这意味着即使你的项目目录不是 Git 仓库,或者没有配置 .gitignore,插件也能正常工作,并提供与 Git 仓库相同的保护级别。

文件过滤

插件严格尊重 .gitignore 配置。被忽略的文件(如 .env、node_modules、构建输出等)既不会被保存,也不会被恢复。这有助于保持快照仓库的体积,并确保恢复后这些文件保持原样。

可逆性

每次恢复操作都是可逆的。插件会在覆盖文件之前先保存被覆盖的状态,因此如果你想撤销一次错误的恢复,只需再次恢复上一个状态即可。

代理访问控制

默认情况下,插件对智能体是关闭的。你可以在配置文件中设置 exposeTool 来控制智能体是否可以使用回退功能。

  • 'off':默认值,回退功能仅限人类操作。
  • 'read-only':允许智能体查看历史列表(rewind_list),但不能恢复文件。
  • 'full':允许智能体恢复工作区文件(rewind_restore)。

清理与维护

快照数据独立于插件本身存在。如果你想释放磁盘空间,可以直接删除 $DSH_HOME/rewind/ 目录。

插件会自动清理旧会话。默认保留天数为 30,即如果会话中最新的快照超过 30 天未更新,该会话将被自动丢弃。此外,.git 目录本身始终被排除在快照之外。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜