前言¶
在 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 许可证,确认与你的工作流和合规要求一致。
典型用法¶
- 让 agent 在一轮里修改文件。
- 输入框上方出现对应检查点,点开可查看文件列表与 diff。
- 用 保留 / 撤销 / 重做 / 回退到此 处理这一轮的修改。
- 无检查点时 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