前言¶
在 DeepSeek Harness(DSH)裏,插件和配置往往隨使用慢慢變多:換電腦、重裝客戶端,或想在兩臺機器上保持同一套環境時,很難靠記憶還原「裝了哪些包、什麼版本、開關和配置怎麼設」。手工導出清單再逐條安裝,既慢也容易漏。
下面介紹社區插件 插件備份(包名 dsh-plugins-git-sync,維護者 songni370)。它把用戶自行安裝的第三方插件及其版本、啓用狀態和配置,以普通 JSON 寫入你指定的 Git 倉庫,支持備份、恢復、雙向同步與按提交回滾;Token 等敏感信息不上傳,只同步經過濾的配置字段。插件在 SkillHub 分類爲聯網工具,倉庫地址:GitHub、SkillHub 目錄頁。
這是什麼¶
dsh-plugins-git-sync 是 DSH 的 Git 同步插件:用你自己的 Git 倉庫備份、恢復,並在多臺設備之間同步 DSH 插件與配置。備份內容可用 Git 工具直接查看、對比和回滾。
同步範圍僅限用戶後裝的第三方插件。DSH 內置插件、加載器內部條目(cordis:*)以及本插件自身都不會進入備份。
核心功能¶
備份與恢復¶
把本機用戶安裝的插件(版本、啓用狀態、配置)推到倉庫;換設備時按倉庫清單裝回來。
雙向同步與衝突¶
本機改動可上傳、倉庫改動可下載;兩邊都改且結果不同時會停下來讓你選擇,不自動裁決。衝突時可選擇:用本機覆蓋倉庫、用倉庫覆蓋本機,或先不處理;每個選項下方會說明會發生什麼。本機已卸載而倉庫仍有備份時,需明確選擇「從倉庫刪除」或「保留倉庫」。
同步邏輯基於本機保存的基線(base),比較 base / 本機 / 倉庫 三方:僅本機變則推送;僅倉庫變則應用到本機;兩邊都變且不同則爲衝突;本機有、倉庫沒有時會補齊倉庫,不會因此刪除本機插件;刪除倉庫條目屬於破壞性操作,確認後纔會執行。改本機前會創建快照;推送被其他設備搶先時會重新拉取並重試,不會 force push;沒有需要更改的內容時不會產生空提交。
歷史回滾¶
可按時間查看提交列表,選擇任意一次提交,將本機恢復到當時狀態。
自動同步¶
默認關閉。開啓後由事件觸發,沒有定時器:
- 打開客戶端:可配置延遲(默認 15 秒;低於 5 秒會提示可能與 DSH 啓動時的插件安裝衝突)。
- 插件安裝 / 更新 / 卸載後:防抖約 10 秒觸發一次。
自動同步遇到衝突或破壞性計劃會暫停並寫日誌,等待手動處理,不會彈窗、也不會靜默刪除。
Agent 工具¶
提供 6 個工具(名稱沿用 dsh_git_plugin_*),供 Agent 查看狀態、備份、恢復、同步、檢查差異、查歷史。破壞性操作需兩階段確認:先預覽,再帶 confirm: true 執行。
| 工具 | 作用 |
|---|---|
dsh_git_plugin_status |
查看狀態、差異數量、最近錯誤 |
dsh_git_plugin_backup |
備份到倉庫 |
dsh_git_plugin_restore |
從倉庫/歷史提交恢復 |
dsh_git_plugin_sync |
雙向同步 |
dsh_git_plugin_diff |
只讀差異預覽 |
dsh_git_plugin_history |
查看歷史提交與快照 |
安全與限制¶
- 不讀取、不上傳 Token、密碼、私鑰、Cookie;HTTPS 認證只保存環境變量名,令牌值放在環境變量中。
- 不寫機器絕對路徑;配置按敏感字段/值過濾後再寫入倉庫(盡力過濾,非嚴格白名單)。
- 每個 DSH Profile 需分別安裝、分別同步;倉庫內按
profiles/<profile>/分目錄存放。 - 本地開發插件(無 npm 安裝來源)可以記錄,其他設備無法自動安裝。
- 只同步版本/啓停/配置,不負責查最新版本或代替插件市場升級。
界面入口¶
在 設置 →「插件備份」(英文界面爲 Plugin Backup)配置;插件頁側邊欄「插件」也可顯示「備份」標籤,內容相同。頁面上提供倉庫配置、測試連接、同步 / 檢查差異 / 備份到 Git / 從 Git 恢復 等操作,以及同步狀態磁貼與自動同步開關。未配置倉庫時不會後臺同步。
安裝與啓用¶
推薦從 npm 安裝(需 Node.js >= 22.19.0,以 package.json 中 engines 爲準):
dsh plugin --profile web add dsh-plugins-git-sync@latest
也可在 DSH 插件管理器或 Agent 的 plugin_manager.install_bundle 中使用包名 dsh-plugins-git-sync。
更新:
dsh plugin --profile web update dsh-plugins-git-sync@latest
從 GitHub 源碼安裝時,spec 可爲 git+ssh://git@github.com:songni370/dsh-plugins-git-sync.git 或 HTTPS 形式 https://github.com/songni370/dsh-plugins-git-sync.git;倉庫已包含構建產物 lib/,一般無需本地構建。安裝後重啓 DSH 或刷新頁面。
插件以當前 DSH 進程權限運行;安裝前建議閱讀 源碼與 MIT 許可證,自行評估是否滿足環境要求。
典型用法¶
- 在 GitHub、GitLab 等創建私有空倉庫(建議不要勾選自動生成 README)。
- 打開 設置 →「插件備份」,填寫倉庫地址:
- HTTPS:選擇 Git 憑據助手,或選「HTTPS 令牌」並填寫保存令牌的環境變量名。
- SSH:使用系統 SSH Agent 或~/.ssh密鑰,無需在插件裏額外填寫私鑰。 - 點「測試連接」→ 保存。
- 點「同步」,第一次會生成初始備份並推送。
- 第二臺設備:安裝本插件 → 填同一倉庫與認證方式 → 保存 → 點「同步」或「從 Git 恢復」。
數據與狀態默認位於 $DSH_HOME/dsh-plugins-git-sync/(配置、狀態、日誌、工作副本、快照)。從舊目錄 $DSH_HOME/dsh-git-plugin-sync/ 升級時會自動沿用舊目錄;卸載插件不會自動刪除該目錄。
適用場景與注意¶
適合:需要在多臺機器或重裝後快速對齊 DSH 插件清單與配置、並希望通過 Git 歷史做審計與回滾的開發者。
注意:
- SkillHub 等社區目錄與 DeepSeek / 幻方無官方從屬關係,插件來自社區維護者,使用前請覈對倉庫與許可證。
- 聯網與 Git 操作依賴你配置的倉庫與憑據;自動同步無定時器,不能替代定期人工檢查衝突日誌。
- 多 Profile 環境要爲每個 Profile 單獨安裝並同步,避免誤以爲一個倉庫會覆蓋所有 Profile。
結尾¶
dsh-plugins-git-sync 把 DSH 第三方插件環境當成可版本化的 JSON 清單,交給熟悉的 Git 工作流管理,減少換機與多設備協作時的重複勞動。進一步瞭解實現細節可見倉庫內的 docs/ARCHITECTURE.md、docs/SECURITY.md。
- 目錄頁:https://www.skillhub.cn/plugins/songni370/dsh-plugins-git-sync
- GitHub:https://github.com/songni370/dsh-plugins-git-sync