DSH(DeepSeek Harness)採用“一切皆插件”的架構,配置管理(如已安裝的插件、settings.yaml)分散在本地文件中。在多臺設備間遷移配置,或者定期備份當前工作環境,通常需要手動複製 package.json 等配置文件。
dsh-market-gist-autosync 插件解決了這個問題。它把 DSH 的當前 Profile 配置打包爲 GitHub 私有 Gist,支持定時備份和合並恢復,備份格式與插件市場(dshmarket)完全兼容。
核心功能¶
- 備份與存儲:將當前 profile 的配置備份爲私有 Gist。插件會自動識別運行環境(desktop 或 web),備份內容會剝離機器本地依賴(如
link:C:/Users/...),確保備份文件可移植。 - 定時備份:支持分鐘/小時粒度的定時任務。注意,定時備份僅在 DSH 運行期間執行,電腦休眠時不備份也不補跑。同一進程內的定時任務與手動備份互斥,防止併發衝突。
- 合併恢復:恢復配置時採用合併語義,保留已安裝的插件,不會刪除現有配置。恢復後會自動執行
pnpm install,若依賴安裝失敗會自動回滾。 - 啓動預檢:恢復完成後,插件會檢查每個 bundle 的可解析性。對於本機無法解析的 bundle(例如來自另一臺機器的
link:依賴),會從 profile 中移除並報告,避免恢復後因啓動失敗進入恢復模式。 - 上傳記錄:記錄最近 20 條上傳歷史,存儲在 dsh-storage 域,支持一鍵清空。記錄包含狀態標記和錯誤原因。
- 容錯與安全:支持 Gist URL 容錯;請求防卡死機制(AbortSignal 雙保險);Token 明文保存在本地,支持環境變量
DSH_GITHUB_TOKEN優先。
安裝與啓用¶
使用官方 CLI 安裝:
dsh plugin --profile desktop add dsh-market-gist-autosync # 桌面端
dsh plugin --profile web add dsh-market-gist-autosync # 網頁版(dsh web)
安裝後,在 DSH 的 設置 → Gist 備份 頁面進行配置。
配置與使用¶
1. 準備 GitHub Token¶
在設置頁面輸入 GitHub Token。Token 僅用於訪問你的私有 Gist。出於安全考慮,推薦使用環境變量 DSH_GITHUB_TOKEN 代替在界面中直接填寫。Token 會被保存在本地配置文件中。
2. 配置備份目標¶
- Gist ID:輸入已存在的 Gist ID 或 URL。留空則每次手動備份時自動新建一個私有 Gist。
- 定時備份:勾選開啓後,設置間隔數值和單位(
hour或minute)。配置保存後即時生效。 - 包含鎖文件:如需備份
pnpm-lock.yaml以精確復現依賴版本,可在設置中勾選includeLock。
3. 執行恢復¶
在設置頁面的“恢復”區域輸入 Gist ID 或 URL。點擊恢復後,插件會執行以下步驟:
1. 下載並校驗備份結構。
2. 原子寫回配置文件。
3. 合併 package.json 依賴與現有插件。
4. 自動安裝缺失依賴。
5. 執行啓動預檢,剔除無法解析的 bundle。
6. 重啓 DSH 生效。
技術細節與注意事項¶
- 多 Profile 識別:插件自動識別當前運行的是 desktop 還是 web profile。注意,桌面端和網頁版共享同一份本地配置文件(
$DSH_HOME/gist-autosync/config.json)。如果兩端同時開啓定時備份且都正在運行,可能會併發上傳導致後寫入者覆蓋前寫入者。 - 備份內容限制:備份內容會自動排除
node_modules、.dsh-market、.git、符號鏈接等目錄。單次備份限制爲 256 個文件或 1MB。 - 啓動預檢機制:DSH 啓動時遇到第一個無法解析的包名就會失敗。該插件在恢復後主動進行預檢,將“確實不存在”的 bundle 移除並報錯,避免用戶重啓後才發現配置損壞。
- 數據安全:備份內容存儲在私有 Gist 中,但 Gist 本身是私有的。請勿將包含 API Key 的敏感文件備份到 Gist,儘管 Gist 默認是私有的。