前言¶
在 DSH(DeepSeek Harness)的插件生態中,開發者可以通過插件擴展 Host 行爲、命令和 WebUI 行爲。社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係,不應把它寫成官方應用商店。
對使用 dsh 做多步工具任務的開發者來說,一個具體問題是:模型會按真實用戶消息推進會話,工具也可能在某一輪修改工作區文件。如果某輪之後需要回退,只刪除可見文本通常不夠,還需要把可見 surface 和工作區文件恢復到對應邊界。dsh-undo 針對這個邊界提供撤銷/重做能力。
這是什麼¶
dsh-undo 是 DeepSeek Harness(dsh)的持久化多步上下文撤銷/重做插件。它按真實用戶消息回退可見 surface,並恢復所選用戶輪次中工具修改的工作區文件。
倉庫線索指向 LingLambda,許可證爲 MIT,package.json 顯示版本爲 0.3.0-preview.1。已覈實資料中對維護者的標註不明確:GitHub 路徑與 homepage 線索爲 LingLambda,但未明確標註 maintainer。
重要限制:該發佈是 forward-looking preview,當前不可用於任何已發佈的 DeepSeek Harness 版本。它依賴未發佈 Harness 支持 durable surface/rewind / surface/restore events 和 conversation.chat.user-actions WebUI slot。在當前狀態安裝後,/undo 會 fail closed 並顯示升級提示。
核心功能¶
本地撤銷與重做命令¶
插件提供本地命令,且這些命令不發送給模型:
/undo:回退最新可見真實用戶消息及其後所有 surface 消息。/undo <user-seq>:從指定可見用戶消息回退,幷包含後續輪次。/redo:恢復最新活動回退。重複 undo/redo 使用 LIFO 順序。
會話重放與持久化¶
插件通過追加 durable surface/rewind 與 surface/restore 控制事件實現 undo/redo,而不是替換原始消息。它會保留原始消息節點、消息 ID、tool-call 關聯和日誌事件。
會話重放可重建相同的可見 surface 與 redo 堆棧。
新的普通 surface 輸出會使活動 redo 歷史失效。
工作區文件恢復¶
插件在隔離的隱藏 Git 目錄中記錄工具執行前後的工作區樹:
~/.dsh/dsh-undo/snapshots/
它不創建提交、不切換分支、不修改倉庫自身 Git index。
文件恢復的範圍是:
- 僅針對所選用戶輪次中工具觸碰的文件;
- 支持 tracked 文件和不超過
2 MiB的 untracked 文件; - 限制在檢測到的 Git workspace 根內,從不恢復根外文件。
patch 與 redo 元數據按 session 存儲,使文件 redo 可在 Host 重啓後繼續。兩階段日誌用於協調重啓後中斷的文件操作。
WebUI 動作¶
WebUI 客戶端爲已確認的真實用戶消息氣泡提供 undo action。點擊後調用 /undo <user-seq>;Host 會驗證目標仍爲合法回退目標。
後臺任務處理¶
插件將頂層工具返回的 background jobs 關聯到其 user turn。undo 請求終止被移除輪次啓動的 jobs。
注意以下邊界:
- 通過嵌套工具分派或子代理啓動的 background jobs 可能不關聯到根 user turn。
- undo 只向頂層 background jobs 發送終止信號,不無限等待進程退出。
安裝與啓用¶
先確認你對當前版本狀態有預期:它依賴尚未發佈的 Harness 能力,今日安裝會使 /undo fail closed 並顯示升級提示。如果你只是爲了預覽和協調未來集成,可以按下面已覈實資料給出的 npm 示例安裝:
dsh plugin --profile demo add dsh-undo
這裏只採用已覈實資料中的 npm 示例;資料中也存在 git 安裝原文,但未指定唯一官方安裝命令。插件會以當前 dsh 進程權限運行,因此安裝前應檢查源碼與許可證。
典型用法¶
基本命令如下:
/undo
/undo 42
/redo
用法:
1、/undo 回退最新真實用戶輪次。
2、/undo 42 從指定 user-seq 回退,包括所有後續輪次。
3、/redo 恢復最新活動回退。
4、在 WebUI 中,也可以在舊用戶消息氣泡上點擊 undo action,調用 /undo <user-seq>。
適用場景與注意¶
適合在以下情況考慮:
- 你使用 dsh 運行多輪工具任務,希望按真實用戶消息邊界回退會話表面。
- 你希望撤銷時同時恢復工具在該輪次中修改的工作區文件。
- 你在 WebUI 中對已確認的真實用戶消息氣泡做回退。
需要注意:
1、當前發佈不可用於任何已發佈的 DeepSeek Harness 版本;舊版 Harness 會 fail closed,提示需要兼容的 Harness 升級,而不是寫入替換 assistant 消息或複製 transcript events。
2、網絡請求、數據庫寫入、遠程 API 調用、已退出進程及其他外部效應無法撤銷。
3、文件恢復只覆蓋檢測到的 Git workspace 根內文件,且 untracked 文件限制爲不超過 2 MiB。
4、background jobs 關聯和終止只針對頂層工具返回的任務,且不會無限等待進程退出。
5、新的普通 surface 輸出會使活動 redo 歷史失效。
6、插件以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證。
結尾¶
dsh-undo 的價值在於把“撤銷”落到真實用戶輪次上:既回退 DSH 的可見 surface,也嘗試恢復工具在該輪次中修改的工作區文件。當前資料表明它仍是 preview,需要等待匹配的 Harness 發佈;安裝前應先確認版本兼容性和權限邊界。
目錄頁(來自插件線索,未從已抓取資料確認):https://www.skillhub.cn/plugins/LingLambda/dsh-undo
GitHub:https://github.com/LingLambda/dsh-undo