前言¶
DeepSeek Harness (DSH) 的核心設計之一是插件化。在智能體開發過程中,模型對文件的 write 或 edit 操作,以及外部 bash/run_code 調用,往往是不可逆的。一旦出錯,需要人工介入或通過繁瑣的命令行恢復。
dsh-rollback 是一個用於 DeepSeek Harness 的文件變更回滾插件。它在插件層通過監聽工具調用結果和執行鉤子,捕獲變更前的狀態,並提供回滾能力。
插件概覽¶
- 插件名稱: dsh-rollback
- 維護者: Taler97
- 許可證: MIT
- 核心功能: 捕獲文件變更前的鏡像,支持通過工具或命令行回滾。
安裝與啓用¶
該插件以 bundle 形式提供,無需修改 Harness 核心代碼。
-
前置條件
- 確保
dshCLI 已安裝並在 PATH 中。 - 確保
pnpm已安裝並在 PATH 中(dsh plugin命令依賴它)。
- 確保
-
安裝命令
在目標 profile 下執行:
dsh plugin --profile demo add dsh-rollback
- 驗證安裝
安裝後,profile manifest 中會自動包含該 bundle。啓動 session 時,模型應當能看到rollback_files工具,或者在未發生變更前輸入/rollback能得到rollback: nothing to restore的反饋。
核心功能¶
- 變更捕獲:捕獲
write/edit工具結果中攜帶的before鏡像,以及bash/run_code調用前的 workspace 快照。 - 存儲機制:將捕獲的鏡像存儲在 workspace 的 git object database 或獨立的 snapshot store 中。
- 回滾接口:
- 模型工具:
rollback_files {count} - 用戶命令:
/rollback [count]
- 模型工具:
使用示例¶
用戶命令回滾¶
在 session 的聊天輸入中執行:
/rollback:撤銷當前 session 工作目錄中最近一次捕獲的 mutation。/rollback 3:撤銷最近三次捕獲的 mutation。
輸出會列出每個恢復的文件及其操作(如 restored 或 deleted)。
模型工具回滾¶
模型可以通過 rollback_files 工具撤銷自身的錯誤操作。該工具無 prompt section,參數爲 {count},表示回滾次數。
配置項¶
插件支持以下配置(需手動修改 profile manifest 或在 config 中指定):
- mode (
auto|git|snapshot): 存儲模式。auto: 默認。如果是 git 倉庫則用 git blob,否則用 snapshot。git: 將所有鏡像存爲 git blob(需倉庫)。snapshot: 統一存爲 snapshot 文件。
- storeDir: 存儲目錄。默認爲 Harness home 下的
rollback目錄。 - maxRecords: 內存中記錄的上限,默認 200。超出時丟棄最舊的記錄。
- gitPath: Git 可執行文件路徑,默認爲
git。 - notifyModel: 布爾值。手動回滾時是否通知模型(默認通知)。
捕獲範圍與限制¶
- 可捕獲:
write/edit(需結果帶before字段)、bash/run_code(需工作區爲 git 倉庫)。 - 不可捕獲:
str_replace_editor、非 git 倉庫下的bash調用、原始 subprocess。 - 作用域: 回滾僅限於調用 session 的當前工作目錄。
結語¶
dsh-rollback 是一個輕量級的安全網,通過 git 或 snapshot 存儲變更前的狀態,允許在智能體運行過程中安全地撤銷錯誤操作。所有代碼遵循 MIT 許可證,可在 GitHub 上查看源碼。