Preface¶
The official repository of DeepSeek Harness (dsh) has a clear positioning: Everything is a Plugin. Model adaptation, tools, sessions, sandboxes, even the agent loop itself can be replaced with plugins. The official also recommends that plugin repositories add the GitHub topic dsh-plugin for easier discoverability.
Problems have emerged as a result. Topics are just tags, and the number of repositories is growing rapidly. The README and community directory both mention “1800+”; on 2026-08-18, querying topic:dsh-plugin via the GitHub Search API returned a total_count of 6580. The common workflow for installing a plugin still involves opening GitHub, copying dsh plugin add ..., and returning to the terminal to run the command. A number of “plugin marketplace” implementations have also appeared in the community, with varying capabilities.
This article only introduces dsh-plugin-marketplace maintained by AwesomeHou. It synchronizes the dsh-plugin topic in real time into the “Settings → Plugins” section of the web interface, supporting search, paginated browsing, and one-click installation. It also registers model tools such as market_search and market_install, allowing agents to search for and install plugins on their own. This is a community open-source plugin, not an official app store from DeepSeek / Magic Square. The community directory site deepseek-harness-plugin.com is also an independent aggregator and has no affiliation with the official repository.
The current version of this repository is 0.3.0, licensed under MIT, with the primary language being JavaScript. As of 2026-08-18, the star count read from the GitHub API is 27.
What is this¶
dsh-plugin-marketplace is a persistent plugin (bundle) for interface enhancement, maintained by AwesomeHou. The repository is located at:
https://github.com/AwesomeHou/dsh-plugin-marketplace
It does two things:
1. Registers two tabs in Settings → Plugins: “Plugin Marketplace” and “Installed”. The former pulls repositories tagged with dsh-plugin via the GitHub Search API in paginated batches; the latter only lists third-party plugins installed later.
2. Registers a set of tools on the Host side using ctx.tools.register, allowing models in sessions to directly search for plugins, install plugins, view the list of installed plugins, and update plugins.
package.json declares the browser platform as dsh.client.platform: web, so it is mounted on the web profile, not the headless environment. You need to restart the harness after installation for the tabs to appear.
The data source is specified at the top of the “Plugin Marketplace” page: the GitHub topic dsh-plugin, synchronized in real time via the Search API. This is not a curated list—all repositories under this topic will be included. You still need to review the source code and license before installing.
Core Features¶
The following capabilities are documented in the repository README and package.json, and only confirmed content is included here.
1. Full Paginated Loading, Not Just the First 50 Items¶
The Host pulls topic repositories page by page from the GitHub Search API, with a default of 50 items per page and a maximum of 100. The interface has a “Load More” button. The total count uses the real total_count returned by the API, with no hard limit of “only showing 50 items”.
2. Search Uses GitHub’s Native q Parameter, Not Local Filtering¶
Both the search box on the settings page and the market_search tool pass keywords to GitHub’s own query system. The search scope covers the entire topic, not just the dozens of items already loaded on the current page.
3. Four Tools for Models¶
The tools registered on the Host side are as follows:
| Tool | Function |
|------|----------|
| market_search(q?, page?, perPage?) | Returns JSON data of topic repositories: full name, stars, language, description, URL |
| market_install(spec) | Executes dsh plugin --profile web add -w <spec> to install into the web profile. Validates that the spec does not contain shell metacharacters before execution; prompts that the harness needs to be restarted after completion |
| market_installed() | Lists third-party plugins installed in the web profile: enabled status, current version, latest version, whether updates are available (including the marketplace plugin itself). Built-in plugins are not listed here |
| market_update(name) | Updates a specified installed plugin to the latest version, taking effect after restart |
4. One-Click Installation on Cards, Prioritizing npm¶
Each marketplace card has an “Install” button. Clicking it sends a POST /api/market/install request, and the Host first uses planInstall to determine the repository format:
- For root-level plugins whose root package.json declares dsh.bundle / dsh.client, use the standard dsh plugin add -w command.
- Plugins already published to npm are installed via name@version first, without pulling from GitHub. pnpm will include runtime dependencies into the profile.
- For unpublished plugins, use the GitHub spec.
- For monorepo/workspace roots, clone the repository to $DSH_HOME/marketplace-src, build it with corepack pnpm, then register it via link:. The README clearly states: Do not use link: to install root-level plugins.
After installation, result validation is performed: whether the plugin is added to dsh.profile.bundles, whether the entry file exists, and whether runtime dependencies can be resolved. The card shows a progress bar with stages, percentage, speed, ETA, and real-time logs, and can be canceled.
If direct installation fails (for example, mismatched pre-release peer dependencies), a “Let agent install” button will appear on the card. The Host will prepare a dedicated workspace $DSH_HOME/marketplace-install, send a fixed prompt to the agent in a new session, and let it read the README to decide how to install, to avoid polluting the current conversation. If the runtime is unavailable, it will fall back to the current session.
5. Installed, Update, Disable, Uninstall¶
The “Installed” tab only displays third-party plugins installed after the initial setup. Built-in packages provided by the profile template cannot be disabled or uninstalled here, with an explanation at the top of the page.
- When a new version is available, the card will be marked “Update Available”. Version comparison uses the latest tag from the npm registry for npm plugins; for GitHub plugins, check the version field in package.json on the default branch.
- “Disable / Enable” moves the plugin out of or back into dsh.profile.bundles, while dependencies remain intact.
- “Uninstall” executes dsh plugin --profile web remove and removes it from the bundle list.
Disabling and uninstalling both require restarting the harness. The marketplace plugin itself also reads package.json on GitHub to check for self-updates, and a banner vX → vY · Update Now may appear at the top of both tabs.
6. Provide Actionable Reasons for Installation Failures¶
The README lists several installation-time handling measures that are not interface features but will be encountered during actual plugin installation:
- Inject CI=true into child processes to prevent pnpm 10 and above from hanging waiting for interaction in non-TTY environments.
- If pnpm major versions mess up the modules directory (such as ERR_PNPM_VIRTUAL_STORE_DIR_MAX_LENGTH_DIFF), automatically run pnpm install to rebuild and retry.
- For issues like pre-release peer dependency mismatches, build script blocking, missing ghost dependency 404s, missing workspaces, or pnpm not in PATH, classify them into readable error messages instead of just returning exit 1.
- A stall watchdog (default 120 seconds, configurable via the environment variable DSH_MARKET_STALL_MS) monitors for long periods of zero output during downloads. It will first retry a direct connection before failing quickly.
Installation and Activation¶
The installation command given on the community directory page is (as per the original page text):
dsh plugin add github:AwesomeHou/dsh-plugin-marketplace
The author’s README specifies a command that explicitly installs to the web profile, which aligns with this plugin’s “only provides a web client” design. For actual use, this command is more recommended:
dsh plugin --profile web add https://github.com/AwesomeHou/dsh-plugin-marketplace
You need to restart the harness after installation. You can also directly tell the agent:
Help me install this plugin https://github.com/AwesomeHou/dsh-plugin-marketplace
The directory page also reminds users that the plugin will run with the permissions of the current dsh process, and may execute code during installation. Please check the source code repository and license before installing. For reproducible installations, pin the commit hash, for example:
dsh plugin add github:AwesomeHou/dsh-plugin-marketplace#<commit>
Replace <commit> with the real commit SHA from the repository, do not leave this placeholder.
Typical Usage¶
- Confirm that the DeepSeek Harness Web UI can run locally (the official documentation uses
npx @deepseek-ai/dsh web, with the default addresshttp://127.0.0.1:3080). dsh is currently in developer preview, and the API may be incompatible. - Install the plugin into the web profile following the previous section, then restart
dsh web. - Open the web page and go to Settings → Plugins. In addition to the built-in “Plugin Configuration” and “Plugin List”, there should now be two new tabs: “Plugin Marketplace” and “Installed”.
- Use the search box on the “Plugin Marketplace” page to search by name or keyword; click “Load More” for more results.
- Open the target card, first check the repository address and description, then click “Install”. The progress bar will display stages and logs. Do not expect
link:installation for root-level plugins. - After successful installation, restart the harness, then return to “Installed” to check the enabled status and version. You can disable, update, or uninstall plugins from this tab.
- If you want the agent to handle the work, you can directly ask it to search for “visual plugins”, “sidebar”, etc., using
market_search; confirm the spec and then ask it to runmarket_install. The tool will reject specs containing shell metacharacters before installation.
You can use the script provided in the repository for development self-checks:
npm run check
It only performs syntax checks on lib/index.js and lib/client.js.
Applicable Scenarios and Notes¶
This tool is suitable for:
- Users already using the DSH Web UI who do not want to copy installation commands from the GitHub topic page every time.
- Users who want agents to find plugins based on current tasks, provide a list of repositories, and then let them confirm the installation.
- Users who need to view third-party plugin versions, disable, and uninstall them in a unified settings page, rather than only using dsh plugin add.
Points to note:
1. Permissions and Sources. Plugins run with the permissions of the current dsh process. The marketplace synchronizes the GitHub topic, not an officially reviewed store. Clicking “Install” means pulling third-party code into your own profile. Open the corresponding repository to review the README, package.json, and license before installing.
2. Web-Only Coverage. dsh.client declares platform: web. Headless or other profiles will not have these tabs.
3. Restart Required. Installation, update, disable, and uninstallation all require restarting the harness to take effect, as noted in the README.
4. Built-in Plugins Cannot Be Modified. The “Installed” tab does not list packages provided by the profile template, and you cannot uninstall them here.
5. Environmental Dependencies. One-click installation calls dsh plugin and pnpm. If the web profile lacks package.json or pnpm-workspace.yaml, the API will return instructions on how to complete the workspace instead of the unreadable pnpm error --workspace-root. Poor network connectivity or unreachable GitHub will cause the watchdog to abort installations with long periods of zero output.
6. Many Homonymous Products. There are other repositories on GitHub named dsh-market, dsh-marketplace, and dsh-plugin-marketplace from other authors. Use the installation command from the directory page github:AwesomeHou/dsh-plugin-marketplace and this repository’s README as the standard, do not construct the command based on the plugin name alone.
7. Directory Star Count May Be Delayed. The community directory page shows 8 stars when crawled; use the real-time data from the GitHub repository instead.
Summary¶
dsh-plugin-marketplace connects the GitHub dsh-plugin topic into the DeepSeek Harness settings page: users can search, paginate, and one-click install in the “Plugin Marketplace”; models can use market_search / market_install to do the same. It solves the problem of scattered discovery and installation paths, but does not guarantee that every plugin in the topic is usable or secure.
Community directory: https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-plugin-marketplace-awesomehou/
GitHub: https://github.com/AwesomeHou/dsh-plugin-marketplace