dsh-plugin-capabilities:把技能與 MCP 服務器管理搬進 dsh 設置頁

前言

用 dsh 做開發時,技能和 MCP 服務器的配置大多落在文件裏:技能是各個 SKILL.md,MCP 服務器寫在 profile patch 或全局補丁的 YAML 行中。想臨時停用一個技能、改一條服務器參數,就得離開界面去手工編輯;如果同時還用 Claude Code 或 Codex,同一批技能和 MCP 配置還要再維護一份。dsh-plugin-capabilities 解決的就是這兩個問題:在 dsh 設置頁裏管理技能與 MCP 服務器,並支持從其他 agent 一鍵導入。下面按功能、安裝、典型用法的順序介紹。

這是什麼

dsh-plugin-capabilities 是 qinyre 維護的 dsh 插件,MIT 許可,package.json 中版本號爲 0.3.10。它在設置頁新增一級分區「技能與 MCP」(與「通用設置」「模型」並列),內含「技能」「MCP」「市場」三個標籤頁,dsh web 與 DSH Desktop 均可使用。

核心功能

技能:目錄、編輯與加載開關

「技能」標籤頁列出 dsh 當前發現的全部技能,包括名稱、描述、來源與調用策略。用戶級技能存放在 $DSH_HOME/skills,可以在頁面裏新建、編輯、刪除;0.3.4 起,從市場或本地倉庫安裝的技能也能就地編輯。

每張技能卡片上的開關控制該技能是否加載:關閉時,插件在這個技能的 SKILL.md frontmatter 裏寫入:

disable-model-invocation: true
user-invocable: false

文件其餘內容不動;重新打開則恢復默認策略。項目目錄和內置包等來源的技能以只讀方式展示,運行時註冊、沒有文件的技能沒有開關。

從 Claude Code 與 Codex 同步技能

如果機器上存在 ~/.claude/skills 與 ~/.codex/skills,它們會作爲額外的掃描根自動進入技能目錄。文件不會被複制,改動留在原地,兩邊即時同步。

技能倉庫:本地目錄與 GitHub

技能倉庫支持兩類來源:

  • 本地目錄:直接掃描;
  • GitHub 倉庫:地址支持 https://github.com/owner/repo 與 owner/repo,可用 #分支 或 /tree/分支 鎖定版本,經 GitHub tarball 接口下載解包,機器上不需要安裝 git。

倉庫記錄持久化在 $DSH_HOME/dsh-plugin-capabilities/state.json,隨時可以備份或手工修正。

自帶的兩條只讀技能

插件自帶兩條只讀技能,隨插件裝卸,不向 DSH_HOME 寫入文件:

  • skill-creator:來自 anthropics/skills,Apache-2.0;
  • find-skills:來自 vercel-labs/skills,MIT。

MCP:兩層服務器行的管理

「MCP」標籤頁管理兩層中的 MCP 服務器行:當前 profile 的 patch,以及全局補丁 DSH_HOME/cordis.patch.yml,支持 stdio 與 streamable-http 兩種傳輸。每行帶兩個動作:

  • 「檢查」:不啓動服務器——stdio 行在 PATH 裏確認命令是否存在,http 行發一個短超時的 GET;
  • 「複製到另一層」:把整行配置搬去另一層,不必刪掉重配。

從其他 agent 導入 MCP 配置

支持從 Claude Code、Codex、Cursor、Gemini CLI 一鍵掃描導入 MCP 配置;也可以把 JSON(mcpServers 形狀)粘進輸入框,點「解析並填充」。兩個注意點:

  • Gemini 的 SSE 條目不支持,dsh 的客戶端不認這種傳輸;
  • Claude 配置裏的 ${VAR} 環境變量引用按字面值導入,導入後需要手動改回。

市場

「市場」標籤頁分技能市場與 MCP 市場兩部分,條目均可一鍵安裝/添加;0.3.0 起點開條目可看詳情;已安裝的條目可以直接卸載。

