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.

DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins

dsh-tool-explorer

Tool Explorer

Management console for DeepSeek Harness: browse, install, update, edit and toggle skills; add, edit, test and monitor MCP servers. · DSH 技能与 MCP 管理控制台。

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

npx -y @deepseek-ai/dsh plugin --profile web add dsh-tool-explorer@0.4.4
READMECompatibilityVersions

Compatibility and provenance

Tool Explorer is published as dsh-tool-explorer and currently resolves to version 0.4.4. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
npm
Registry updated
11/6/2026

Versions

0.4.4stable
10/19/2026
0.4.3stable
10/17/2026
0.4.2stable
9/22/2026
Show 4 more versionsCollapse versions
0.4.1stable
9/3/2026
0.4.0stable
8/31/2026
0.3.1stable
8/31/2026
0.3.0stable
8/31/2026

Related plugins

Loading related plugins…

Latest
0.4.4
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
629.4 kB
Files
47
Surface
web
License
MIT
Source
npm
GitHub
★ 1
Weekly downloads
424
Security scan
✓ v0.4.4 scan passed
Last push
10/19/2026
View source ↗Project homepage ↗
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

Related plugins

More verified plugins in developer-tools.

MarketdshmarketVisual plugin market inside DeepSeek Harness — browse, search, and one-click install community plugins. · DSH 可视化插件市场:逛一逛,点一下,装好。Better Sidebardsh-better-sidebarBetter Sidebar for DSH — file tree, editor, changes, tasks and side chat in one column, separate for every conversation. Also exposes a service other plugins use to register sidebar tabs and file viewers.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 executi

README

English | 中文

dsh-tool-explorer

Management console for DeepSeek Harness (dsh): a Web settings page where you can browse, install, update, edit and toggle skills, and add, edit, enable/disable, test and monitor MCP servers.

Compatibility

One build serves every supported DSH line. The settings surface has moved three times around this plugin — module-level helpers (0.1.0-rc.7 … 0.1.4), the provider method that replaced them (0.1.5), and entry-Config forms (0.2.x) — so src/settings.ts imports no runtime symbol from @deepseek-ai/dsh-settings at all: it pins to the parts that did not move and feature-detects the rest. On 0.2.x the plugin's exported Config schema is what puts its preferences into the platform settings page.

DSHStatus
0.2.1-rc.2 (current)Supported — boot, host routes, live Config form and client bundle verified at runtime
0.1.5-rc.2Supported — same feature set via the 0.1.x settings namespace
0.1.1-rc.2Supported — boot, host routes, settings and client bundle re-verified at runtime
Rest of 0.1.0-rc.7 … 0.1.4Expected to work: this line exposes the same ctx.settings.register(ns, schema, { base }) surface
Host without ctx.settingsLoads and works; preferences fall back to the composition entry config

Host-half changes need a dsh web restart; client-half changes hot-reload. After a dsh upgrade, re-run the local mcp-client patches — an upgrade restores the official dsh-mcp-client bytes.

Features

