前言¶
在 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,插件提供:
- 按工作区(工程)启用/禁用 Skill 与 Host 全局 MCP 服务器;
- 新建会话界面的「工作区能力」弹窗:搜索过滤、逐行开关、点行展开详情(技能显示描述,全局 MCP 显示工具数量)、底部「全部启用」「全部禁用」快捷按钮,所有改动即时保存;
- 配置写入工作区根目录的
.dsh-scope.json,在首次真实 prompt assembly 时读取并锁定; - Host 全局 MCP 的有效排除集合变化时,先更新 Agent 原生的
tools.restrict(),再让 DSH 重做一次完整 prompt assembly,native 与 PTC 两种工具呈现使用同一策略; - Skill 在每个 pre-step 根据锁定配置刷新;被排除但原本允许用户调用的技能,仍可用
/技能名手势临时加载; - 配置读取兼容
default(全部启用)与blacklist(列表为排除集); - 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 服务器」两个分组列出全部可管理条目,每组标题可以单独折叠。操作方式:
- 搜索框过滤条目;
- 每行一个开关,打开即启用;
- 点行本身展开详情:技能显示描述,全局 MCP 显示工具数量;
- 底部「全部启用」「全部禁用」一键切换;
- 所有改动即时保存。
配置文件¶
保存后,配置写入当前工作区根目录的 .dsh-scope.json,格式如下:
{
"default": {
"mode": "whitelist",
"skills": ["<skill-name>"],
"mcps": ["<server-name>"]
}
}
字段含义:
mode:字符串,保存时固定为whitelist;读取时兼容default(全部启用)与blacklist(列表为排除集);skills:启用的技能名列表;mcps:启用的 Host 全局 MCP 服务器名列表。
锁定时机与生效方式¶
经过上面的步骤,配置已经落盘,但它不会立刻生效。配置会在该会话第一次真正开始模型请求时锁定:新建界面里的改动仍能作用于即将开始的对话,而之后再修改 .dsh-scope.json,不会改变已经锁定的会话。
以一次新会话为例,生效过程是:
- 首次带模型 turn 的 prompt assembly 读取并锁定配置;
- 计算 Host 全局 MCP 的有效排除集合,若发生变化,先更新 Agent 原生
tools.restrict(),再重做一次完整 prompt assembly;若没有变化,沿用当前 assembly; - Skill 在每个 pre-step 按锁定配置刷新。
如果某个技能被排除但仍属于「原本允许用户调用」的类别,在会话里输入 /技能名 仍可临时加载它。
适用场景与注意¶
适合的场景:在同一个 DSH 环境里切换多个工程,安装的 Skill 和全局 MCP 不少,希望每个工程的新会话只携带需要的部分,控制启动上下文体积。
使用前有几点需要留意:
- 插件只管理 Host 全局注册、由 Agent 继承的 MCP;Agent / Preset 作用域内注册的 MCP 不受影响;
- 配置锁定后,改文件对已锁定的会话无效,要换组合就开新会话;
mode字段保存时固定为whitelist,手工改动文件时需要留意读取时的兼容行为;- 插件版本更新频繁,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