變更生效:頁面內重啓

MCP 行的變更需要重啓 dsh 纔會進入組合,MCP 頁頭部爲此提供了常駐的「重啓」按鈕:在 DSH Desktop 中重啓 sidecar 後自動刷新;直接運行 dsh web 時,插件會拉起一個替代進程再退出自身,頁面恢復後自動刷新。重啓會中斷正在進行的回合,點擊後會先彈確認。

安裝與啓用

DSH 的理念是「一切皆插件」,這個插件本身也通過 dsh 的插件機制安裝:

dsh plugin --profile web add dsh-plugin-capabilities

安裝後打開設置,即可在一級導航裏看到「技能與 MCP」分區。開發時也可以直接安裝本地源碼檢出:

dsh plugin --profile web add file:/path/to/dsh-plugin-capabilities

包內的 prepare 腳本會自動構建出 lib/。

典型用法

從 Claude Code 等工具遷移 MCP 服務器

1、打開設置,進入「技能與 MCP」的「MCP」標籤頁;
2、發起一鍵掃描導入,來源覆蓋 Claude Code、Codex、Cursor、Gemini CLI;或者把含 mcpServers 的 JSON 粘進輸入框,點「解析並填充」;
3、檢查導入結果:Claude 配置裏的 ${VAR} 引用需手動改回,Gemini 的 SSE 條目不支持;
4、點頁面頭部的「重啓」按鈕,等頁面自動刷新後生效。

從 GitHub 添加技能倉庫

1、在技能頁添加 GitHub 倉庫,地址寫 https://github.com/owner/repo 或 owner/repo,需要鎖版本時加 #分支 或使用 /tree/分支;
2、插件經 GitHub tarball 接口下載並解包,機器上不需要安裝 git;
3、倉庫裏的技能進入技能目錄,倉庫記錄持久化在 $DSH_HOME/dsh-plugin-capabilities/state.json。

臨時停用一個技能

在技能頁找到目標卡片,把開關撥到關閉即可,文件其餘內容一字不動;需要時再打開,恢復默認策略。

安全與實現要點

  • 寫操作設有同源(CSRF)柵欄與輸入校驗;
  • GitHub 倉庫的下載解包由插件內置的純 JS tar 讀取器完成,sidecar 全程不 spawn 任何子進程。

開發與測試

npm install
npm run typecheck
npm test
npm run build

端到端 smoke 默認關閉,要求同級目錄存在 deepseek-harness 源碼檢出,且 Node ≥ 22.19:

DSH_DESKTOP_PLUGIN_SMOKE=1 npm test

適用場景與注意

適合兩類使用者:一是主要通過 dsh web 或 DSH Desktop 操作 dsh、希望在界面裏維護技能與 MCP 配置的人;二是同時使用 Claude Code、Codex、Cursor、Gemini CLI,想把既有技能與 MCP 配置收攏到 dsh 的人。

安裝前請注意:插件以當前 dsh 進程的權限運行,可以讀寫 $DSH_HOME 與技能文件,建議先檢查源碼與許可證(本項目爲 MIT)。另外幾點:MCP 行的變更需要重啓 dsh 才生效,重啓會中斷正在進行的回合;項目目錄與內置包來源的技能只讀展示,運行時註冊、沒有文件的技能沒有開關。

結尾

經過上面的步驟,原本散落在各個文件裏的技能與 MCP 配置可以收進 dsh 設置頁統一維護,從其他 agent 遷移的成本也降到了幾次掃描和確認。插件目錄頁(社區維護的插件目錄,與 DeepSeek 無官方從屬關係)與 GitHub 倉庫如下:

  • 目錄頁:https://www.skillhub.cn/plugins/qinyre/dsh-plugin-capabilities
  • GitHub:https://github.com/qinyre/dsh-plugin-capabilities
羽毛球分组比赛记分
小程序二维码

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

小夜