前言¶
在 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