dsh-checkpoint-dock:在 Composer 上方做逐轮文件检查点与反悔

前言

在 DeepSeek Harness(DSH)里用 agent 改代码,一轮对话常常会动多个文件。DSH 自带的「已编辑 N 个文件」卡片能说明这一轮动了什么,但它不负责「改完之后还能反悔」。若只靠手工 git checkout 或整工作区快照插件,要么依赖仓库,要么重量偏大,和「只想针对这一轮、这一个文件回退」的节奏不一定一致。

下面介绍社区插件 dsh-checkpoint-dock(维护者 c10ck-p),分类为工作流:在输入框上方提供 IDE 风格的检查点 dock,按轮次、按文件记录 agent 的写入,并支持保留、撤销、重做、回退到此;dock 内可直接看 before/after diff。插件以 MIT 许可发布,npm 包当前版本为 0.1.1(README 页 npm 徽章曾标 0.1.0,以 package.json 为准)。

这是什么

dsh-checkpoint-dock 的定位是:轻量、快、只围绕文件内容改动,不复制整工作区、不 fork 对话、不恢复配置,也不依赖 git。

与 README 中列出的同类实现对照(截至公开文档,仅机制对比):

能力 本插件 dsh-checkpoint-rewind dsh-snapshot-manager dsh-checkpoint-diff
记录范围 每轮改动的文件 工作区 + 配置 + 会话游标 整工作区 不产生快照,读取 rewind 快照
查看 diff dock 内 before/after 面板内树 diff 面板内快照 diff 任意两个检查点对比
回退能力 保留 / 撤销 / 重做 / 回退到此 /rewind、选择性恢复 文件回退 + 对话 fork 回滚(依赖 rewind)
恢复对话 / 配置 不支持 支持 支持对话 不支持
依赖 git 不依赖 git 或复制模式 不依赖 继承 rewind

需要工作区、配置、会话三态回退时,应选专门的 checkpoint / snapshot 插件;需要纯历史 diff 对比时,可看基于 rewind 的只读方案。本插件适合「逐轮接受或退回文件改动」的日常节奏。

目录页:SkillHub 插件页。SkillHub 为社区独立目录,与 DeepSeek / 幻方无官方从属关系;DSH 生态遵循「一切皆插件」,安装前请自行查看源码与许可证。

核心功能

按轮次、按文件记录

每个检查点只保存这一轮真正改过的文件,不复制对话,也不做整工作区快照。

完整的反悔链

dock 提供:保留 → 撤销 → 重做 → 回退到此,覆盖「接受这一轮」「退回这一轮之前」「恢复这一轮之后」「退回到更早某一轮」等常见意图。

要点(来自官方说明):

  • 撤销第 N 轮恢复的是「第 N 轮第一次写这些文件之前」的磁盘内容,不是「点击保留那一刻」;保留本身不改文件。
  • 保留最新一条时,会把之前所有未撤销的检查点一并标记为已保留。
  • 某检查点之后若有已保留的检查点,更早的检查点不能再单独撤销(即使两轮改的是不同文件);需整体回退时用「回退到此」。
  • 撤销 / 重做 / 回退前会校验每个文件的当前 hash;被其他工具或手工改过时会报冲突,不强行覆盖。
  • 重做只能从最早的已撤销检查点开始依次向后;中间有更新的活跃检查点时会挡住重做。
  • 回退会撤销目标之后的所有检查点,这些记录进入「已撤销」,可再按顺序重做。

查看改动

dock 内可展开 before/after diff;文件行仍可打开 DSH 的 changes-review 侧栏。

界面与多会话

  • 默认常驻在输入框上方;关闭常驻后,仅在有未处理改动时出现,处理完自动收起。
  • 检查点按会话内顺序编号;设置 → 检查点 → 总览 按 DSH 会话标题分组,多对话并行改文件时仍可区分来源。
  • 按钮、菜单、配色与设置页使用 DSH 主题变量,与内置界面一致。

