dsh-workspace-scope:按工作區啓停 Skill 與全局 MCP 的 DSH 插件

前言

在 DeepSeek Harness(DSH)「一切皆插件」的思路下,裝進環境的 Skill 和全局 MCP 服務器會越積越多。麻煩在於,這些能力默認對所有會話可見:每個新會話的啓動上下文都帶着全套工具清單,而單個工程往往只用得到其中幾個。

dsh-workspace-scope 解決的就是這件事:讓每個工作區(工程)自己決定新會話暴露哪些 Skill 和 Host 全局 MCP。效果類似 VS Code 裝了很多語言插件,但每個工程只啓用用得到的那幾個。下面介紹它的定位、核心功能、安裝方式和具體用法。

這是什麼

dsh-workspace-scope 是一個 DeepSeek Harness 插件,由 Ri0n72Y 維護,MIT 許可,當前版本 0.4.0。README 徽章顯示適配 DeepSeek Harness 0.1.3-alpha.1,作者同時聲明插件正在積極開發中、版本更新頻繁。

一句話定位:按工作區(工程)啓停 Skill 與 Host 全局 MCP。它管理的範圍是明確的——只處理 Host 全局註冊、由 Agent 繼承的 MCP 服務器;Agent / Preset 自己作用域內註冊的 MCP 不歸它管。界面上的開關最終落成工作區根目錄的一份配置文件。

核心功能

按已覈實的 README 和 package.json,插件提供:

  1. 按工作區(工程)啓用/禁用 Skill 與 Host 全局 MCP 服務器;
  2. 新建會話界面的「工作區能力」彈窗:搜索過濾、逐行開關、點行展開詳情(技能顯示描述,全局 MCP 顯示工具數量)、底部「全部啓用」「全部禁用」快捷按鈕,所有改動即時保存;
  3. 配置寫入工作區根目錄的 .dsh-scope.json,在首次真實 prompt assembly 時讀取並鎖定;
  4. Host 全局 MCP 的有效排除集合變化時,先更新 Agent 原生的 tools.restrict(),再讓 DSH 重做一次完整 prompt assembly,native 與 PTC 兩種工具呈現使用同一策略;
  5. Skill 在每個 pre-step 根據鎖定配置刷新;被排除但原本允許用戶調用的技能,仍可用 /技能名 手勢臨時加載;
  6. 配置讀取兼容 default(全部啓用)與 blacklist(列表爲排除集);
  7. web 客戶端 UI 注入(dsh.client.platform 爲 web,注入 @deepseek-ai/dsh-client-ui-slots)。

安裝與啓用

資料裏唯一覈實到的安裝命令來自倉庫 package.json 的 deploy 腳本,是本地路徑安裝:先構建產物,再把當前目錄註冊爲 web profile 的插件。

pnpm run prepare && dsh plugin --profile web add .

--profile web 與插件的 web UI 注入是對應的。截至寫作時,沒有核實到 npm install -g 或 dsh plugin add github:... 這類遠程安裝命令,具體安裝方式請以倉庫 README 爲準。

環境要求:Node 引擎要求 ^22.19.0 || >=24.0.0;peer 依賴爲 @deepseek-ai/cordis ^4.0.1 與 react ^18.2.0。

典型用法

打開「工作區能力」彈窗

入口在新建會話界面:輸入卡右側工具行裏的「工作區能力」按鈕。已進行的對話不顯示這個入口。

彈窗按「技能」和「全局 MCP 服務器」兩個分組列出全部可管理條目,每組標題可以單獨摺疊。操作方式:

  1. 搜索框過濾條目;
  2. 每行一個開關,打開即啓用;
  3. 點行本身展開詳情:技能顯示描述,全局 MCP 顯示工具數量;
  4. 底部「全部啓用」「全部禁用」一鍵切換;
  5. 所有改動即時保存。

配置文件

保存後,配置寫入當前工作區根目錄的 .dsh-scope.json,格式如下:

{
  "default": {
    "mode": "whitelist",
    "skills": ["<skill-name>"],
    "mcps": ["<server-name>"]
  }
}

字段含義:

  • mode:字符串,保存時固定爲 whitelist;讀取時兼容 default(全部啓用)與 blacklist(列表爲排除集);
  • skills:啓用的技能名列表;
  • mcps:啓用的 Host 全局 MCP 服務器名列表。

鎖定時機與生效方式

經過上面的步驟,配置已經落盤,但它不會立刻生效。配置會在該會話第一次真正開始模型請求時鎖定:新建界面裏的改動仍能作用於即將開始的對話,而之後再修改 .dsh-scope.json,不會改變已經鎖定的會話。

以一次新會話爲例,生效過程是:

  1. 首次帶模型 turn 的 prompt assembly 讀取並鎖定配置;
  2. 計算 Host 全局 MCP 的有效排除集合,若發生變化,先更新 Agent 原生 tools.restrict(),再重做一次完整 prompt assembly;若沒有變化,沿用當前 assembly;
  3. Skill 在每個 pre-step 按鎖定配置刷新。

如果某個技能被排除但仍屬於「原本允許用戶調用」的類別,在會話裏輸入 /技能名 仍可臨時加載它。

適用場景與注意

適合的場景:在同一個 DSH 環境裏切換多個工程,安裝的 Skill 和全局 MCP 不少,希望每個工程的新會話只攜帶需要的部分,控制啓動上下文體積。

使用前有幾點需要留意:

  1. 插件只管理 Host 全局註冊、由 Agent 繼承的 MCP;Agent / Preset 作用域內註冊的 MCP 不受影響;
  2. 配置鎖定後,改文件對已鎖定的會話無效,要換組合就開新會話;
  3. mode 字段保存時固定爲 whitelist,手工改動文件時需要留意讀取時的兼容行爲;
  4. 插件版本更新頻繁,README 徽章標註適配 DeepSeek Harness 0.1.3-alpha.1,升級 DSH 前先確認兼容性。

另外提醒:插件以當前 dsh 進程的權限運行,安裝第三方插件前建議先過一遍源碼和許可證。dsh-workspace-scope 採用 MIT 許可,README 與 package.json 均有標明;倉庫接受 issue,改動前先讀 CONTRIBUTING.md 再提 PR。

小結

dsh-workspace-scope 把「裝了什麼」和「這個工程用什麼」分開:能力全局安裝,暴露範圍按工作區決定,配置落在一個 .dsh-scope.json 文件裏,隨時可改、可入庫。對維護多個 DSH 工程的人來說,它能直接壓低每個新會話的啓動上下文負擔。

  • GitHub 倉庫:https://github.com/Ri0n72Y/dsh-workspace-scope
  • 社區插件目錄頁(獨立站點,與 DeepSeek / 幻方無官方從屬關係):https://www.skillhub.cn/plugins/Ri0n72Y/dsh-workspace-scope
羽毛球分组比赛记分
小程序二维码

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

小夜