Introduction¶
DSH (DeepSeek Harness) adopts an “everything is a plugin” architecture. During development or operations, as the number of plugins grows, understanding the hierarchical relationships and dependency chains between plugins often becomes difficult. Existing settings pages usually only list plugins, lacking visual representation and interactive operations for dependency relationships.
dsh-plugin-tree is a DSH Web client plugin that upgrades the Settings -> Plugins page into a dependency-layered plugin detail tree, with an interactive dependency graph. Through this view, you can intuitively see how plugins stack, and directly enable/disable plugins and check for updates.
This plugin is maintained by jackxiao-hub and licensed under the MIT License.
Core Features¶
Dependency Layering Tree¶
The plugin list is automatically layered by the longest dependency chain, from L0 base libraries to L5 domain services; deeper layers are displayed as L{n}. Layers are collapsible and show the plugin count. Layers with no matching entries are hidden automatically.
Source Identification and Filtering¶
Each plugin displays a source indicator (official/third-party) and installation method (installed with dsh / npm installed / local link, etc.).
Search is provided by module name or description, with independent three-axis filtering: enabled status, source, and installation method. The filtered result is the intersection of all three criteria.
Node Details and Actions¶
Click any plugin to expand its details, showing version, source, description, status, and dependency/dependent lists.
For third-party plugins, the details page allows direct disable or enable actions. The action takes effect immediately and is persisted to cordis.patch.yml.
Dependency/Dependent Chips¶
Dependency relationships are displayed using colored chips:
* Border color: green = enabled, gray = disabled, red = mount failure, gray dashed = static.
* Background color: official plugins are light blue, third-party plugins are light yellow.
* Determination logic: determined by the unique entry id. Same-named plugins (the same package may have multiple Loader rows) each display their own status; clicking one navigates to the corresponding row.
Update Checks and Updates¶
The plugin supports checking for updates to npm-installed third-party plugins. It uses the pnpm outdated command and caches results for 60 seconds. When a newer version is detected, an inline Update button appears. Clicking it runs pnpm add <pkg>@latest; after installation, restart dsh web to apply the changes.
Dependency Tree (Graph)¶
The toolbar can switch to the Dependency Tree view, displaying a layered dependency graph.
* Filtering: static file nodes are filtered out by default.
* Styling: borders represent status, fills represent source, a legend is shown in the corner, and arrows point to prerequisite dependencies.
* Interaction: supports 1:1 pixel rendering, zoom, full-screen lightbox (ESC to exit), and drag-to-pan in blank areas.
* Chain isolation: when hovering over a node, only its full upstream and downstream chain is shown (upstream: prerequisite dependency chain; downstream: dependent chain); links to other nodes are hidden. Clicking a node pins the chain; clicking a blank area again releases it.
Installation and Enablement¶
Install the plugin using the following command:
dsh plugin --profile web add github:jackxiao-hub/dsh-plugin-tree
After installation, restart dsh web to activate it.
Typical Usage¶
- After installing and restarting, go to Settings -> Plugins.
- In the plugin details tab, the plugin tree is displayed by dependency layers by default.
- Use search and filters to locate a specific plugin.
- Click a plugin node to view details, or click the Dependency Tree button to view the interactive graph.
- Click Check Updates in the toolbar to see if updates are available for third-party plugins.
Use Cases and Notes¶
- Use cases: developers who need to quickly untangle plugin dependencies, manage a large number of DSH plugins, or monitor third-party plugin versions.
- No configuration items: this plugin requires no additional configuration; all behavior is built in.
- Permissions and data:
- The plugin reads only
ctx.loader.entries()and each package’spackage.jsonto build the tree. - It writes to
cordis.patch.ymlto save enable/disable state. - It uses
pnpmcommands to access the npm registry. - It does not read any credentials, does not participate in the model request path, and has no KV cache impact.
- The plugin reads only
- Compatibility: verified with Windows + dsh web 2026-08 mainline, and Node 22/24.
Conclusion¶
dsh-plugin-tree provides a UI-based tool for managing DSH plugin dependencies. With layered views and interactive graphs, it helps solve the readability problem of plugin stacking relationships.
For more information or source code, visit: GitHub | Skill Hub Directory