前言¶
在使用 DeepSeek Harness (DSH) 進行編程時,智能體會在工作區中持續編輯文件。如果對話進行到中間,智能體走了彎路,想要回退到之前的某個狀態,現有的 DSH 機制通常無法滿足:會話日誌是追加式的,無法回滾;而用戶的本地 Git 倉庫可能處於未提交狀態,或者根本沒有初始化。直接執行 git checkout 會丟棄當前所有未提交的修改,導致有效工作丟失。
DeepSeek Harness Rewind 插件旨在解決這一痛點。它通過在插件自己的影子倉庫中保存快照,爲每次對話回合提供“時間旅行”能力,讓你能夠隨時將工作區恢復到之前的任意狀態,且完全不會觸碰你自己的 Git 倉庫。
插件定位¶
這是一個 DeepSeek Harness (DSH) 插件。它的核心職責是自動保存工作區快照,並允許將文件系統恢復到歷史任意點。插件維護者爲 zoyluoblue,許可證爲 MIT。
安裝與啓用¶
安裝該插件需要在終端中執行以下命令。該命令會將其作爲一個插件添加到你的 DSH 配置中。
npx -y @deepseek-ai/dsh plugin --profile web add @zoytown/dsh-rewind
安裝完成後,需要重啓 dsh 進程。重啓後,在設置頁面的側邊欄會出現一個 Rewind 入口。
前置條件:機器上必須安裝 git。如果沒有安裝 git,插件會報告快照功能暫停,但其他功能不受影響。
基本用法¶
插件提供了命令行界面和圖形界面兩種方式來管理快照。
命令行操作¶
以下命令由 DSH 本地處理,不消耗 Token,也不會發送給模型。
| 命令 | 功能說明 |
|---|---|
/rewind |
恢復上一回合的狀態 |
/rewind 3 |
恢復第 3 回合結束時的狀態 |
/rewind a1b2c3d4 |
通過 ID 恢復快照(ID 爲 4 個以上字符的唯一前綴) |
/rewind list |
列出當前工作區的所有快照 |
/rewind save |
在對話回合之外手動保存當前狀態 |
注意:恢復操作會打印出它覆蓋的快照 ID,你可以使用該 ID 再次執行恢復命令來撤銷這次回退操作。
圖形界面操作¶
進入 Settings(設置) -> Rewind(回退)頁面。列表會按時間倒序列出所有快照,顯示每個快照改變了哪些文件以及運行了哪些工具。點擊 Restore(恢復)按鈕進行恢復,系統會彈出確認對話框,明確告知哪些新文件將被刪除。
工作原理與配置¶
存儲機制¶
插件不會修改你本地的 .git 倉庫。所有快照都存儲在 $DSH_HOME/rewind/ 目錄下的一個影子倉庫中。這意味着即使你的項目目錄不是 Git 倉庫,或者沒有配置 .gitignore,插件也能正常工作,並提供與 Git 倉庫相同的保護級別。
文件過濾¶
插件嚴格尊重 .gitignore 配置。被忽略的文件(如 .env、node_modules、構建輸出等)既不會被保存,也不會被恢復。這有助於保持快照倉庫的體積,並確保恢復後這些文件保持原樣。
可逆性¶
每次恢復操作都是可逆的。插件會在覆蓋文件之前先保存被覆蓋的狀態,因此如果你想撤銷一次錯誤的恢復,只需再次恢復上一個狀態即可。
代理訪問控制¶
默認情況下,插件對智能體是關閉的。你可以在配置文件中設置 exposeTool 來控制智能體是否可以使用回退功能。
'off':默認值,回退功能僅限人類操作。'read-only':允許智能體查看歷史列表(rewind_list),但不能恢復文件。'full':允許智能體恢復工作區文件(rewind_restore)。
清理與維護¶
快照數據獨立於插件本身存在。如果你想釋放磁盤空間,可以直接刪除 $DSH_HOME/rewind/ 目錄。
插件會自動清理舊會話。默認保留天數爲 30,即如果會話中最新的快照超過 30 天未更新,該會話將被自動丟棄。此外,.git 目錄本身始終被排除在快照之外。