Preface¶
Running agents in DeepSeek Harness (DSH), MCP services, Skills, and built-in plugin packages are frequently added or removed through use. A common practice is to directly edit ~/.dsh/profiles/web/cordis.patch.yml or manually move directories under ~/.dsh/skills/ in the file system. As the number of configurations grows, toggling an MCP, confirming the transport method, or removing an unused Skill requires operating on YAML files and paths. Changes typically require restarting dsh web to take effect.
dsh-plugin-manager (maintained by liqichen) consolidates these operations into a graphical interface within the DSH settings panel: three tabs correspond to MCP services, Skills, and built-in plugin packages. Changes are written to real configuration files and take effect immediately (hot reload) without restarting dsh web. The project is open-sourced on GitHub (MIT license, current version 0.1.0), supports macOS and Linux, and is classified as a client-side plugin.
What Is This¶
dsh-plugin-manager is a standard DSH dual-side plugin: the browser-side client.js injects a “Plugin Management” page into the settings panel, while the Node-side index.js is embedded within the dsh web host, registering routes at /plugin-manager/api/* to read and write cordis.patch.yml and the Skills directory. It does not spawn additional processes, occupy extra ports, or use cross-origin APIs.
Community directory page: https://www.skillhub.cn/plugins/liqichen/dsh-plugin-manager
Source repository: https://github.com/liqichen/dsh-plugin-manager
Core Features¶
| Capability | Description | How It Takes Effect |
|---|---|---|
| MCP Toggle | One-click disable/enable any MCP service (writes disabled: true or removes it) |
Real-time hot reload |
| MCP Delete | Remove an entire MCP entry from cordis.patch.yml (preserves comments above) |
Real-time hot reload |
| Skills Management | Browse all skills and their descriptions; deletion moves them to a .trash-* directory and is recoverable |
Takes effect immediately |
| Built-in Plugin Packages Browse | Read-only view of DSH’s 160+ built-in plugin packages, including names, versions, and descriptions | Read-only |
| Auto Backup | Automatically backs up as cordis.patch.yml.bak-<timestamp> before each write operation |
— |
Main paths involved in write operations:
~/.dsh/profiles/web/cordis.patch.yml— MCP service configuration (patch layer)~/.dsh/skills/— Skills directory~/.dsh/profiles/node_modules/@deepseek-ai/— DSH built-in plugin packages (read-only)
Installation and Activation¶
Prerequisites: DeepSeek Harness (dsh web) is installed, and you understand the ~/.dsh directory structure.
Below are the complete steps for installing from the repository and registering (recommended by README):
# 1. Clone and place into the user plugin directory
git clone https://github.com/liqichen/dsh-plugin-manager.git
mkdir -p ~/.dsh/plugins/dsh-plugin-manager
cp -r dsh-plugin-manager/{index.js,client.js,package.json} ~/.dsh/plugins/dsh-plugin-manager/
# 2. Register the plugin via dsh CLI
dsh plugin --profile web add ~/.dsh/plugins/dsh-plugin-manager
Then manually complete the dependency and plugin declarations:
# 3. Edit ~/.dsh/profiles/web/package.json, add to dependencies:
# "dsh-plugin-manager": "file:../../plugins/dsh-plugin-manager"
# 4. Edit ~/.dsh/profiles/web/cordis.patch.yml, add to the plugins list:
# - id: plugin-manager-ui
# name: dsh-plugin-manager
After completing the steps above, restart dsh web, then open “Settings” → “Plugin Management” to use it.
If the plugin mechanism is not applicable, the repository also provides an early standalone Python service as a backup:
python3 legacy/server.py --port 17891
# Open http://127.0.0.1:17891/ in your browser
Typical Usage¶
After installation and restart, go to DSH Settings → Plugin Management.
MCP Services tab: Each MCP is displayed as a card showing its name, transport method (stdio / http), running status, and configuration ID. The toggle on the right can disable or enable it; the delete button removes the entry after a second confirmation. The top shows the configuration file path and total count.
Skills tab: Lists all skills, their descriptions from SKILL.md, and directory paths. Deletion moves the directory to ~/.dsh/skills/.trash-*, which can be manually restored.
Built-in Plugin Packages tab: Read-only table displaying all of DSH’s built-in plugin packages. To upgrade DSH itself, use:
npm update -g @deepseek-ai/dsh
After the operation, the page will indicate that changes have taken effect via hot reload. Although the configuration is written immediately, currently open sessions still hold the old tool list. It is recommended to open a new session to refresh.
The backend provides two same-origin APIs for interface or script calls:
# Read current state
GET /plugin-manager/api/state
# Execute operation (kind distinguishes: mcp-toggle / mcp-delete / skill-delete)
POST /plugin-manager/api/action
Write operation examples:
{ "kind": "mcp-toggle", "id": "mcp-scrapling", "disable": true }
{ "kind": "mcp-delete", "id": "mcp-scrapling" }
{ "kind": "skill-delete", "name": "obsidian-cli" }
Use Cases and Notes¶
Who it’s for: Users who frequently add or remove MCPs or Skills in DSH, prefer to minimize direct YAML and path operations, and need to confirm transport methods and running status. The built-in plugin packages page is useful for quickly checking the names and versions of DSH’s bundled modules but does not handle upgrading the core.
Usage boundaries:
- Operations affect real configurations; changes are written directly to
cordis.patch.ymland~/.dsh/skills/. Although auto backup is provided, it is still recommended to keep your own archive before making important changes. - MCP deletion only removes the configuration entry, not the npm package; it can be restored from
cordis.patch.yml.bak-*or by manually adding back the entry. - Skill deletion moves to
.trash-*; complete removal requires manually deleting the corresponding directory withrm -rf. - By default, it applies to the
~/.dsh/profiles/web/profile; other profiles require path adjustments. - The plugin backend runs under the current dsh web process permissions. Before installation, please review the source code and MIT license to ensure you accept its behavior of reading and writing local configurations.
If the page shows “Plugin backend not responding,” check if steps 3 and 4 of the installation are completed, and whether ~/.dsh/profiles/node_modules/dsh-plugin-manager correctly points to the plugin directory, then restart dsh web.
Conclusion¶
dsh-plugin-manager consolidates the daily maintenance of MCPs, Skills, and built-in plugin packages into the DSH settings panel. Configuration changes take effect via hot reload, reducing manual YAML editing and repeated restarts. The DSH community adheres to the philosophy of “everything is a plugin”; SkillHub directory is an independent community site with no official affiliation to DeepSeek / High-Flyer.