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
羽毛球分组比赛记分
小程序二维码

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

小夜