DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Plugin Reloader — DSH Plugin for DeepSeek Harness
← Plugins

@deepforce/dsh-plugin-reloader

Plugin Reloader

Hot-reload installed DeepSeek Harness plugins without restarting dsh web: watches plugin bundles, reloads changed plugins in place, and restarts on dependency changes

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add @deepforce/dsh-plugin-reloader@0.3.0
READMECompatibilityVersions

Compatibility and provenance

Plugin Reloader is published as @deepforce/dsh-plugin-reloader and currently resolves to version 0.3.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
npm
Registry updated
10/8/2026

Versions

0.3.0stable
10/8/2026

Related plugins

Loading related plugins…

Latest
0.3.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
69.2 kB
Files
10
Surface
any
License
MIT
Source
npm
GitHub
★ 1
Weekly downloads
0
Last push
10/8/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in

Related plugins

More verified plugins in developer-tools.

Client Ui Git Graph@linxin666/dsh-client-ui-git-graphExternal dsh web GUI plugin: a blank-session git branch selector + Git graph, with real host-side git operations and guards, as a dsh profile bundleSsh@linxin666/dsh-sshRemote SSH operations for the dsh web GUI: host config store (~/.dsh/dsh-ssh.json, import from ~/.ssh/config), a persistent ssh2 connection pool with jump-host support, exec / PTY web terminal / SFTP transfer / local port-forward tunnels / cluster executiUpdate@linxin666/dsh-updateSelf-update plugin for the dsh web GUI: probes npm for newer family releases and runs the owning profile's pnpm update in place, from a sidebar trigger beside the settings seat with a release-notes panelTui@deepseek-harness-tui/dsh-tuiInteractive terminal interface for DeepSeek Harness agents, sessions and tools.

README

dsh-plugin-reloader

English | 中文

Hot-reload installed DeepSeek Harness plugins without restarting dsh web. After you upgrade a plugin (e.g. dsh plugin add github:...), the new code takes effect in place; only a dependency-tree change restarts the process (through an external supervisor script).

It reuses the same reload pipeline dsh's built-in HMR uses for user code — clear the module caches, re-import the plugin entry, dispose the old fibers, mount fresh ones, roll back on failure — minus the node_modules exclusion that keeps the built-in HMR away from installed plugins. The loader's internal module cache is reachable through dsh's vendored loader without any special flag.

Features

  • Auto hot-reload — polls the installed plugins' entry and package.json files (every pollIntervalMs, default 2s) and hot-reloads a plugin in place when its code changes. Polling (stat mtime+size) is used instead of a file-watcher library: chokidar's fs-watch never reached ready inside the long-lived dsh web process on Windows, and polling is immune to pnpm's whole-directory replacements (the stat simply sees the new files on the next tick). Plugin upgrades are low-frequency, so a 2-second stat of a handful of files is negligible.
  • /reload <plugin> command — manually hot-reload one installed plugin; with no argument it lists the loaded plugins, marking non-reloadable ones ([official], [service], [self]).
  • /watch-status command — prints live watch diagnostics: watched scopes, event count, the last observed change, reload count, skipped reloads, and any startup error. Read it after upgrading a plugin to confirm the auto-reload fired (events and reloads incremented).
  • Dependency-change restart — if a plugin's package.json changes its dependencies/peerDependencies, the process exits with code 42 (configurable) so a supervisor relaunches it.
  • Reloadability guard — official @deepseek-ai plugins and plugins that provide services other plugins depend on are not hot-reloaded by default: the attempt is skipped, logged, and counted in /watch-status. Reloading a service provider would cascade restarts through every plugin that injects its services, and reloading an official plugin is equivalent to patching dsh itself mid-session. Override per category with allowOfficial / allowServiceProviders.
  • Rollback on failure — a failed re-import or mount restores the module caches and the previous plugin; the session keeps running.

Install

dsh plugin --profile web add github:deepforce/dsh-plugin-reloader

Restart dsh web once so the plugin loads. For the dependency-change restart to be useful, start dsh through the supervisor instead of directly:

# Windows (cmd)
scripts\dsh-restart.cmd web

# Windows (PowerShell)
powershell -File scripts\dsh-restart.ps1 web

Usage

After upgrading an installed plugin:

dsh plugin --profile web add github:deepforce/dsh-balance   # upgrade

The watcher notices the changed lib/ files and hot-reloads it — no restart. To force it manually, type /reload @deepforce/dsh-balance in a session, or /reload with no argument to list candidates.

If the upgrade also changed the plugin's dependency tree, the process exits 42 and the supervisor relaunches dsh web automatically (a supervisor is required — a plain dsh web just exits).

Configuration

FieldDefaultMeaning
watchEnabledtruePoll installed plugins and hot-reload on code changes
watchRoots["@deepseek-ai", "@deepforce"]Scoped directories under the profile's node_modules to consider
debounceMs400Change coalescing window before a reload fires
pollIntervalMs2000Polling interval for change detection
restartExitCode42Exit code used when a dependency tree changed (supervisor restarts on it)
allowOfficialfalseAlso hot-reload official @deepseek-ai plugins (not recommended)
allowServiceProvidersfalseAlso hot-reload plugins that provide services other plugins depend on (not recommended)

Example overlay:

# reloader.cordis.yml
- patch:
    - id: plugin-reloader
      config:
        debounceMs: 600
        restartExitCode: 50

Compatibility

Tested against DeepSeek Harness 0.2.0-rc.2 (web profile, Windows 11, Node 24) and earlier 0.1.0-rc.x builds. It depends on the loader's internal module cache (loader.internal), which the vendored loader exposes by default; if a future dsh removes that surface, the plugin degrades to /reload reporting "loader internal is unavailable". Version 0.3.0 requires dsh 0.2.x: 0.2.0 and earlier pin dsh-commands to ^0.0.1-rc.1, which — caret on a 0.0.x version being an exact-version constraint — matches no later build, so dsh's plugin compatibility gate skipped the plugin entirely.

Security

  • The watcher only reads files; it never executes anything itself.
  • A reload failure rolls back instead of leaving a half-mounted plugin.
  • The dependency-change exit is intentional and announced in the log before exiting.

Building locally

pnpm install        # uses pnpm-workspace.yaml overrides for upstream npm gaps
pnpm run build      # tsc emits lib/index.js

License

MIT