Introduction¶
The plugin ecosystem for DeepSeek Harness (DSH) is scattered across GitHub, with repositories categorized under the dsh-plugin topic, totaling over a thousand. Finding plugins typically involves opening the topic page, browsing through repositories one by one, checking installation commands in the README, and manually executing dsh plugin add. Installed plugins are scattered across profile configurations, and there is no unified interface for updates or uninstallation.
The following dsh-plugin-marketplace, maintained by AwesomeHou, is a permanent DSH plugin. It synchronizes the GitHub dsh-plugin topic in real-time to the “Plugin Marketplace” tab in the Harness settings page. It supports searching, paginated browsing, one-click installation, and registers tools like market_search and market_install for the agent, enabling the model to search for and install plugins autonomously.
What This Is¶
dsh-plugin-marketplace serves two main purposes:
-
Settings UI — Adds two new tabs, “Plugin Marketplace” and “Installed”, under “Settings → Plugins”, alongside the built-in “Plugin Configuration” and “Plugin List”.
-
Host Tools — Exposes capabilities such as market search, installation, listing installed plugins, and updates to the agent via
ctx.tools.register.
The data source is the GitHub Search API, fetching real-time data from the github.com/topics/dsh-plugin topic; the manifest source is declared at the top of the page. The current version is v0.3.1, categorized as a networked tool, under the MIT license.
Core Features¶
Browsing and Searching¶
-
Full Pagination: Fetches all repositories under the topic page by page, defaulting to 50 per page with a maximum of 100. The UI provides a “Load More” option;
totalreflects the realtotal_countreturned by GitHub, not limited to the first 50. -
Keyword Search: Both the search box and the
market_searchtool use GitHub’sqparameter to search within the entire topic scope, not just filtering loaded pages.
One-Click Installation with Progress Feedback¶
Each plugin card provides an “Install” button. Clicking it starts an asynchronous installation task via POST /api/market/install. The Host side’s planInstall first detects the repository type:
-
If the root directory’s
package.jsondeclaresdsh.bundle/dsh.clientas a root-level plugin, it follows the standarddsh plugin add -w <spec>. -
If the plugin is published to npm, it prioritizes installing the npm version with
name@<latest>(pnpm also installs runtime dependencies likewsandnode-pty). -
If not published to npm, it uses the GitHub spec.
-
For monorepo/workspace roots, it clones to
$DSH_HOME/marketplace-srcand builds with corepack pnpm, then registers withlink:.
After installation, it verifies the result: confirms the plugin is in dsh.profile.bundles, the entry file exists, and runtime dependencies are resolvable. The card inline displays an App Store-style progress bar (stage, percentage, speed, ETA, real-time logs) and can be canceled.
pnpm Compatibility and Installation Failures¶
Adopting dsh-market’s approach, all installation subprocesses inject CI=true to prevent pnpm ≥10 from waiting infinitely for interactive prompts without a TTY. Upon detecting major pnpm version drift (e.g., ERR_PNPM_VIRTUAL_STORE_DIR_MAX_LENGTH_DIFF), it automatically runs pnpm install to rebuild modules and retry. Failures are classified by classifyPnpmFailure, providing actionable messages covering scenarios like pre-release peer resolution, build script interception, phantom dependency 404s, and missing workspaces.
If pnpm/git hangs with zero output on slow networks, the Host-side stall watchdog (default 120 seconds, overridable via DSH_MARKET_STALL_MS) kills the process tree and retries once directly; if it stalls again, it fails quickly, prompting to check the network or use “Let agent install”.
Agent Tools¶
Four tools are registered on the Host side:
| Tool | Function |
|---|---|
market_search(q?, page?, perPage?) |
Returns a JSON list of topic repositories (full name, stars, language, description, URL). |
market_install(spec) |
Installs to the web profile via dsh plugin --profile web add -w <spec>; validates if the spec contains shell metacharacters before execution. |
market_installed() |
Lists third-party plugins installed in the web profile, along with enable status, version, and update availability. |
market_update(name) |
Updates the specified plugin to the latest version. |
Installed Plugin Management¶
The “Installed” tab only shows third-party (post-install) plugins; built-in plugins from the profile template are not listed, as noted at the top of the page.
-
Disable / Enable (
/api/market/set-enabled): Removes or re-adds todsh.profile.bundles, preserving dependencies. -
Uninstall (
/api/market/uninstall): Runsdsh plugin --profile web remove <name>and also removes from the bundle layer. -
Update (
/api/market/update): Checks against the npm registry’slatestor the GitHub default branch’spackage.jsonversion; if a new version is available, the card shows “Updatable”.
All operations require restarting Harness to take effect.
Fallback: Let Agent Install¶
When direct installation fails (especially with pre-release peer dependencies or non-standard structures), the card will show “Let agent install”. The Host ensures a dedicated workspace $DSH_HOME/marketplace-install; the client starts a new conversation in that workspace and sends a fixed prompt, letting the agent read the README and decide the installation method without polluting the current session. If the runtime is unavailable, it falls back to the current session.
For peer dependency failures (e.g., @deepseek-ai/*@^0.1.0-rc.6 triggering ERR_PNPM_NO_MATCHING_VERSION), the Host provides an explanation instead of a bare exit 1.
Marketplace Self-Update¶
This plugin checks the latest version of its own GitHub repository’s package.json; when a new version is available, it displays a vX → vY · Update Now banner at the top of the “Plugin Marketplace” and “Installed” tabs.
Installation and Activation¶
The official installation command is as follows. After installation, you need to restart Harness for it to take effect.
dsh plugin --profile web add https://github.com/AwesomeHou/dsh-plugin-marketplace
You can also let the agent install it:
Help me install this plugin https://github.com/AwesomeHou/dsh-plugin-marketplace
Before installation, ensure the web profile has a package.json or pnpm-workspace.yaml; if missing, market_install and /api/market/install will return actionable error messages instead of pnpm’s --workspace-root may only be used inside a workspace.
Typical Usage¶
Browsing and Installing in the Settings Page¶
- After restarting Harness, open “Settings → Plugins → Plugin Marketplace”.
- Enter keywords in the search box or click “Load More” to paginate.
- Find the target plugin, click “Install”, observe the progress bar; restart Harness after completion.
Let Agent Search and Install¶
The agent can call market_search to search the topic, then use market_install to install:
market_search(q="markdown", page=1, perPage=20)
market_install(spec="owner/repo")
After installation, the agent should prompt the user to restart Harness.
Viewing and Updating Installed Plugins¶
market_installed()
market_update(name="some-package-name")
Or directly operate disable, enable, uninstall, or update in the “Installed” tab.
Use Cases and Notes¶
Who It’s For
- Developers who frequently try community plugins in DSH.
- Workflow builders who want the agent to autonomously discover and install repositories under the
dsh-plugintopic. - Users who need to centrally manage the enable status and versions of third-party plugins in the
webprofile.
Notes
- Plugins run with the current dsh process permissions; check the target repository’s source code and license before installation.
- Root-level plugins cannot be installed with
link:; monorepo scenarios are handled by the Host via automatic cloning and building. - Built-in plugins are provided with Harness and cannot be disabled or uninstalled in this marketplace.
- DSH community directories (e.g., SkillHub) are independent sites with no official affiliation with DeepSeek / High-Flyer; this marketplace synchronizes GitHub topics and is not an official app store.
Links¶
- Community directory page: https://www.skillhub.cn/plugins/AwesomeHou/dsh-plugin-marketplace
- GitHub repository: https://github.com/AwesomeHou/dsh-plugin-marketplace
- Plugin topic source: https://github.com/topics/dsh-plugin