dsh-undo-savepoint:DSH 崩潰自救插件,配置與插件代碼一鍵回滾

前言

DeepSeek Harness(以下簡稱 dsh)是 DeepSeek 開源的智能體運行時,核心理念是「一切皆插件」:模型、工具、會話、沙箱,連網頁界面本身,都可以用插件增刪。目前它仍處於開發者預覽階段,接口會繼續變動。社區裏有人整理了插件目錄 SkillHub 插件庫,方便按分類查找安裝命令;該目錄是獨立站點,與 DeepSeek / 幻方沒有官方從屬關係,收錄條目需要自行覈對源碼。

玩 dsh 久了,難免遇到這類事故:裝了個插件把 cordis.patch.yml 改壞了、AI 幫你改了插件源碼結果起不來、.env 被誤改導致鑑權失敗,甚至 DSH 直接崩潰進不去。Git 能救一部分,但配置散落在 profile 目錄和家目錄,插件代碼樹也可能不在版本控制裏。如果你希望「改壞了能撤銷、起不來還能自救」,可以看看社區插件 dsh-undo-savepoint

這是什麼

dsh-undo-savepoint 是一款面向 dsh 的撤銷 / 回退 / 快照系統,由 lire1131 維護,倉庫地址爲 lire1131/dsh-undo-savepoint。在 SkillHub 插件庫 中歸類爲 admin-security(管理與安全)。許可證是 MIT,運行時要求 Node.js ≥ 20;package.json 裏的版本號爲 0.4.1。截至 2026-08-25,GitHub 與 SkillHub API 均顯示約 125 星、4 forks。

它做的事情可以概括成三層:

  1. 局內快照與撤銷:對 dsh 啓動關鍵配置(cordis.patch.ymlpackage.jsonsettings.yaml.env 等)和用戶插件代碼樹做自動 / 手動快照,支持 undo、redo、回退到任意歷史版本。
  2. 密鑰安全.env、憑據類文件進快照時自動脫敏,導出 ZIP 不泄露明文;真實值存本機 vault,本機回滾可完整還原。
  3. 局外急救:DSH 完全起不來時,仍可通過離線 WebUI、GUI 窗口或 CLI 操作時間線、回滾、安全模式與診斷——不依賴 dsh 進程在跑。

它不是給模型加工具,也不改智能體的推理邏輯;核心是保護你的 dsh 環境與插件生態不被一次誤操作拖垮

核心功能與亮點

倉庫 README 與 SkillHub 目錄描述一致,主要能力如下。

1、配置 + 插件代碼一鍵回滾。 快照覆蓋 profile 下的 cordis.patch.ymlpackage.jsonpnpm-lock.yaml 等,以及 $DSH_HOME 下的 settings.yaml.env.credentials.yaml,同時包含用戶插件代碼樹。改壞任何一處都能撤銷;支持 undo / redo / 回退到指定版本,入口包括 WebUI 面板、對話指令和離線 CLI。

2、消息級撤銷。 按 AI 消息(或 60 秒批次)記錄工作區文件變更,可在對話頭部打開「對話撤回」面板,回滾「這條消息改了什麼」。不依賴 git,也不碰會話存儲;可在設置裏配置「跟蹤工作區目錄」。

3、密鑰脫敏 + 本機 vault。 快照裏 .env 等敏感字段結構保留、值脫敏;導出 ZIP 零泄露。本機回滾時從 vault 還原真實值。

4、一鍵安全模式(SAFE MODE)。 DSH 完全起不來時,可禁用除本插件外的全部用戶插件,保證能啓動;同時自動快照並備份 profile / home 雙級 patch。退出安全模式後,再逐個排查問題插件。

5、崩潰歸因與會話修復。 異常退出時,界面橫幅會提示「最後正常快照」並給出一鍵回退;按日誌簽名分類崩潰原因(如 session-corruptbundle-checkpatch-tree)。undo_scan 可掃描並修復部分 session.jsonl.zstd 佈局問題;DSH 起不來時可用離線 dsh-undo.ps1 scan --fix(需 Node ≥ 22.15)。

