前言¶
用 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