前言¶
在 DeepSeek Harness(DSH)裏用插件擴展能力時,常見做法是直接改安裝目錄裏的文件,或等上游發版。插件更新、重裝或 dsh 升級後,手改內容容易丟;內置插件想長期 fork 一份也不方便回滾。社區插件 dsh-local-plugins 把「已編輯的 dsh 插件」放在本地 Git 倉庫裏管理,只有在你 Commit 並通過校驗後,才通過原子 symlink 交換把某一版快照部署到 dsh 實際加載路徑;未 Apply 前 dsh 仍跑舊版。
這是什麼¶
維護者 ishanshmalviya5 在 GitHub 發佈 dsh-local-plugins(npm 包名同目錄名,當前版本 0.2.1,MIT)。SkillHub 分類爲工作流;簡介爲:Keeps edited dsh plugins as local git repos; deploys committed snapshots via atomic symlink swap.
一句話:第三方插件和內置插件都可以遷到 ~/.dsh/local-plugins/<plugin> 做 Git 版本管理,用界面或流程 Commit → Apply,在不影響當前運行版的前提下試改、合併上游、回滾。
核心功能¶
下面能力均來自項目 README,按使用意圖歸納。
| 你想做的事 | 界面/操作 | 結果 |
|---|---|---|
| 修 bug 或微調並長期保留 | + Add → Migrate,編輯,Commit,Apply | 改動在 dsh 中生效,更新與重裝後仍可恢復 |
| 拉作者新版本且保留自己的 diff | Update | 合併新版本與你的修改;同一行衝突時由你決定如何處理 |
| 改壞了要退回 | Deploy older commit… | 立即切到更早的 commit |
| 定製內置能力(如 model provider) | 對內置插件同樣 Migrate | 跑你的版本;Unlink 可恢復原版 |
| 讓智能體在安全邊界內改插件 | Work on it | 在插件目錄內打開上下文;智能體不能替你 Apply |
| dsh 升級或重裝後恢復定製 | Reapply all | 重新掛上你的本地版 |
| 鎖定某一發行版 | + Add 時填 name@1.2.3 或 …#v1.2.0 等 |
固定版本,不會自行漂移 |
| 看清相對原版改了什麼 | 卡片摘要 | 例如「3 files changed vs original」及當前運行狀態 |
狀態標籤(節選):Applied(已跑最新提交)、Changes pending(需 Commit 再 Apply)、Update available、Conflict、Link lost / Reapply required、Broken(Repair installation)、Disabled(崩潰後被禁用)、Not applied(僅跟蹤未切換)。
安全與可控性(README 強調):安裝/構建腳本默認需你批准;只有構建與檢查通過的完整版本纔會被切換上線;Apply 失敗時不會誤切,並提示下一步;Unlink、Delete、回滾會把工作移到可恢復位置(Delete 進 ~/.dsh/local-plugins/.trash/)。
安裝與啓用¶
環境要求:git、npm、Node 26 或更新;操作系統爲 macOS(Apple Silicon)或 Linux(Windows 明確不支持)。與 dsh 0.2.0-rc.2 構建測試;從 0.1 升級無需額外遷移步驟。
- 在終端執行(若 profile 不是
web,把web換成你的 profile 名):
dsh plugin --profile web add github:ishanshmalviya5/dsh-local-plugins
-
重啓 dsh web。
-
打開 Settings → Local Plugins。
典型用法:第一次定製¶
- + Add → Migrate,選擇已在用的插件;此前手改過的內容會作爲起點保留。
- 在
~/.dsh/local-plugins/<plugin>編輯,或點 Work on it 與智能體協作修改。 - Commit,再 Apply,然後重啓 dsh web。
整個閉環裏,在點擊 Apply 之前 dsh 不會加載新樹;若新版本無法構建或未通過檢查,當前運行版保持不變。
作者發新版:Check now 或啓動後自動檢查 → Update available → Update;衝突文件可 Fix with agent 後 Finish update,或 Abort;全程未 Apply 前運行版不變。
dsh 完全起不來:在終端執行(README 給出的恢復命令):
node ~/.dsh/local-plugins/.deployed/dsh-local-plugins/scripts/undo.mjs --all
不再定製某插件:先 Unlink (restore original),可選 Delete…(工作進 .trash/,可 Repair installation 恢復)。
本地目錄是普通 Git 倉庫,可自行 git remote add 並 push 備份。
適用場景與注意¶
適合誰:需要長期 fork 或 patch 社區插件、內置插件;要在上游更新時保留私有改動;希望 commit 級回滾與「僅 Apply 才上線」的 DSH / 智能體開發者。
兼容性(0.2.1):macOS + Node 26 已在真實 dsh 上端到端驗證;Linux(Ubuntu)+ Node 26 在 CI 中 lint/單測/包檢查通過,README 註明尚未在真實 dsh 上完整端到端手測;Node 22/24 不在支持範圍。
權限與安全:插件隨當前 dsh 進程權限運行;安裝前請閱讀 Security 與源碼、MIT 許可證。若某個插件在 dsh-local-plugins 加載之前 就導致 dsh 崩潰,本插件無法自修復,需依賴上述 undo.mjs。
DSH 生態強調「一切皆插件」;SkillHub 目錄頁 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-local-plugins 把插件定製從「改安裝樹、怕丟改動的臨時操作」變成「本地 Git + 原子部署」的工作流:Migrate、Commit、Apply 閉環,Update 與衝突處理、Reapply、Repair 與 trash 恢復覆蓋升級與事故場景。