Introduction¶
In DSH’s plugin ecosystem, dynamic plugins usually have two loading channels: the runner channel loads based on sessions, and the loader channel takes effect through persistent mounting. For users who need to manually install, mount, disable, and remove plugins, relevant operations are scattered across commands, directories, and configuration items, making them less direct.
dsh-dynplugin-manager is a management plugin for DSH dynamic plugins, providing a settings page, an installation dialog, built-in discovery, slash commands, and lifecycle operations.
What is this¶
dsh-dynplugin-manager is the plugin in the repository Thomas-key/dsh-dynplugin-manager, with the package name dsh-dynplugin-manager and an MIT license.
It manages DSH dynamic plugins, including runner session-level loading and loader persistent mounting. The maintenance information in the repository materials is inconsistent: the README mentions it is authored by deepseek-v4-flash and states that if the relevant maintenance notes are not removed, the author is not actively maintaining it; the author field in package.json is illusion. Users should review the source code, dependencies, and maintenance status themselves before use.
Core Features¶
Built-in Plugin Discovery¶
Plugins discover candidates from two locations:
- runner managed directory:
~/.dsh/dynplugin-manager/plugins/ - profile node_modules:
~/.dsh/profiles/<profile>/node_modules/
No additional configuration directory is required; the settings page will display manageable objects based on these locations.
Settings Page¶
After enabling, go to Settings → Dynamic Plugins to view the dynamic plugin status.
The page provides:
- Built-in discovery results
- Live state badges
- Disable/uninstall operations for loader plugins
- An entry point for the installation dialog
Installation Dialog¶
The installation dialog supports the following sources:
- local directory
- GitHub repository
- npm package
The flow is: select a source, scan, choose a link/copy installation mode based on candidate plugins, view immediate results, and perform a one-click mount.
The GitHub repository source will unzip to:
~/.dsh/dynplugin-manager/cache/
and supports monorepos.
Automatic Routing¶
/dynload <name> automatically routes plugins based on their nature:
- self-contained plugins use runner session-scoped loading
- import-using plugins use loader persistent insert-row mounting
Quality Checks¶
Plugins use a verify-before-persist mechanism: verification is executed before writing to persistent configuration; if verification fails, the content is not written.
Installation and Enablement¶
Confirm the Source First¶
The README provides a name collision warning: there may be npm packages with the same name. When installing, it is recommended to install explicitly from this repository:
dsh plugin --profile web add -w Thomas-key/dsh-dynplugin-manager
If installing from a local checkout:
dsh plugin --profile web add -w ./dsh-dynplugin-manager
Install Runtime Dependencies¶
Plugins are installed via linking, so Node resolves imports from the directory itself. @deepseek-ai/dsh-tools is not committed to the repository and needs to be installed in the checkout first; otherwise, dsh web may fail to start:
cd dsh-dynplugin-manager
npm install
cd ..
The peerDependencies @deepseek-ai/cordis and react are provided by the DSH host and should not be installed locally.
Enable¶
After the steps above, restart dsh web and then navigate to:
Settings → Dynamic Plugins
to see the dynamic plugin list and the installation dialog.
Typical Usage¶
Load Plugins¶
/dynload <name>
This command automatically routes:
- self-contained plugins go into runner session-scoped mode
- import-using plugins go into loader persistent mount mode
Disable Plugins¶
/dynunmount <name>
The behavior differs by channel:
- loader: removes the insert row, equivalent to disabling, leaving the package itself intact
- runner: deletes the managed copy
Completely Remove Plugins¶
/dynuninstall <name>
Complete removal includes:
- the insert row
dsh plugin remove- the managed copy
- related records
Manually Clean .pnpm Residue¶
After complete removal, if manual cleanup of .pnpm physical residue is required, you can run:
dsh plugin --profile web prune
Note: dsh plugin --profile web prune may delete user-installed packages, so this plugin does not automatically execute prune.
Applicable Scenarios and Notes¶
It is suitable for users and developers who need to manually manage DSH dynamic plugins, especially in scenarios that require a unified view of plugin status, installation from local directories/GitHub/npm, and mounting, disabling, or removal.
Before use, it is recommended to note:
- Plugins run with the permissions of the current DSH process, so source code, dependencies, and licenses should be checked before installation.
- The license of this plugin is MIT.
- There may be a name collision with an npm package; install explicitly from the
Thomas-key/dsh-dynplugin-managerrepository. - The maintenance status in the repository materials is inconsistent, so users should judge the maintenance activity themselves before use.
- There is already
dsh-plugin-manager(author hrhgit) on npm that manages bundle plugins; this is a different object from the dynamic plugins managed by this plugin.
Links¶
- Community directory page: https://www.skillhub.cn/plugins/Thomas-key/dsh-dynplugin-manager
- GitHub repository: https://github.com/Thomas-key/dsh-dynplugin-manager
The community directory page is the plugin directory page and is not equivalent to the official app store.