前言¶
DeepSeek Harness(簡稱 dsh)把「一切皆插件」寫進了運行時:模型、工具、會話、沙箱和界面都掛在 Cordis 內核上,改配置就能換能力,不必改核心源碼。MCP(Model Context Protocol)也走同一條路——官方包 @deepseek-ai/dsh-mcp-client 負責連外部 MCP 服務器,並把工具註冊成模型能直接調用的 mcp__服務器名__工具名。
這條橋很好用,配置卻偏「手寫 YAML」:每個服務器一行 cordis.yml / cordis.patch.yml,傳輸方式、命令、URL、環境變量都寫在配置裏。連不上的時候,常見做法是翻日誌、猜重連次數、再讓模型試一次工具調用。服務器一多,狀態、工具清單和最近錯誤就散在各處,密鑰還容易在排障時被原樣打出來。
本文介紹社區插件 dsh-mcp-panel。它不替代官方 MCP 客戶端,而是疊在上面的管理控制檯:用 /mcp 命令和設置頁裏的 MCP 標籤頁看狀態、工具、錯誤和重連次數;需要改服務器時,生成可預覽的 patch 片段,審批通過後再追加寫入,並自動備份。本文依據社區插件目錄頁、GitHub 倉庫 README、package.json、CHANGELOG、npm 頁面以及官方 @deepseek-ai/dsh-mcp-client 說明交叉覈對,當前倉庫版本爲 0.4.0。社區插件目錄是獨立站點,與 DeepSeek / 幻方沒有官方從屬關係,不要把它當成官方應用商店。
這是什麼¶
dsh-mcp-panel 是一款界面增強插件,由 PerryLink 維護,許可證爲 Apache-2.0,主要語言是 TypeScript。GitHub 倉庫當前顯示 9 星(社區目錄頁收錄時顯示爲 4 星,星標以倉庫頁面爲準)。npm 上的發佈名爲 dsh-mcp-panel,與 GitHub 倉庫同名。
它面向 DeepSeek Harness 官方 MCP 客戶端,定位可以分成兩層:
- 只讀運行時視圖:通過官方客戶端已經提供的
mcp/status可觀測接口、工具註冊表和 loader,列出各服務器的傳輸、目標、工具數、連接狀態、最近錯誤和重連次數。沒有觀測到的字段如實顯示unknown/—,不編造連通狀態。 - 受控的 profile 寫入:在設置頁用表單增刪改服務器,輸出的是
cordis.patch.yml裏那一套insert/set/set disabled操作。可以只複製片段自己貼,也可以走審批後追加寫入;寫入前會備份,默認保留最近 5 份。傳輸、OAuth 和 MCP 協議本身它都不改。
官方客戶端仍然是唯一橋接層:每個 MCP 服務器對應一行 @deepseek-ai/dsh-mcp-client,負責連接、同步工具、註冊 mcp__* 名稱。面板只是體驗層。README 把它概括成一句話:官方 client 是橋,本插件是控制檯。
兼容範圍以倉庫說明爲準:DeepSeek Harness 0.1.0-rc.5–0.1.0-rc.6,Node.js ^22.19.0 || >=24.0.0,平臺是 Web GUI(Host + 瀏覽器雙面)。面板本身對模型只讀,只有 /mcp 命令的輸出會對模型可見。
官方客戶端在做什麼¶
先看官方客戶端自己怎麼配,能更清楚面板補的是哪一塊。@deepseek-ai/dsh-mcp-client 的 README 寫明:每個 MCP 服務器一個插件實例,寫在 cordis.yml 裏。下面是官方文檔裏的示例:
- id: mcp-github
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: github
transport: stdio
command: npx
args: ['-y', '@modelcontextprotocol/server-github']
env:
GITHUB_TOKEN: !!js process.env.GITHUB_TOKEN
- id: mcp-web
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: web
transport: streamable-http
url: http://localhost:3000/mcp
headers:
Authorization: !!js '`Bearer ${process.env.MCP_TOKEN}`'
模型看到的是 mcp__github__create_issue、mcp__web__search 這類帶命名空間的名字。傳輸支持 stdio 和 streamable-http。官方說明還寫了一條邊界:當前只橋接 Tools,Resources 和 Prompts 沒有 harness 側消費者,處於延期狀態。
面板不會改這些行的語義。它讀的是客戶端暴露出來的狀態,寫的是 profile 的 patch 層。裝上面板之後,配置裏會多出一行類似:
- id: mcp-panel
name: dsh-mcp-panel
config:
probeEnabled: true
核心功能¶
倉庫 README 和 CHANGELOG 0.4.0 把能力分成命令面和設置頁兩塊,下面按已覈實內容說明。
/mcp 命令族¶
在會話裏可以直接打命令,輸出對模型可見,也可以從會話日誌重建。
/mcp:每個服務器一行,包含 transport、目標、工具數、連接狀態、最近錯誤、重連計數。連接狀態來自上游mcp/statusseam;沒有觀測時顯示unknown。輸出語言由配置項outputLanguage控制,可選en、zh、es、pt、hi。/mcp tools:列出模型可見的mcp__*工具名和描述。/mcp health:根據脫敏後的錯誤文本給出派生建議,例如ENOENT對應依賴缺失、ECONNREFUSED、超時、401/403/404、DNS、限流、重連耗盡等。子進程退出碼和 stderr 尾部如果官方客戶端還沒暴露,會標明「待官方支持」,不會假裝已經有數據。/mcp call [json]:走官方工具管線ctx.tools.execute()做試用調用。pre-execute 權限策略、審批、guard、post-execute 全部生效,不是面板自己另開一條旁路。/mcp disable//mcp enable:給出精確的setpatch 行,用來禁用或重新啓用某一行。
README 裏的快速示例(假設已經配了名爲 everything 的演示服務器):
/mcp
/mcp everything tools
/mcp everything health
/mcp everything call echo '{"message": "hi"}'
設置頁:MCP 標籤¶
打開 設置 → 插件 → MCP,同一份快照會以狀態卡片形式展示:徽章、診斷、探測結果,以及下面三塊控制檯。
- Server CRUD:表單添加、修改服務器;「刪除」在 patch 詞彙表裏沒有
remove,實際是追加set disabled: true,以後還能重新啓用。表單會預填當前行;未改動的密鑰在 Host 側保留原值,編輯器只看見 key。生成的片段可以複製,也可以審批寫入。 - 工具試用臺:選服務器 → 選已註冊的
mcp__*工具 → 填 JSON 參數 → 調用。結果同時給出規範 JSON 和渲染內容,按trialMaxResultChars(默認 60000 字符)截斷。試用結果只留在面板,不進入模型上下文。 - 探測與能力一覽:可對 Streamable HTTP 服務器做一鍵或被動連通性探測,結果只在面板裏看。Resources / Prompts 用特徵探測判斷上游 catalog 是否就緒;目前二者都標「待官方支持」。
另外還有一個可選工具 mcp_probe,用後臺任務做一次性 Streamable HTTP 探測,結果同樣只給面板。
脫敏與寫入邊界¶
排障面板最容易把 token 打到界面上。倉庫把這條寫進了安全邊界:
- URL 查詢憑據、userinfo 密碼、header 值、Bearer token、JWT 在渲染前打碼。
- 配置裏的
headers不進入任何快照;env / header 的值不出 Host,編輯器只見 key。 - 寫入只追加、走審批、先備份。存在審批服務且當前會話的 agent 處於開啓輪次時,寫入走
ctx.approval(僅allowed-once放行);否則用界面上的顯式確認。writeEnabled: false是硬開關,關掉後拒絕一切 profile 寫入,複製片段仍然可用。 - 插件不註冊任何提示詞段落;對模型可見的文本主要是命令/工具描述。
權限方面,dshWorkshop 清單聲明瞭 network:outbound 和 native-code:none。
安裝與啓用¶
社區目錄頁給出的安裝命令如下,在 DeepSeek Harness 終端裏運行即可:
dsh plugin add github:PerryLink/dsh-mcp-panel
倉庫 README 針對 Web profile 寫得更具體,並提供 git 通道和 npm 通道。git 通道會跑包裏的 prepare 腳本做構建;npm 通道用已發佈的 tarball,不必再走構建審批:
# git 通道,跟最新 main
dsh plugin --profile web add "github:PerryLink/dsh-mcp-panel#main"
# 固定到已發佈的 0.4.0 標籤(可復現安裝)
dsh plugin --profile web add github:PerryLink/dsh-mcp-panel#v0.4.0
# npm 通道
dsh plugin --profile web add dsh-mcp-panel
# 固定 npm 版本
dsh plugin --profile web add dsh-mcp-panel@0.4.0
目錄頁也提示:如需可復現安裝,可寫成 dsh plugin add github:PerryLink/dsh-mcp-panel#commit,把 commit 換成具體哈希。
安裝後重啓,或讓 Web 面板熱重載 cordis.patch.yml,再用下面命令確認出現了 mcp-panel 這一行:
dsh --profile web --dump-config | grep -A3 'id: mcp-panel'
然後打開 設置 → 插件 → MCP,或在會話裏執行 /mcp。
卸載按 README:從 cordis.patch.yml 去掉 mcp-panel 行(Web 面熱重載),從 profile 的 node_modules 刪掉這個包,再用 dsh web --dump-config 確認沒有殘留行。
目錄頁和倉庫都提醒:插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。 安裝前請檢查源代碼倉庫和許可證。
配置項¶
可調項都是 Schemastery Config 字段,可以在 cordis.yml / cordis.patch.yml 裏覆蓋。倉庫文檔列出的鍵如下(默認值來自 README):
| 鍵 | 默認值 | 含義 |
|---|---|---|
probeEnabled |
true |
是否註冊 mcp_probe 後臺任務工具 |
probeTimeoutMs |
10000 |
單次探測超時(毫秒) |
maxProbes |
10 |
面板展示的探測記錄數 |
refreshIntervalMs |
0 |
建議的面板刷新間隔;0 表示按需 |
outputLanguage |
en |
/mcp 輸出語言:en / zh / es / pt / hi |
passiveProbeEnabled |
false |
是否週期性探測 streamable-http 服務器 |
passiveProbeIntervalMs |
60000 |
被動探測間隔(毫秒) |
trialEnabled |
true |
是否啓用工具試用臺和 /mcp call |
trialTimeoutMs |
120000 |
每次試用調用的面板側截止時間 |
trialMaxResultChars |
60000 |
試用結果載荷上限(字符) |
writeEnabled |
true |
寫入總開關;false 時仍可複製片段 |
backupCount |
5 |
每次寫入保留的 cordis.patch.yml 備份數 |
如果只想看狀態、不想讓面板改配置,把 writeEnabled 設成 false 即可。中文界面可以把 outputLanguage 改成 zh。
適用場景與注意事項¶
比較適合下面幾類用法:
- 已經在 profile 裏掛了若干
@deepseek-ai/dsh-mcp-client行,想一眼看到誰連上了、誰在重連、最近一次錯誤是什麼。 - 不想爲了加一臺 stdio 或 HTTP MCP 服務器去手改 YAML 縮進和引號,希望用表單生成 patch,複製或審批後再落地。
- 調用模型之前,先在試用臺用官方管線跑一遍
mcp__*工具,確認參數和權限策略。 - 對外分享截圖或日誌前,需要面板先把 token、header、JWT 打碼。
使用時有幾條邊界需要提前知道:
- 它不是另一個 MCP 客戶端。 不會自己建傳輸、做 OAuth、改協議。沒有官方客戶端那一行,面板沒有橋可看。
- 平臺目前是 Web GUI。 倉庫兼容表寫的是 Host + 瀏覽器雙面,不是所有 dsh 運行面都有這塊設置頁。
- Harness 版本要對上。 聲明兼容
0.1.0-rc.5和0.1.0-rc.6。dsh 仍處於 developer preview,核心插件和 API 還會變,升級 Harness 後應再覈對插件版本。 - Resources / Prompts、退出碼 / stderr 尾部 在官方客戶端補齊之前,面板會標「待官方支持」,不要把這些空字段理解成「服務器沒開這項能力」。
- 「刪除」其實是禁用。 patch 沒有 remove 操作,禁用後行還在,可以再 enable。
- 插件權限等於當前 dsh 進程。 安裝社區插件前應閱讀源碼和 Apache-2.0 許可證;生產環境更建議固定 commit 或 npm 版本,而不是一直追
main。
小結¶
dsh-mcp-panel 解決的是官方 MCP 客戶端「能連、但不好看、不好改」這一段:狀態從 mcp/status 讀,配置改動落成可預覽、可審批、可回滾的 patch,工具試用走同一條 ctx.tools.execute() 管線。它把控制檯和橋接層拆開,官方客戶端繼續負責傳輸和工具註冊,面板負責觀察和受控修改。
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-mcp-panel/
GitHub:https://github.com/PerryLink/dsh-mcp-panel
npm:https://www.npmjs.com/package/dsh-mcp-panel