6、快照時間線(Time Machine)。 快照按日期分組,支持備註 / 標籤、文件級 diff(新增 / 刪除行高亮)、逐文件瀏覽後一鍵回滾。另有定時快照、孤兒 blob 清理(undo_compact)、ZIP 導出 / 導入(可選 AES-256-GCM 加密)。

7、局外急救工具鏈。 DSH 掛了也能用:純本地 undo-server WebUI(127.0.0.1)、GUI 窗口、PowerShell / shell CLI,以及插件加載後自動創建的桌面快捷方式。Windows、macOS、Linux 三平臺均可用。

8、多 Profile 與自定義家目錄。 從啓動參數識別當前 profile,快照按 profile 隔離;DSH_HOME 解析與官方啓動器一致,第三方客戶端不再出現「兩套家分裂」。

安裝與啓用

前置條件:已安裝 dsh(@deepseek-ai/dsh)與 Node.js(≥ 20)。

GitHub README 給出的推薦安裝命令如下,在終端執行:

dsh plugin --profile web add github:lire1131/dsh-undo-savepoint#master

dsh CLI 會從 GitHub 解析插件並裝進當前 profile。來自 GitHub 的插件安裝時可能執行代碼,插件也會以當前 dsh 進程的權限運行。安裝前應先看倉庫源碼和 MIT 許可證;只裝自己信任的來源。若要可復現安裝,可以固定 commit 哈希。本文覈對 SkillHub API 時,master 分支最新提交是 7d21c941a06ef46508e96aa0bd33e5af65488d8b,可以寫成:

dsh plugin --profile web add github:lire1131/dsh-undo-savepoint#7d21c941a06ef46508e96aa0bd33e5af65488d8b

哈希會隨倉庫更新變化,安裝前到 GitHub 再確認一次更穩妥。

安裝完成後重啓 DSH 即生效;會話頭部會出現撤銷 / 恢復 / 快照等按鈕,設置裏也會多出「快照」獨立欄目。

若不想走 dsh plugin add,README 還提供了本地 clone + junction 的手動掛載方式(Windows 示例):把倉庫 clone 到本地插件目錄,對 DSH 的 node_modules 建 junction,再在 <DSH_HOME>\profiles\web\cordis.patch.yml 追加:

- insert:
    - id: dsh-undo-savepoint
      name: dsh-undo-savepoint

保存後 host 部分可熱加載;完整穩態建議重啓 DSH。

典型用法示例

DSH 內日常操作

  • 撤銷:頭部「撤銷」按鈕 / Ctrl+Alt+Z / 對 AI 說「撤銷上一步」。
  • 恢復:「恢復」按鈕 / Ctrl+Alt+Y(僅當撤銷後沒有新操作)。
  • 手動保存:面板「手動保存」/ 對 AI 說「保存快照」。
  • 回退到指定版本:面板點「回退到此版本」;或對 AI 說「回退到 \<id>」;或 CLI restore -Id <id>
  • 消息級撤銷:對話頭部「對話撤回」,選擇消息批次撤回其文件改動。

快照參數(自動保存開關、防抖、保留數量、敏感模式、跟蹤工作區目錄等)在 設置 → 通用 → 快照設置 中調整。

局外 WebUI(DSH 掛了也能用)

進入插件安裝目錄下的 tools/,執行:

node tools/undo-server.mjs

也可雙擊 launch-undo.bat(Windows)、.command(macOS)或 .sh(Linux)。會拉起純本地服務器 + 內置網頁,提供時間線、回滾、對比、安全模式與診斷。插件加載後還會在桌面創建「dsh-undo-savepoint」快捷方式。

離線 CLI 示例(Windows PowerShell)