Skills

  • Full catalog across every provider (project/user/bundled/plugin) merged with the shared .skill-lock.json
  • Hierarchical browse by source: collapsible source tree (project-dsh → project-agents → custom → user-dsh → user-agents → runtime → bundled), each source subdivided by provider, with loaded/disabled counts; source + state filters and flat view
  • Search, detail preview, online create/edit (kebab-case validation, frontmatter form, Markdown body)
  • Independent model / user invocation switches — turn off the model call for a skill alone (disable-model-invocation) while keeping the / menu, or vice versa; both off = fully disabled
  • Recoverable trash: deleting a user-root skill moves it to <dshHome>/skills-trash (lock entry snapshotted); restore puts it back byte-identically, or purge / empty for permanent removal
  • Install from GitHub: URL parsing (owner/repo, tree paths, #branch), candidate preview with multi-select / select-all batch install (one repo = one tarball download, conflicts reported per skill), install into ~/.agents/skills or ~/.dsh/skills, update check/apply (backup + rollback), uninstall
  • skillFolderHash is byte-compatible with the Skills CLI (npx skills)

MCP

  • Server list with live state (fiber phase), tool inventory and per-server tool counts
  • Add/edit/delete servers (stdio + streamable-http) and enable/disable toggles — all through the profile patch layer (HMR hot-applies, no restart)
  • Cross-agent import: scan ~/.claude.json, ~/.cursor/mcp.json, ~/.codex/config.toml (TOML), ~/.cline/mcp_settings.json, ~/.roo/mcp.json, ~/.continue/mcp.json, ~/.codeium/windsurf/mcp_config.json and import in one click
  • Test connection with an independent SDK probe (never disturbs running instances)
  • Write fencing (expected-hash) against concurrent hand edits

Install

Published on npm (v0.4.3):

dsh plugin --profile web add dsh-tool-explorer

There is no version to pick — the current release covers every supported DSH line (see Compatibility). The pre-0.1.5 build stays available for pinning and is published under the legacy dist-tag; it only loads on DSH ≤ 0.1.4:

dsh plugin --profile web add dsh-tool-explorer@legacy   # = 0.4.1, DSH ≤ 0.1.4 only

dsh plugin reconciles the bundle automatically. Restart dsh web once (host plugins load at boot), then open Settings → Skills 和 MCP.

Local development

pnpm install
pnpm run typecheck   # tsc for host + client sources
pnpm run build       # tsc host -> lib/, tsdown client -> client/client.js (wrapped + verified)
pnpm test:self       # 141 assertions: mock host CRUD, cross-agent import, git install, trash, real stdio probe, settings wiring

Local install loop:

pnpm pack
dsh plugin --profile web remove dsh-tool-explorer
dsh plugin --profile web add file:G:/dsh-tool-explorer/dsh-tool-explorer-0.4.4.tgz

Adding a runtime dependency (e.g. tar) requires a re-pack + reinstall — copying lib/ alone is not enough.

Reference implementations

The M5 feature set (source-grouped browse, per-axis invocation, recoverable trash) was designed against the existing community plugins below — cloned under .ref/ for reference:

  • cheshireez/dsh-skill-hub — in-GUI skill hub on the official ctx.skills registry; its .trash/ rename + restore + clear pattern inspired our recoverable trash
  • SeverusZh/dsh-skills-mcp-group-manager — group management and model-catalog filtering via a shadow skill provider
  • BAIKAI23333/dsh-skills-manager — settings-page skills manager
  • peiqi10086/dsh-skills-market — sidebar skills panel (user/project/bundled) + SkillHub marketplace

Design notes: we keep the platform-documented frontmatter dual switches (disable-model-invocation / user-invocable) instead of skill-hub's SKILL.md.disabled rename, and keep the trash outside every skill root so provider watchers never observe it.

Layout

PathPurpose
src/index.tsHost entry; plain host object built from injected services (never mutate the Cordis scope proxy)
src/routes.tsHTTP routes under /dsh-tool-explorer/api/* (same-origin enforced on writes)
src/mcp.tsMCP manager: patch-layer CRUD, enable/disable, state derivation, SDK probe
src/skills.tsSkills catalog (registry × lock file × disk), edit/toggle, per-axis model/user invocation, frontmatter parsing (full YAML)
src/skills-trash.tsRecoverable trash: delete-to-trash, restore, purge, empty (<dshHome>/skills-trash + manifest)
src/skills-install.tsGitHub install ecosystem: tarball fetch (regional proxy), candidate discovery, lock v3, CLI-compatible folder hash
src/agents-mcp.tsCross-agent MCP import (JSON + Codex TOML subset parser)
src/patch-text.tsPatch-layer dialect: parse (!!js tolerant), surgical row edits, [] placeholder handling, atomic writes
scripts/Client bundle wrapper/check, self-test, and local dsh-mcp-client patches (see below; the patch tooling also ships in the npm package)

Local dsh-mcp-client patches

Two idempotent patches close upstream dsh-mcp-client gaps until the official package gains config support (reported upstream). Re-run them after every dsh upgrade — npm/pnpm upgrades and dshmarket updates all restore the official file, and both symptoms come straight back:

pnpm run patch:mcp          # from a repository checkout
pnpm run patch:mcp:check    # report only; exit 2 when a patch is missing

The substitutions are anchored to the official text and still match 0.2.1-rc.2 (as they did 0.1.5-rc.2); when upstream edits that region the script reports a layout change instead of corrupting the file.

Installed from npm instead? The tooling ships inside the package, so point node at it (it finds the profile's dsh-mcp-client on its own):

node "$DSH_HOME/profiles/web/node_modules/dsh-tool-explorer/scripts/patch-mcp-client.mjs"
PatchSymptom it fixes
startup-waitA down or hanging MCP server leaves apply() awaiting connection.ready forever; dsh web then never prints dsh web: http://… and never opens the browser (loader.await() gates the announcement). The wait is bounded (3 s default, DSH_MCP_STARTUP_TIMEOUT_MS overrides, 0 disables); the connection keeps working in the background and its tools register when they arrive.
stdio-stderrEvery stdio server inherits its stderr into the dsh console, so FastMCP banners, pino JSON lines and Python tracebacks flood dsh web. stderr is forced to ignore; DSH_MCP_STDERR=inherit restores the official behavior while debugging a server.

Options: --check (report only), --profile <name> (default web), --target <path> (patch one explicit install). Exit codes: 0 all in place, 1 no installation found, 2 a patch is pending or could not be written. Backups are written as index.js.*.bak next to the patched file and always hold the official bytes of the installed version (a stale backup from a previous version is refreshed), so reverting after a bad upstream change is a plain copy back.

Individual entry points (single-patch workflow) remain:

node scripts/patch-mcp-client-stderr.mjs
node scripts/patch-mcp-client-async.mjs

After a dsh upgrade

pnpm run patch:mcp:check    # 2 = the upgrade restored the official file
pnpm run patch:mcp          # re-apply, then restart dsh

The two symptoms are the tell-tale signs: a console flooded with server banners/JSON, and a dsh web that serves the UI but never prints its URL line.

Feedback

Issues, feature requests and upstream discussions:

  • The two local patches above are reported upstream in DeepSeek Harness Discussions #5129 — follow it for the official fix.
  • For anything else about this plugin, open an issue or discussion in this repository.

License

MIT