Preface¶
DeepSeek Harness (DSH) adopts an “everything is a plugin” architecture: capabilities are mounted through bundles and profile patches. The more plugins you install, the more likely you are to encounter issues like overlapping functionality, compatibility conflicts, and difficulty in verifying the enable/disable status. Common practices involve manually scrolling through cordis.patch.yml, cross-referencing bundles in package.json, or relying on memory to determine which image-viewing or voice plugins are currently active—as the number of plugins increases, maintenance overhead rises significantly.
Below we introduce dsh-plugin-integration, maintained by MutaLucem (GitHub: MutaLucem/dsh-plugin-integration). This tool adds a “Plugin Integration” tab at the bottom of the DSH settings panel. It performs dynamic discovery, tagging, categorization, overlap and compatibility detection for installed plugins, and supports one-click enable/disable and failure diagnosis. Newly installed plugins automatically appear in the list, eliminating the need to modify code or maintain a hardcoded list.
What Is This¶
dsh-plugin-integration is a plugin integration center for the DSH web profile, classified as a workflow plugin. The current version is 1.3.10, released under the MIT license, and has approximately 11 stars on GitHub.
The core problem it solves is: as the number of plugins grows, how to uniformly view the real-time status of installed plugins, identify functional overlaps and compatibility conflicts, and safely enable, disable, or switch plugins. Unlike merely browsing the bundles directory, this plugin uses runtime data (such as clientModules.graph() and the loading phase fiberPhase) to determine whether plugins are truly active. It also includes a curated knowledge base describing capability boundaries and overlap groups.
Community directory page: SkillHub - dsh-plugin-integration. This directory is an independent community site and has no official affiliation with DeepSeek or High-Flyer.
Core Features¶
After installing and restarting DSH, a “Plugin Integration” tab will appear at the bottom of the settings panel, containing five sub-tabs. The top summary card displays the number of installed plugins, enabled plugins, active plugins, compatibility conflicts, and plugins not in the knowledge base.
Plugin List: Dynamic Discovery and Tagging¶
The Plugin List tab works through a three-layer data model:
- Dynamic Discovery: At runtime, it reads the
dsh.profile.bundlesfield from the profile’spackage.json, then parses each bundle’scordis.patch.ymlto extractentryIdand module names. Newly installed plugins automatically appear. - Generic Metadata Fallback: For unknown plugins, names, descriptions, and keyword tags are derived from
package.json. - Curated Knowledge Base Override: Plugins listed in the knowledge base use precise tags, capability boundaries, overlap groups, and compatibility rules. This can be extended or overridden via
~/.dsh/dsh-plugin-integration.json.
The list supports categorization by addition time and bidirectional sorting, with search and filtering by status, pending updates, and tags. It can fetch plugin logos and GitHub stars online (auto-reading the gh token) and detect the actual versions on npm/GitHub. Each plugin displays its name, entryId, capability description, boundary, multiple tags, containing bundle, and status (active / enabled but inactive / disabled / failed to load), with markings for “protected” or “unknown.”
Overlap Switching: Identifying Functional Overlaps¶
Built-in overlap groups help identify situations where multiple plugins cover the same capability. Typical groups listed in the README include:
| Overlap Group | Members | Description |
|---|---|---|
| Vision / Multimodal | deepeye-vision / modlens / describe-image |
Coexistence of multiple image/OCR plugins leads to tool redundancy |
| Voice Input | voice / voice-input |
Two microphone buttons conflict |
| Right Panel / File Management | better-sidebar / ui-dsh-aionui-panel |
Both occupy the right detail column |
| Plugin Management / Marketplace | dsh-market / plugin-console |
Two managers override each other’s combo patches |
Each group shows current status: active, enabled but inactive, or disabled. Clicking “Switch to this” disables other plugins in the group, keeping only the selected one. For each plugin, four states are distinguished: fully active, partially active, disabled, and inactive.
Compatibility Detection: Existence and Coexistence¶
The Compatibility Detection tab distinguishes three types of issues:
- Existence Conflicts (
existence): Problems occur as long as plugins coexist in the same directory. For example, the same entry is both mounted via the bundle channel and manuallyinsertedin the profile patch (double mounting). - Coexistence Conflicts (
coexistence): Problems occur only when both are enabled simultaneously. Built-in rules correspond to overlap groups, each with a fix plan that can be applied with one click. - Tool Name Conflicts (
tool-name): When two plugins register a tool with the same name, the later-loaded one may cause the host to exit before readiness. If the conflicting plugin offers a configuration to disable tool registration (e.g.,tool: false), coexistence may be possible; otherwise, one must be disabled.
Additionally, runtime load failures where fiberPhase === 'failed' are displayed separately.
Enable / Disable and Core Protection¶
The Enable / Disable tab allows enabling or disabling installed plugins. Changes are written to the profile’s cordis.patch.yml (disabled: true/false), using the same mechanism as the official dsh-skin. In standalone bundle mode, the profile’s HMR listener allows changes to take effect via hot reload without restarting.
Core entries in the protected list (which by default includes ui-web-ui-compat) cannot be disabled. Both UI and RPC layers will intercept attempts, preventing accidental disabling that could render DSH unusable.
Failure Detection and Operation Log¶
In the list, overlap, or enable/disable tabs, you can click “Mark as Failed” for plugins that are “enabled but suspected inactive.” Results are persisted to ~/.dsh/dsh-plugin-integration.state.json. The Failure Detection page centrally displays manually marked and suspicious items. detectFailures diagnoses specific causes and provides fix plans with impact explanations—for example, missing ./client artifacts requiring pnpm run build, being disabled by cordis.patch.yml and needing re-enabling, or being overridden by another plugin.
The title bar provides an “Operation Log” button, split into current log (this startup) and historical logs, supporting deletion and clearing, persisted to ~/.dsh. The settings window supports native browser resize dragging to adjust size, with dimensions saved to localStorage; the “Reset Window” button in the title bar restores the default 800×800 size.
Dynamic Tools¶
The host semi-registers a dynamic tool plugin_integration, callable by models or scripts; RPC exposes interfaces like analyze, toggle, switch, and applyFix.
Installation and Enabling¶
Run the official installation command under the web profile:
dsh plugin --profile web add github:MutaLucem/dsh-plugin-integration
After restarting DSH, the “Plugin Integration” tab will appear at the bottom of the settings panel.
The repository provides both dynamic plugin mode (src/host.js + src/client.js) and standalone bundle mode (src/host.standalone.js + src/client.standalone.js). package.json defaults to standalone bundle mode, which is also the recommended installation method in the README.
Typical Usage¶
Viewing Installed Plugins and Filtering¶
- Open DSH settings and navigate to the “Plugin Integration” tab at the bottom.
- In the “Plugin List” sub-tab, view the dynamically discovered plugin list.
- Use the search bar or filter by tag/status to locate the target plugin, checking its
entryId, capability boundaries, and active status.
Handling Functional Overlaps¶
- Switch to the “Overlap Switching” sub-tab.
- Find the relevant overlap group (e.g., Vision / Multimodal, Voice Input).
- Review the status of each plugin in the group, then click “Switch to this” to keep one and disable the others.
Running Compatibility Detection and Applying Fixes¶
- Open the “Compatibility Detection” sub-tab and run an automatic or manual check.
- Review existence conflicts, coexistence conflicts, or tool name conflicts along with their fix plans.
- For coexistence conflicts, click “Apply” to apply the fix with one click; for tool name conflicts, follow the plan to disable one plugin or adjust configuration.
Enabling/Disabling Plugins¶
- In the “Enable / Disable” sub-tab, search for the target plugin.
- Toggle the enable state; protected entries will show “Protected” and cannot be disabled.
- In standalone bundle mode, changes usually take effect via hot reload; if not, restart DSH.
Customizing the Knowledge Base and Rules¶
Copy the default configuration to ~/.dsh/dsh-plugin-integration.json and edit it—no recompilation needed:
{
"protected": ["ui-web-ui-compat"],
"plugins": {
"my-plugin": {
"label": "My Plugin",
"category": "Some Category",
"tags": ["some-tag"],
"stars": 123,
"capability": "...",
"boundary": "..."
}
},
"overlaps": [],
"compatRules": []
}
Merge rules: plugins are merged by key (user entries override or add new ones), while overlaps, compatRules, and protected are replaced entirely.
Use Cases and Notes¶
Who Is This For
- Users who have installed multiple plugins with similar functions (image viewing, voice, sidebar, marketplace, etc.) under the DSH web profile and need to clarify which one is currently active.
- Those who need to periodically check for double mounting or coexistence conflicts between profile patches and bundles.
- Users who want to safely enable/disable plugins without directly editing YAML, while retaining operation logs.
Before Use
- This plugin runs with the permissions of the current DSH process. It reads
package.json,cordis.patch.yml, configuration and state files under~/.dsh, and writes to profile patches. Before installing, read the source code and MIT license to confirm you accept its file access scope. - Online star fetching and version detection depend on a
ghtoken and external network; tags for unknown plugins come from generic fallback, and precise descriptions depend on the knowledge base or your custom configuration. - Compatibility rules and overlap groups are updated with versions; refer to the repository’s
config.default.jsonand README for specific entries. - The SkillHub directory page is a community listing; installation commands should follow the README and the
dsh plugin --profile web addcommand listed here.
Conclusion¶
dsh-plugin-integration consolidates DSH plugin discovery, categorization, overlap switching, compatibility detection, enable/disable, and failure diagnosis into a single entry point in the settings panel, reducing the manual maintenance overhead of bundles and patches. If you have accumulated a set of plugins under the web profile, you can use it as a daily inspection and switching dashboard.
- Community Directory: https://www.skillhub.cn/plugins/MutaLucem/dsh-plugin-integration
- Source Code & Documentation: https://github.com/MutaLucem/dsh-plugin-integration