数据与限制(使用前宜知晓)

  • 数据以明文保存在 $DSH_HOME/edit-checkpoints/;默认跳过 .env*、私钥及 .ssh / .aws / .gnupg 等路径,属保守策略而非加密。
  • 只捕获 DSH 文件工具发起的写入;Shell、构建、git、外部编辑器直接写盘不会进入检查点。
  • 单文件上限 4 MiB;超限文件只记近似行数,不参与安全撤销。
  • 只处理当前工作区内文件;只恢复文件字节与权限位,不恢复 mtime、目录、符号链接目标或 .git 元数据。
  • 不提供整工作区快照、对话回退或配置回退;v1 旧记录无 after 内容时,diff 与重做不可用,且不做自动迁移。

安装与启用

要求 DSH >= 0.2.2-rc.1(peerDependencies 上界为 <0.2.3-0)。Node 引擎:^22.19.0 || >=24.0.0。

从 npm 安装(desktop profile):

dsh plugin --profile desktop add dsh-checkpoint-dock

从本地目录安装:

dsh plugin --profile desktop add D:\path\to\dsh-checkpoint-dock

也可在插件页选择本地 bundle。装完后刷新页面即可看到 dock。

插件由 Host 侧(index.mjs、lib/)与客户端(client/index.js)组成:首次安装或升级后需重启一次 DSH,Host 侧才会加载;仅刷新页面只更新客户端。升级后 dock 消失时,可查 $DSH_HOME/unlag-reload.log(若安装 dsh-unlag)或 DSH 日志中 checkpoint-dock 报错。

卸载:

dsh plugin --profile desktop remove dsh-checkpoint-dock

卸载不会删除已有检查点,数据仍在 $DSH_HOME/edit-checkpoints/,需手动删目录方可清除。

插件在 DSH 进程权限下运行;安装前建议阅读仓库源码与 MIT 许可证,确认与你的工作流和合规要求一致。

典型用法

  1. 让 agent 在一轮里修改文件。
  2. 输入框上方出现对应检查点,点开可查看文件列表与 diff。
  3. 用 保留 / 撤销 / 重做 / 回退到此 处理这一轮的修改。
  4. 无检查点时 dock 自动隐藏;回看历史进 设置 → 检查点 → 总览。

关闭常驻后,仅有尚未处理的文件改动时 dock 才出现,处理完自动收起。相关设置按浏览器保存,同一台机器不同 DSH 端口共用。

存储管理:设置 → 检查点 → 存储 可查看占用与会话分布;已删除的 DSH 会话其检查点不会自动删除,会列在「已删除的会话」中由你决定是否清理。配置 页可开启「自动清理检查点」并选择保留最近 10–200 条(钉住的检查点不会被清理)。

适用场景与注意

适合:频繁让 agent 逐轮改代码、需要在不依赖 git 的前提下快速接受或退回单轮文件改动的开发者。

不适合:需要恢复对话游标、应用配置或整工作区快照的场景——应使用 README 对照表中的 snapshot / rewind 类插件。

注意:跨会话保护仅在撤销 / 重做 / 回退时检查,两路会话仍可能同时写同一文件;要彻底避免竞态需工作区级写入串行化。撤销 / 回退为覆盖式恢复,不会删除本轮之外新建的文件。

结尾

dsh-checkpoint-dock 补的是 DSH 默认「能看见改了什么、但不好按轮反悔」的空档:轻量、按文件、dock 内即可 diff 与回退。安装命令以 npm 包名 dsh-checkpoint-dock 为准,升级后记得重启 DSH。

  • 目录页:https://www.skillhub.cn/plugins/c10ck-p/dsh-checkpoint-dock
  • 源码与文档:https://github.com/c10ck-p/dsh-checkpoint-dock
羽毛球分组比赛记分
小程序二维码

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

Xiaoye