dsh-local-plugins:在本地 Git 倉庫裏改插件,用原子 symlink 切換上線

前言

在 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 升級無需額外遷移步驟。

  1. 在終端執行(若 profile 不是 web,把 web 換成你的 profile 名):
dsh plugin --profile web add github:ishanshmalviya5/dsh-local-plugins
  1. 重啓 dsh web。

  2. 打開 Settings → Local Plugins。

典型用法:第一次定製

  1. + Add → Migrate,選擇已在用的插件;此前手改過的內容會作爲起點保留。
  2. 在 ~/.dsh/local-plugins/<plugin> 編輯,或點 Work on it 與智能體協作修改。
  3. 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 恢復覆蓋升級與事故場景。

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

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

小夜