前言¶
DSH 的官方理念是「一切皆插件」,一個外部系統接進 DSH,通常意味着你要寫一份連接器清單,聲明連接對象、授權方式、啓動命令或 URL。這類清單的問題不在於「寫不出來」,而在於寫完之後很難回答三個問題:文件結構是否符合 schema、有沒有把真實憑證寫進文件、分享給別人之後會不會踩到同名衝突。更多時候,Agent 直接改了 mcp-servers.json 或者把 Token 寫進了命令行,出了問題纔回頭查。
下面介紹的 wilshi/dsh-connector-builder 就是把這件事流程化:把「讓 DSH 接入一個外部系統/API」交付爲標準、安全、可分享的 *.dsh-connector.json。
這是什麼¶
這是一個面向 DSH 0.1.5-rc.2 的 Skill 加工具箱,維護者是 WilShi。它註冊一個叫 create-dsh-connector 的 Skill,覆蓋需求確認、隔離實現、分步驗證、註冊門禁和分享導入,另外附一個 connector-toolkit.mjs 命令行工具箱處理腳手架、校驗、打包和註冊。倉庫按 MIT License 發佈,語言是 TypeScript,package.json 版本號是 0.1.0,標記爲 private。
在社區目錄中它被歸入「工作流」分類,GitHub 上的星標數目前是 0,可以理解爲一個剛公開不久的個人項目。它不是官方倉庫,SkillHub 目錄頁也是獨立的社區站點,與 DeepSeek / 幻方沒有官方從屬關係。
核心能力¶
README 與 SKILL.md 裏寫明的能力可以歸爲四塊。
- 流程 Skill:
create-dsh-connector按「先確認方案 → 隔離實現 → 分步驗證 → 註冊門禁」的順序推進,並且在每個需要用戶決策的點停下來等明確確認。 - 兩種連接器類型:
mcp-stdio(本地進程)和mcp-http(遠程 MCP)。有現成 MCP Server 就直接做清單;沒有就先在隔離目錄裏實現並測試 Server。 - 工具箱
connector-toolkit.mjs:
scaffold:生成安全的起點,憑證只寫${ENV_KEY}佔位符;validate:校驗清單結構、安全佔位符、內置 ID / serverName 衝突;package:導出分享文件並複覈,確保不含真實憑證;register/unregister(remove是同義別名):在目標 DSH home 中寫入或移除連接器目錄註冊。
- 安全紅線原樣摘錄:不把 Token、Cookie、密碼寫入設計、命令行、源碼或分享文件;不修改
deepseek-harness本體;不直接編輯mcp-servers.json。
安裝與啓用¶
這個倉庫沒有提供 dsh plugin add github:owner/repo 形式的安裝命令。README 明確說明本倉庫是「來自一個 Yarn workspace 的 packages/ 目錄」的源碼快照,構建需在擁有兼容 DSH 依賴的工作區中進行;倉庫根目錄只含 src、skills、tests、package.json、tsconfig.json、tsdown.config.ts、cordis.patch.yml 等文件,不含 lockfile,實際的構建宿主需要你自己準備。package.json 裏的依賴是 dsh-connectors: workspace:*,peerDependencies 是 @deepseek-ai/cordis 4.0.2 和 @deepseek-ai/dsh-skill 0.1.5-rc.2,engines 要求 Node ^22.19.0 || ^24.0.0。
package.json 的 scripts 只有三條,內容如下,具體用哪個包管理器跑,取決於你自己那套兼容 DSH 的 workspace:
build = tsdown
typecheck = tsc -p tsconfig.json --noEmit
test = vitest run --pool=threads --maxWorkers=1 --no-file-parallelism
也就是說,先構建,再類型檢查,再跑測試,每一步只做一件事。
啓用方式不是命令行,而是在 DSH 中讓 Agent 執行 create-dsh-connector,或者直接描述需求,例如「把團隊搜索 API 做成 DSH 連接器」。Skill 會先讀 references/schema.md 和目標系統的當前配置,給出方案,等你確認之後才動代碼。
典型用法¶
下面幾個命令都來自 SKILL.md,<skill-dir> 是 Skill 所在目錄,需要替換成實際路徑。
第一步生成起點,指定 ID、顯示名、類型、啓動命令和憑證環境變量名:
node <skill-dir>/scripts/connector-toolkit.mjs scaffold \
--id team-search \
--name "團隊搜索" \
--description "檢索團隊知識庫" \
--type stdio \
--command node \
--arg server.mjs \
--credential TEAM_TOKEN \
--output <isolated-dir>
HTTP 連接器把 --type stdio --command ... 換成 --type http --url https://example.test/mcp。--arg 可以重複,也可以傳以 -- 開頭的 MCP 參數,例如 --arg --stdio,爲避免歧義寫成 --arg=--stdio 也可以。
第二步校驗清單,這一步只檢查結構、佔位符和內置衝突:
node <skill-dir>/scripts/connector-toolkit.mjs validate <manifest>
第三步打包成分享文件,輸出後會再做一次憑證複覈:
node <skill-dir>/scripts/connector-toolkit.mjs package <manifest> --output <id>.dsh-connector.json
第四步註冊。這裏有一個門禁:方案確認、同意開始實現、同意測試打包,都不等價於註冊許可,Skill 必須單獨展示目標 Profile/home、連接器 ID、是否覆蓋、精確命令和回滾方式之後,再問一次是否註冊。
node <skill-dir>/scripts/connector-toolkit.mjs register <manifest> --home <target-dsh-home>
更新已有自定義連接器必須額外傳 --replace。回滾用:
node <skill-dir>/scripts/connector-toolkit.mjs unregister <connector-id> --home <target-dsh-home>
註冊只寫目標 Profile 的 connectors/custom-connectors.json,不會寫憑證也不會自動啓用,憑證由你在「設置 → 連接器」裏單獨填。
清單格式要點¶
references/schema.md 給出分享文件的結構,字段是 schemaVersion、kind: dsh-connector 和 connector 對象,其中 connector 裏有 id、displayName、description、category、version、type、serverName、authFields 和 mcpServer。
約束值得單獨記住:id 是小寫字母、數字、連字符,1–48 字符;serverName 允許字母、數字、下劃線、連字符,1–32 字符且不能與其他連接器重複;type 只能是 mcp-stdio 或 mcp-http;authFields[].envKey 必須是大寫環境變量格式,憑證值不屬於清單。HTTP 用 mcpServer.url 加可選 headers,stdio 用 mcpServer.command、args 和 env,任何涉及密鑰的 Header、環境變量、URL 查詢參數或命令參數都必須引用已聲明的 ${ENV_KEY}。導入時 DSH 還會強制設置 managed: true、userToggleable: true、origin: user,分享文件裏企圖改這些所有權字段的值會被忽略。
連接器只描述 MCP 接入。如果還需要 DSH 頁面、Host Service 或非 MCP 工具,就該走標準 DSH Bundle 的製作流程,必要時配合 cordis-plugin-development。
適用場景與注意事項¶
適合兩類人:一是想讓 Agent 幫忙把內部 API 或已有 MCP Server 接進 DSH,又不想自己手搓清單的人;二是想把做好的連接器安全地發給同事、讓對方在自己的 DSH 裏導入的人。分享文件只含結構,導入方再單獨配置憑證,這樣同一份文件在各團隊之間可以安全流轉。
有幾點必須知道。這個插件以當前 DSH 進程權限運行,註冊命令會寫入你指定的 DSH home 目錄,所以授予權限之前先看源碼和 cordis.patch.yml,確認沒有問題再讓它註冊。它針對 DSH 0.1.5-rc.2 編寫,DSH 目前處於 developer preview 階段,官方明確會持續產生兼容性破壞變更,新版本下可能需要重新校驗。倉庫是源碼快照而非正式發佈包,版本號 0.1.0、private: true,意味着它不適合直接當作依賴版本來引用,更現實的用法是把它的 skills/ 目錄作爲 Skill 源來使用。另外它只覆蓋連接器這一層,不要把「格式校驗通過」等同於「MCP 已連通」,validate 之後仍需在真實 DSH 裏做啓動、initialize、tools/list 和斷開路徑的檢查。
結尾¶
回頭再看,這個插件的價值不在新增了多少功能,而在把連接器製作的幾個容易出問題的環節固定下來:憑證只留佔位符、校驗集中在工具箱裏、註冊前必須過一次明確確認。作爲個人維護的工作流類插件,星標數和複用情況還需要觀察,但清單約束、校驗邏輯和註冊門禁這些設計是可以直接參考的。
- 社區目錄頁:https://www.skillhub.cn/plugins/WilShi/dsh-connector-builder
- 源碼倉庫:https://github.com/WilShi/dsh-connector-builder