dsh-plugin-manager
Visual manager for DeepSeek Harness configuration sets, Plugins, Skills, and MCP servers.
- Stars
- 0
- Language
- TypeScript
- Created
- Aug 20, 2026
- Updated
- Aug 22, 2026
Introduction
dsh-plugin-manager
dsh-plugin-manager adds a saved, switchable configuration layer to DeepSeek
Harness (DSH). It manages DSH Plugins, Skills, and MCP servers as reusable
definitions, groups their load decisions into named configuration sets, and
compiles the selected set into the runtime objects used by DSH.
It is installed into an existing DSH profile. It is not a standalone desktop application and it does not modify the DSH source checkout.
Contents
- Purpose and core model
- What it manages
- Compatibility
- Installation
- Quick start
- GUI usage
- Extension markets
- Runtime and data
- Safety boundaries
- Development
Purpose and core model
The project is designed for users who need several DSH environments without manually editing one profile each time. For example, one set can keep the normal tools enabled, another can load research Skills and MCP servers, and a minimal set can skip optional extensions. Switching the set changes the DSH runtime composition while keeping the definitions and previous choices saved.
The manager separates three layers:
| Layer | Meaning |
|---|---|
| Catalog definition | What an extension is, where it comes from, and how it is configured. |
| Selected set | The set currently being edited in the manager workspace. |
| Active set | The set currently compiled into DSH runtime objects. |
The normal workflow is:
add or discover an extension
-> choose load / skip / inherit for a set
-> save configuration changes
-> compile and apply the selected set
-> use the resulting DSH runtime
Changing an extension state creates a draft. Save configuration changes writes the catalog and automatically applies the selected set. Changing the set in the workspace header applies the new set immediately when there are no unsaved changes. The active-set indicator shows what DSH is currently using.
The state meanings are:
| State | Meaning |
|---|---|
load | Include the extension in the resolved set. Its package or files must still be available. |
skip | Exclude it from the resolved runtime. This does not uninstall or delete it. |
inherit | Remove the child-set override and use the parent result. |
At the runtime level, tool and context capabilities are compiled into a
managed Agent Preset. mcp, host, and ui capabilities are compiled into a
managed Host composition.
What it manages
| Area | Main operations |
|---|---|
| Configuration sets | Create, describe, inherit, edit, save, resolve, apply, and switch sets. |
| Plugins | Inspect the DSH baseline, install and add packages, register definitions, filter, and set load state. |
| Skills | Import local or GitHub Skills, preserve paths and provenance, edit notes, and set load state. |
| MCP servers | Add MCP JSON, HTTP, or stdio definitions, configure references, diagnose runtime state, and set load state. |
| Markets | Search and page through Plugin, Skill, and MCP sources, preview entries, and install or save them. |
The manager keeps catalog state separate from runtime state. A package may be
installed but skipped, or configured as load while its runtime module is
missing from the selected DSH profile. These conditions are shown separately.
Compatibility
The current plugin release targets DeepSeek Harness 0.1.1-rc.2 and the
0.1.1 release line. Its DSH client and settings peer dependencies are
declared as ^0.1.1-rc.2.
| DSH version | Status | Notes |
|---|---|---|
0.1.1-rc.2 | Supported | Current development and verification baseline. |
0.1.1 | Peer-compatible | Accepted by the declared peer range. |
0.1.0-rc.7 and earlier | Not a target | This release is no longer declared against the previous DSH line. |
Compatibility covers the DSH client connection, runtime, UI layout and slots,
settings, and plugin-settings APIs used by this extension. For another DSH
release line, verify the plugin in a separate profile before using it in
production. Do not modify D:\deepseek-harness to adapt the plugin; changes
belong in this repository.
Installation
Requirements
- DeepSeek Harness
0.1.1-rc.2or a compatible0.1.1profile. - Node.js
^22.19.0or>=24.0.0. - A DSH profile, normally
web, that can resolve the manager's peer packages.
Install from a checkout
git clone https://github.com/DaoCaoRenH/dsh-plugin-manager.git
cd dsh-plugin-manager
pnpm install
pnpm build
dsh plugin --profile web add .
Replace web with the profile you use. When DSH is run from its source
checkout, use pnpm dsh plugin --profile web add . from the DSH repository.
Restart the selected DSH profile after installation, then open
Extension Manager from the sidebar.
Install a published package
dsh plugin --profile web add dsh-plugin-manager
The profile installer adds the manager bundle to the profile manifest. It is loaded the next time that profile starts.
Quick start
GUI path
- Open Extension Manager from the DSH sidebar.
- In Configuration sets, keep or create a base set such as
default. - Select the set in the workspace header.
- Add a Plugin from Plugin market, a Skill from Skill, or an MCP server from MCP.
- Set each item to Load, Skip, or Inherit for the selected set.
- Click Save configuration changes and wait for the apply result.
- Check the Active set indicator and the runtime status columns.
CLI path
Initialize a starter catalog with a default set:
dsh-pm init
Register a Plugin definition, add it to a set, validate it, and apply the set:
dsh-pm plugin add pwsh --module @deepseek-ai/dsh-tool-pwsh --capabilities tool --categories shell
dsh-pm plugin add-to-set pwsh default
dsh-pm validate
dsh-pm apply default
Create a child set that inherits from default, then override one Plugin:
dsh-pm set add research --description "Research tools" --extends default
dsh-pm plugin set-state pwsh research skip
dsh-pm set resolve research
dsh-pm apply research
Add an MCP definition to the catalog. This command saves configuration but does not install an npm package:
dsh-pm plugin add memory --module @deepseek-ai/dsh-mcp-client --capabilities mcp --config '{"transport":"stdio","serverName":"memory","command":"npx","args":["-y","@modelcontextprotocol/server-memory"],"env":{},"cwd":"","toolCallTimeoutMs":60000,"failOnStartupError":false}'
dsh-pm plugin add-to-set memory default
dsh-pm validate
dsh-pm apply default
Useful inspection commands:
powershell dsh-pm list dsh-pm list --json dsh-pm set resolve default --json dsh-pm validate
Global CLI options:
--home <path> DSH home directory
--profile <name> DSH profile used for module resolution
--dsh-root <path> DSH source or installation root used by the installer
--catalog <path> Override the catalog.yaml location
GUI usage
Open Extension Manager from the DSH sidebar. The workspace header contains the selected-set selector, the active-set indicator, refresh, and close controls. The workspace has separate pages for configuration sets, Plugins, Skills, MCP, and the three markets.
1. Create a configuration set
- Open Configuration sets.
- Enter a set ID. It must start with a lowercase letter or number and may
contain lowercase letters, numbers, and hyphens, for example
research. - Optionally enter a description.
- Choose an existing set as Parent to inherit its configuration.
- Click Create configuration set.
The new definition is written to the catalog. Select the new set in the workspace header to make it the active runtime set. If there are unsaved changes, save them before switching; the workspace blocks a switch that would silently discard a draft.
2. Switch configuration sets
Use the Selected set selector in the workspace header. A successful switch resolves the parent chain, compiles the Plugin and Skill states, rebuilds the Agent Preset and Host composition, and updates the active-set indicator.
The selected and active set can differ briefly while an operation is running.
Use the active-set indicator as the source of truth for the current DSH runtime.
The CLI equivalent is dsh-pm apply <set-id>.
3. Add and configure a Plugin
Install from the Plugin market
- Select the target set before opening Plugin market.
- Search for a package and expand its installation details.
- Click Install and add.
- Review the package specifier, generated Plugin ID, target set, and command.
- Confirm the operation.
The DSH installer runs first. Only after it succeeds does the manager add the
definition to the catalog, set it to load in the target set, and apply that
set. A failed installation does not create a usable catalog entry.
Register a definition manually
For an exact module and capability definition, use dsh-pm plugin add as shown
in Quick start. Manual registration only writes the catalog; it
does not install the package. Use the market flow when the package must be
installed through DSH.
4. Add and configure a Skill
On the Skill page, use Add Skill:
- Choose Local directory or GitHub.
- Enter a local Skills directory, or a GitHub repository, directory, or
SKILL.mdURL. - Select the target root: project
.dsh, project.agents, user.dsh, or user.agents. - Select the initial state,
loadorskip. - Click Generate preview.
- Review the detected files, target path, source, and set, then click Install and add.
Preview generation does not copy files or execute repository scripts. After confirmation, the manager copies the Skill, stores its real path and provenance, writes its state, and applies the selected set. GitHub imports are pinned to the resolved commit. The Skill market follows the same flow.
The Skill list can search by name, source, provider, path, and note. Its row state control changes the Skill state for the selected set.
5. Add and configure an MCP server
Open MCP and choose one of these modes.
Quick add
Paste MCP JSON, a streamable HTTP URL, or a stdio command such as:
npx -y @modelcontextprotocol/server-memory
Click Parse and preview. JSON with multiple servers is displayed as individual entries. Select the entries to keep and edit generated Plugin IDs or server names when necessary. Preview does not execute a command or start an MCP process. Review the transport, command/arguments, URL, target set, and initial state, then click Save.
Manual configuration
Use Manual configuration for exact fields. stdio supports plugin ID,
serverName, command, args, cwd, and environment references.
streamable-http supports plugin ID, serverName, URL, and header
references. Secret values are represented by envRef/headerRef and are not
written as plaintext to the catalog.
Quick add saves its selected initial state. Manual configuration saves or updates the server definition but does not choose a state in the form; set the row to Load or Skip, then click Save configuration changes. The configured command or URL is used when the managed Host starts. Runtime diagnostics show startup status and exposed-tool matches.
6. Load, skip, and inherit an item
Every managed Plugin, Skill, and MCP row has a state control:
| Choice | Result |
|---|---|
| Load | Include the item in the resolved set. The package or file must be available. |
| Skip | Exclude it from the resolved runtime. It remains installed or registered. |
| Inherit | Remove the current set's override and use the parent result. |
Changing the control edits a draft. Click Save configuration changes in the page header to persist and apply it. A loaded item with a missing runtime entry usually means the definition exists but its package is not available in the selected profile. A skipped item is not an uninstall operation.
Protected DSH infrastructure cannot be disabled or removed. A managed Plugin must be skipped in every applicable set before its registration can be removed; removing the registration does not uninstall its package from the DSH profile.
7. Inherit and override configuration
Use a base set for common tools and a child set for a variant:
default
pwsh -> load
memory-mcp -> load
browser -> skip
research (inherits default)
pwsh -> skip
browser -> load
The effective research result is pwsh: skip, memory-mcp: load, and
browser: load. A child override wins over the parent. Selecting Inherit
removes the child override and restores the parent result. Plugin and MCP
overrides are stored in overrides; Skill-specific overrides are stored in
skillOverrides.
When adding a new Plugin or MCP, explicitly set Load or Skip in the target set. When importing a Skill, choose its initial state in the import form. This prevents a newly registered extension from being unintentionally enabled in an unrelated set.
8. Complete GUI workflow
- Keep the current working setup as
default. - Create
researchwithdefaultas its parent. - In the Plugin page, skip interactive or unnecessary tools in
research. - Add a research Skill and set it to Load in
research. - Add a research MCP server and review its environment references.
- Save the configuration changes and verify the active-set indicator says
research. - Select
defaultin the header whenever the original setup is needed.
Extension markets
The workspace provides three separate market pages:
| Market | Source | Result |
|---|---|---|
| Plugin market | awesome-dsh-plugin.com and the GitHub dsh-plugin topic | A DSH Plugin package and catalog definition. |
| Skill market | SkillsMP | A Skill copied to a selected local root. |
| MCP market | Official MCP Registry | A managed MCP server definition. |
Search
All market searches are applied to the loaded snapshot before pagination, so the total and page count change with the query. Normal search is case-insensitive and searches fields such as name, author/owner, description, tags, source, repository URL, and installation specifier. It does not load the entire source implicitly; increase the target load count or refresh the market when more source data is needed.
The Plugin market additionally supports GitHub-qualified searches:
| Query | Meaning |
|---|---|
owner:DaoCaoRenH | Exact GitHub owner search. |
author:DaoCaoRenH or @DaoCaoRenH | Alias for an owner search. |
DaoCaoRenH/dsh-plugin-manager | Exact owner/repository search. |
repo:DaoCaoRenH/dsh-plugin-manager | Explicit exact repository search. |
https://github.com/DaoCaoRenH/dsh-plugin-manager | Exact repository URL search. |
name:dsh-plugin-manager | Exact repository-name search. |
Free-form Plugin text such as pwsh searches the loaded Plugin snapshot. Skill
and MCP markets use the same free-form snapshot search and do not use the
Plugin-specific owner: or repo: syntax. Search can be combined with
category, source, and local-state filters.
Loading and pagination
- The first market load targets 1,000 entries.
- The target can be changed to load more or fewer entries in one operation.
- The displayed results are paginated to keep rendering responsive.
- Switching workspace pages reuses the loaded snapshot.
- Refresh market is the explicit action that requests new source data.
- When a source reaches its own return limit, the UI reports "The current query has reached the source return limit".
Market previews are side-effect free. Review the package specifier, target path, server name, transport, command, arguments, environment references, and configuration-set state before confirming.
Runtime and data
Applying a set follows this sequence:
- Read and validate
catalog.yaml. - Resolve the selected set's parent chain.
- Merge
load/skip/inheritdecisions. - Compile
toolandcontextentries intopm-<set-id>Agent Preset data. - Compile
mcp,host, anduientries into the managed Host composition. - Apply the result to the DSH runtime and record the active set.
The manager stores durable data under DSH home:
text ~/.dsh/plugin-manager/catalog.yaml ~/.dsh/plugin-manager/state.yaml ~/.dsh/plugin-manager/host.cordis.yml ~/.dsh/plugin-manager/skill-notes/ ~/.dsh/plugin-manager/mcp-notes/ ~/.dsh/.agent-presets/pm-<set-id>/agent.cordis.yml
catalog.yaml is the source of truth for extension definitions, categories,
notes, and configuration sets. state.yaml, the Host composition, and Agent
Presets are derived runtime state and can be regenerated by applying a set.
Only one configuration set is active process-wide. Agent Presets are generated per set, while Host-level MCP connections are process-level. Start a new DSH session when a workflow requires a newly generated Agent Preset.
Safety boundaries
- Only supported DSH Plugin package specifiers are accepted; arbitrary shell text is not executed by the Plugin installer.
- Plugin market installation uses the DSH CLI for the selected profile.
- GitHub Skill imports validate the source and pin a commit; repository scripts are not executed.
- MCP commands run as trusted Host processes. Review command, arguments, working directory, and environment references before applying them.
- Secret values are not stored in the catalog. Use
envRefand configure the corresponding environment variables in the runtime environment. - The manager does not automatically upgrade or uninstall packages.
- Removing a catalog registration does not remove a package from the DSH profile.
- Do not commit a user's DSH home, catalog, generated presets, notes, or credentials to a public repository.
Development
Install dependencies, type-check, test, and build:
pnpm install
pnpm check
pnpm test
pnpm build
The package is published under the MIT license. See LICENSE.