powershell -NoProfile -ExecutionPolicy Bypass -File "tools\dsh-undo-savepoint.ps1" list
powershell -NoProfile -ExecutionPolicy Bypass -File "tools\dsh-undo-savepoint.ps1" snapshot -Label "改插件前"
powershell -NoProfile -ExecutionPolicy Bypass -File "tools\dsh-undo-savepoint.ps1" undo
powershell -NoProfile -ExecutionPolicy Bypass -File "tools\dsh-undo-savepoint.ps1" restore -Id <id> -Force
powershell -NoProfile -ExecutionPolicy Bypass -File "tools\dsh-undo-savepoint.ps1" safe-mode -Label on

恢復涉及 package.json / pnpm-lock.yaml 時,若需要真正重建 node_modules,可加 -SyncDeps 參數。

崩潰急救速查

場景 建議操作
配置 / 插件被改壞 WebUI / 對話 / CLI:undorestore -Id <id>
DSH 完全起不來 局外工具 → 安全模式 → 重啓 DSH
上次異常退出不知回退到哪 橫幅顯示 last-good 快照,一鍵回退
會話文件損壞 undo_scan 或離線 dsh-undo.ps1 scan --fix
跨機恢復後缺插件 恢復報告會預檢提示;先裝插件或進安全模式

常見事故:DSH 啓動報 duplicate loader entry id 之類錯誤 → 打開「DSH撤銷管理器」選中出問題前的快照 → 回退 → 重啓 DSH,一般不必重裝、不丟會話。

適用場景與注意事項

比較適合這幾類人:

  • 經常試裝社區插件、改 cordis.patch.yml 的 dsh 深度用戶;
  • 讓 AI 直接改插件源碼,擔心一次 yield 事故把環境搞掛的開發者;
  • 需要在多臺機器間遷移 dsh 配置、又希望導出時不泄露密鑰的團隊;
  • 已經遇到過 DSH 崩潰、會話損壞,想要「最後一道保險」的場景。

使用時有幾點需要注意。

第一,插件以當前 dsh 進程權限運行,能讀寫 $DSH_HOME 下的配置與快照目錄。安裝前檢查源碼倉庫和 MIT 許可證;社區目錄不是官方應用商店,收錄不等於官方背書。

第二,快照含 .env 等配置副本,本機 vault 存真實密鑰——不要把快照 ZIP 隨意外傳。導出時已做脫敏,但本機存儲仍應妥善保管。

第三,撤銷語義與「恢復最新存檔」不同:自動快照在變更之後生成,真實撤銷是回退到與當前狀態內容不同的最新快照;全部相同時會提示「沒有可撤銷的變化」。恢復 cordis.patch.yml 後,插件會自動檢查並重新寫入自身掛載條,避免把自己撤銷掉。

第四,恢復涉及依賴變更時,默認只報告 node_modules 可能不同步;需要真正重建時顯式加 -SyncDeps(CLI)或對應 REST / 對話參數。

第五,局外 undo_scan 的完整修復能力在 Node ≥ 22.15 上更完整;Node 20 下部分功能會降級爲提示。v0.4.0 起核心邏輯抽取爲純 Node 零依賴模塊,三平臺 CI 矩陣覆蓋 windows / ubuntu / macos × node[20,22]

小結

dsh-undo-savepoint 給 dsh 補了一套「時光機」:裝插件、改配置、動插件代碼都有快照可回滾;密鑰脫敏、安全模式、局外 WebUI / CLI 則覆蓋「DSH 已經起不來」的極端情況。對經常折騰插件生態的開發者來說,這是 admin-security 分類裏值得先裝上的自救工具。

安裝命令以 GitHub README 爲準:

dsh plugin --profile web add github:lire1131/dsh-undo-savepoint#master

目錄詳情頁:https://www.skillhub.cn/plugins/lire1131/dsh-undo-savepoint

GitHub 倉庫:https://github.com/lire1131/dsh-undo-savepoint

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