在 DeepSeek Harness (DSH) 中,Agent 對工作區的修改通常難以直接撤銷。如果 Agent 走了彎路或遇到錯誤,需要一種機制能夠將狀態“回滾”到之前的檢查點,並從舊節點繼續探索。dsh-plugin-time-machine 插件正是爲此設計,它能夠協調 DSH 會話的分叉與安全的工作區檢查點。
核心功能¶
- 恢復工作區:支持預覽目標文件、衝突及外部副作用。確認後回到舊檢查點。普通新增文件隨完整恢復清理,忽略文件默認保留。
- 保留探索路徑:檢查點組成持久化 DAG(有向無環圖)。從舊節點 fork 時,保留原來的失敗分支和錯誤證據。
- 對齊會話:回滾時請求 DSH 從對應消息邊界創建會話分支,同時恢復文件。原會話歷史繼續保留。
- 記錄失敗線索:將失敗工具的摘要用於新分支的反思提示,幫助 Agent 避開已知錯誤。
- 適配非 Git 目錄:在沒有 Git 倉庫時,使用 manifest 和內容哈希保存快照。
安裝與啓用¶
安裝前請確保已安裝 DeepSeek Harness 和 pnpm,Node.js 版本需滿足 ^22.19.0 || >=24.0.0,且 DSH 版本爲 >=0.1.5-rc.2 <0.2.0 的 web profile。
執行以下命令安裝插件:
dsh plugin --profile web add github:GeoSyntax/dsh-plugin-time-machine#v0.2.0
安裝或更新後重啓 DSH。插件會通過 cordis.patch.yml 自動加入 profile 配置。
典型用法¶
- 在項目目錄啓動 DSH Web:
dsh web
- 在會話中輸入指令查看檢查點列表和分支關係:
/tm-list
/tm-tree
- 打開儀表盤頁面:
http://127.0.0.1:3088。該頁面支持中文/英文切換,用於查看檢查點詳情、文件變化和恢復預覽。DSH Web 自身默認運行在http://127.0.0.1:3080,兩者是不同的頁面。
適用場景與注意¶
- Safe 模式限制:默認
safe模式下,遇到無法驗證的用戶修改、暫存區變化或受保護的忽略文件時會拒絕覆蓋,恢復前必須查看 preview。 - 工作區共享:當前 DSH 宿主的 fork 共用工作區,不提供獨立 worktree 或容器。並行會話修改同一目錄時需注意。
- 副作用限制:文件回滾不能撤銷數據庫事務、網絡請求或雲資源變更,插件僅能記錄並提示這類副作用。
- 恢復類型區分:完整恢復和選擇性文件恢復是不同操作,需要只恢復某些文件時,應使用選擇性恢復功能。
- 插件性質:非官方社區插件。
結語¶
該插件通過 DAG 分支和失敗反思機制,爲 DSH 提供了類似時間旅行的能力。更多細節可參考 GitHub 倉庫 或 SkillHub 插件目錄。