Preface¶
When many plugins are installed in DeepSeek Harness (DSH), every model request carries the tools, prompt sections, and skills registered by each plugin. If you want to temporarily narrow capabilities in one specific conversation—for example, removing the web search tool or preventing the Superpowers skill from appearing in the directory—the global “Settings → Plugins” affects all sessions, which is often too heavy.
dsh-session-plugin-manager (Session Plugin Manager) adds a “Plugins” tab to the right sidebar, which only disables the contribution of the plugin to the model-facing layer for the current session; other sessions and global plugin switches remain unchanged. Below is the positioning, capability boundaries, installation, usage, and configuration explanation.
What is this¶
- Repository / npm package name:
dsh-session-plugin-manager(maintainer kiluahh, GitHub, SkillHub Directory Page) - Category: Client-side plugin (injects
@deepseek-ai/dsh-client-ui-sidebar-right) - License: MIT; README states it was tested on DSH
0.2.2-rc.1; package.json current version is0.2.1 - One-liner: Toggle tools, prompt sections, and skills of each bundle per current session in the right sidebar, without uninstalling plugins or changing global settings
List data is sourced from the same place as “Settings → Plugins”, coming from pluginManager.listBundles().
Core Features¶
After installing and opening Plugins in the right sidebar, you can toggle switches for each installed bundle.
When disabled (for this session only), the plugin side will:
- Remove the plugin’s tools from the next request’s tool definition via
agent.ctx.tools.restrict({ deny }), so the model cannot see or call them. - Perform same-name empty segment shadowing (scoped system-prompt shadowing) for the prompt sections/contexts registered by the plugin.
- For providers registered in
skillProviders(default mapping includes@local/dsh-superpowers→superpowers), register each skill under the provider as a runtime skill with the same name, and setmodelInvocable: false, userInvocable: false: the skill directory will no longer list them, and theskilltool will return unavailable.
State Persistence: Writes to $DSH_HOME/session-plugin-manager/state.json based on sessionId; after reopening the session or restarting DSH, the switch state for that session is restored. The home page displays cards corresponding to the right sidebar.
Interface Language: Follows DSH language; zh* displays Chinese, other locales display English; the panel re-renders after switching languages. Row titles come from dsh.meta in each package’s package.json.
Boundary Clarification: What it does not do¶
README explicitly distinguishes boundaries to avoid misuse:
- Does not uninstall plugins: Background services and UI panels still run, only the tools/paragraphs/skills visible to the model are removed.
- Not a global switch: Global settings (Settings → Plugins) take precedence; rows globally turned off in settings are marked as Globally off in the panel and need to be enabled in settings before session-level control can be applied.
- Skills are masked in groups by provider: Individual skills cannot be toggled.
- Plugins that do not contribute tools or skills (sound effects, chat bridges, model providers, etc.) are greyed out in the list.
Environment and Dependencies¶
- Requires DSH with
sidebarRightTabsclient service andpluginManagerhost service (documentation test version0.2.2-rc.1). - Runtime has no extra npm dependencies besides DSH; implementation uses only Node built-in modules.
Installation and Activation¶
Choose any install_bundle target (the host returning application: applied is the criterion):
From npm public registry:
plugin_manager({ action: 'install_bundle', target: 'dsh-session-plugin-manager' })
From GitHub:
plugin_manager({ action: 'install_bundle', target: 'https://github.com/kiluahh/dsh-session-plugin-manager' })
From local directory:
plugin_manager({ action: 'install_bundle', target: 'D:\\path\\to\\dsh-session-plugin-manager' })
After installation: Restart DSH (host needs restart), and refresh the page (client bundle needs reloading).
The plugin runs with the same process permissions as DSH; it is recommended to browse the repository source code and the MIT license before installing. SkillHub is a community directory and has no official affiliation with DeepSeek / Hypersphere.
Typical Usage¶
- Open the right sidebar and enter Plugins.
- Toggle the switch of a certain bundle to off; the row will display the number of hidden tools/skills.
- When you need to undo all overrides for this session at once, use Restore all.
Reproducible check items in the README Chinese description include:
- After disabling the “Web Toolset”,
web_search_bingandweb_fetch_markdownno longer appear in the current session’s tool list; new sessions can still use them. - After disabling Superpowers, the skill directory no longer lists
brainstorming,test-driven-development, etc.; theskilltool returnsnot available for model invocation. - After reopening the session or restarting DSH, the switch state remains; after clicking “Restore all”, tools and skills are restored.
Configuration (cordis.patch.yml line config)¶
You can adjust the fields in the table below in the plugin bundle’s cordis.patch.yml (all are the default values and meanings from the source material):
| Field | Default | Description |
|---|---|---|
stateFile |
$DSH_HOME/session-plugin-manager/state.json |
Session state file path |
includeOfficial |
false |
Whether to list optional official bundles as well |
toolMap |
{} |
Module → { tools, sections, contexts }, overrides automatic scanning |
skillProviders |
{ "@local/dsh-superpowers": ["superpowers"] } |
bundle → skill provider name; disables the whole group when turned off |
scan |
true |
Whether to scan package source code to complete tool mapping |
scanMaxFiles |
120 |
Maximum number of files to read per package |
scanMaxBytes |
2097152 |
Maximum size to read per file (bytes) |
cacheTtlMs |
30000 |
Directory cache TTL (milliseconds) |
If a row indicates Tools not mapped, you need to supplement the module and tool names in toolMap.
Suitable Scenarios and Notes¶
Who is it for: DSH users who frequently open multiple sessions and want certain conversations to “go light” (fewer tools, fewer skills, less prompt injection); it complements, rather than replaces, global plugin settings.
Notes:
- Only affects the side visible to the model; it cannot replace auditing of the plugins themselves in security or compliance scenarios.
- Skill masking granularity is at the provider level; it cannot be refined to individual skills.
- Custom translations can be added to
DICTSinclient.jsand extendingnormalizeLocale(see README Development / Languages).
The maintainer provides Node tests without external dependencies in the repository, for example:
node test/smoke-test.mjs
node test/client-locale.mjs
Conclusion¶
The DSH ecosystem emphasizes “everything is a plugin”; dsh-session-plugin-manager addresses the need for session-level narrowing of the plugin model surface: toggles in the right sidebar, state persisted by session, consistent with the settings page list. For installation instructions and verification checklists, refer to the GitHub README; for the community index, see the SkillHub Directory Page.