DSH 会话插件管理器:按会话开关插件的模型可见面

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 is 0.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:

  1. 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.
  2. Perform same-name empty segment shadowing (scoped system-prompt shadowing) for the prompt sections/contexts registered by the plugin.
  3. 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 set modelInvocable: false, userInvocable: false: the skill directory will no longer list them, and the skill tool 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 sidebarRightTabs client service and pluginManager host service (documentation test version 0.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

  1. Open the right sidebar and enter Plugins.
  2. Toggle the switch of a certain bundle to off; the row will display the number of hidden tools/skills.
  3. 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_bing and web_fetch_markdown no 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.; the skill tool returns not 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 DICTS in client.js and extending normalizeLocale (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.

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye