Introduction¶
In the “everything is a plugin” philosophy of DeepSeek Harness (DSH), Skills and global MCP servers accumulate in the environment. The problem lies in the fact that these capabilities are visible to all sessions by default: the startup context of every new session carries a full list of tools, while a single project often only uses a few of them.
dsh-workspace-scope solves this problem: it allows each workspace (project) to decide which Skills and Host global MCPs are exposed to new sessions. The effect is similar to VS Code installing many language plugins, but only enabling the ones needed for each project. Below is an introduction to its positioning, core features, installation method, and specific usage.
What is it¶
dsh-workspace-scope is a DeepSeek Harness plugin, maintained by Ri0n72Y, MIT licensed, current version 0.4.0. The README badges show compatibility with DeepSeek Harness 0.1.3-alpha.1, and the author also states that the plugin is actively developed with frequent updates.
One-sentence positioning: Enable/Disable Skills and Host global MCPs by workspace (project). The scope it manages is clear—it only handles Host global registered and inherited by Agent MCP servers; MCPs registered within the Agent/Preset’s own scope are not its responsibility. The switches on the interface ultimately become a configuration file in the workspace root directory.
Core Features¶
According to the verified README and package.json, the plugin provides:
- Enable/Disable Skills and Host global MCP servers by workspace (project);
- “Workspace Capabilities” modal in the new session interface: search/filter, row-by-row toggles, clicking a row expands details (Skills show descriptions, global MCPs show tool counts), bottom “Enable All” / “Disable All” shortcut buttons, all changes are saved instantly;
- Configuration is written to
.dsh-scope.jsonin the workspace root directory, read and locked upon the first real prompt assembly; - When the effective exclusion set of Host global MCPs changes, update the Agent’s native
tools.restrict()first, then let DSH redo a complete prompt assembly; native and PTC tool presentations use the same strategy; - Skills are refreshed per pre-step based on locked configuration; Skills excluded but originally allowed to be called by the user can still be temporarily loaded via the
/SkillNamegesture; - Configuration reading is compatible with
default(all enabled) andblacklist(list is exclusion set); - Web client UI injection (
dsh.client.platformisweb, injecting@deepseek-ai/dsh-client-ui-slots).
Installation & Enablement¶
The only verified installation command in the documentation comes from the repository’s package.json deploy script, which is a local path installation: first build the artifacts, then register the current directory as a plugin for the web profile.
pnpm run prepare && dsh plugin --profile web add .
--profile web corresponds to the plugin’s web UI injection. As of the time of writing, no remote installation commands like npm install -g or dsh plugin add github:... have been verified; please refer to the repository README for specific installation methods.
Environment requirements: Node engine requires ^22.19.0 || >=24.0.0; peer dependencies are @deepseek-ai/cordis ^4.0.1 and react ^18.2.0.
Typical Usage¶
Open the “Workspace Capabilities” Modal¶
The entry point is in the new session interface: the “Workspace Capabilities” button in the tool row on the right side of the input card. This entry is not shown in existing conversations.
The modal lists all manageable items grouped by “Skills” and “Global MCP Servers”; each group title can be collapsed individually. Operations:
- Search box filters items;
- Each row is a switch, open to enable;
- Clicking the row itself expands details: Skills show descriptions, Global MCPs show tool counts;
- Bottom “Enable All” and “Disable All” one-click toggle;
- All changes are saved instantly.
Configuration File¶
After saving, the configuration is written to .dsh-scope.json in the current workspace root directory, format as follows:
{
"default": {
"mode": "whitelist",
"skills": ["<skill-name>"],
"mcps": ["<server-name>"]
}
}
Field meanings:
mode: String, fixed towhitelistwhen saved; compatible withdefault(all enabled) andblacklist(list is exclusion set) when reading;skills: List of enabled Skill names;mcps: List of enabled Host global MCP server names.
Locking Timing and Activation Method¶
After the above steps, the configuration is saved to disk, but it won’t take effect immediately. The configuration is locked when the session first starts a real model request: changes in the new session interface can still affect the upcoming conversation, but modifying .dsh-scope.json later will not change an already locked session.
Taking a new session as an example, the activation process is:
- The first prompt assembly with a model turn reads and locks the configuration;
- Calculate the effective exclusion set of Host global MCPs. If it changes, update the Agent’s native
tools.restrict()first, then redo a complete prompt assembly; if no change, continue using the current assembly; - Skills are refreshed per pre-step according to the locked configuration.
If a Skill is excluded but still belongs to the category “originally allowed to be called by the user”, entering /SkillName in the session can still temporarily load it.
Applicable Scenarios and Notes¶
Suitable scenarios: Switching between multiple projects in the same DSH environment, installing many Skills and global MCPs, hoping each project’s new session only carries the needed parts, controlling the startup context volume.
Points to note before use:
- The plugin only manages Host global registered and inherited by Agent MCPs; MCPs registered within the Agent/Preset scope are unaffected;
- After configuration locking, modifying the file is ineffective for locked sessions; to change the combination, open a new session;
- The
modefield is fixed towhitelistwhen saved; be careful of the compatible behavior when reading if manually changing the file; - Plugin version updates are frequent; the README badge shows compatibility with DeepSeek Harness 0.1.3-alpha.1; confirm compatibility before upgrading DSH.
Also remind: The plugin runs with the permissions of the current dsh process; before installing third-party plugins, it is recommended to review the source code and license. dsh-workspace-scope is MIT licensed; both README and package.json indicate this. The repository accepts issues; before making changes, read CONTRIBUTING.md and then submit a PR.
Summary¶
dsh-workspace-scope separates “what is installed” and “what this project uses”: capabilities are installed globally, but the exposure scope is decided by the workspace, with configuration saved in a .dsh-scope.json file, editable and storable at any time. For people maintaining multiple DSH projects, it can directly reduce the startup context burden of each new session.
- GitHub repository: https://github.com/Ri0n72Y/dsh-workspace-scope
- Community plugin directory page (standalone site, no official affiliation with DeepSeek / Fangj): https://www.skillhub.cn/plugins/Ri0n72Y/dsh-workspace-scope