dsh-webui-market-plugin: A Community Plugin Market for DeepSeek Harness
sanqi-normal/dsh-webui-market-plugin
In-harness plugin market for DSH: browse catalog and install/uninstall plugins into a profile.
Browse, install, update, and uninstall plugins directly within the DeepSeek Harness web interface without leaving the browser.
dsh plugin --profile web add github:sanqi-normal/dsh-webui-market-plugin- Category
- Integrations & Connections
- Platform
- DSH-Plugin
- Author
- sanqi-normal
- Distribution
- Plugin
dsh-webui-market-plugin Key Features
dsh-webui-market-plugin Repository

dsh-webui-market-plugin Repo Summary
dsh-webui-market-plugin is a community plugin market plugin (DSH plugin) for DeepSeek Harness (DSH) that brings the awesome-dsh-plugin.com plugin catalog directly into the dsh web GUI. It solves the problem of manually copying install commands and switching back and forth to the terminal—now you can browse, search, sort, install, update, and uninstall plugins from the settings panel without leaving the interface. Core capabilities include a categorized catalog with search and 'installed' filter, cards with star counts and sorting, a FIFO task queue (fixed bottom-right panel with real-time status and pnpm logs), an 'Ask DSH' button that sends errors to AI for troubleshooting, automatic handling of pnpm supply-chain policy blocks, and disable/enable and local plugin management. Maintained by Sanqi-normal, licensed under MIT, last updated 2026-08, currently 60 stars.
What core features does dsh-webui-market-plugin support as a DSH plugin?
After installation, open Settings → Plugins → Plugin Market to use it. The catalog is grouped by category, supports search and 'installed' filter; each card shows GitHub star count (hidden if no data), and can be sorted by 'Hottest' (star descending, no-star last) or 'Latest' (added date), or restore the official default order; large catalogs render progressively in batches to avoid lag. Click 'Details' to see the official install command (including target profile). Install, update, and uninstall form a FIFO task queue: multiple plugins can be queued continuously, the task panel is fixed at the bottom-right, showing 'queued / verifying / executing / completed / failed / terminated / timeout' in real time, with options to cancel queued items, terminate running items, and view pnpm logs for each task; each task times out after 120 seconds by default (adjustable via environment variable DSH_MARKET_OP_TIMEOUT_MS), and temporary pnpm network errors (like GET ... error / ETIMEDOUT / ECONNRESET) trigger an automatic retry once, with proxy/mirror troubleshooting hints on persistent failure; 'Update All' adds all updatable plugins to the queue sequentially; the 'Clear' button at the queue head clears all completed/failed records at once (or individually), and the clear syncs to the server so it won't reappear after refresh.
How do I install dsh-webui-market-plugin?
Install from GitHub source with:
dsh plugin --profile web add github:sanqi-normal/dsh-webui-market-plugin
After installation, restart the web service to take effect:
pnpm dsh web
GitHub source installation runs the package's prepare script; if pnpm blocks it, add the package name to the profile's pnpm-workspace.yaml allowBuilds and retry.
How does dsh-webui-market-plugin handle failures and the 'Ask DSH' feature?
After an install, update, or uninstall fails (including timeout, terminated, or rejected), the failure dialog and the task queue's failed rows show an 'Ask DSH' button. Clicking it creates a new conversation in the frontend and automatically sends the operation target, status, environment info, and full error log as a prompt to the AI for troubleshooting or explanation. Additionally, pnpm ≥11 enables a 24-hour minimumReleaseAge supply-chain policy by default; when ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION occurs, the market automatically merges the offending name@version into the profile's pnpm-workspace.yaml minimumReleaseAgeExclude (with multiple versions written as name@v1||v2 to avoid pnpm only recognizing the first rule) and retries once, no manual config needed.
How does dsh-webui-market-plugin manage disable, enable, and local plugins?
Disabling keeps dependencies and disk files, only moving the plugin out of the active bundle layer (remains disabled after restart); enabling restores in original order without reinstall. Card action buttons are arranged horizontally at the bottom to avoid crowding. 'Local Plugins' lists all dependency-managed plugins (including those installed outside the market and client-only/normal dependencies not in the bundle layer), marking in-dir/out-dir, disabled, and source type, with direct disable, enable, or uninstall (built-in bundles and local link/file sources won't offer deletion). Each plugin card shows the real installed status (synced with the profile's package.json), identified by 'author + repo' (owner/repo); if a directory has same-name plugins (e.g., two authors' dsh-memory), only the installed author's card is marked, not the other's. The 'Local Plugins' list also shows the resolved owner/repo identity.
What are the safety and limitations of dsh-webui-market-plugin?
Installation only accepts github: sources from the curated registry (awesome-dsh-plugin.com), rejecting anything outside, consistent with dsh-market's whitelist policy. When a catalog entry has an npm mapping, it prefers installing/updating via the npm package name (npm tarballs go through CDN/mirrors, not GitHub downloads); only GitHub-only plugins without npm releases use the GitHub source. Users can set a domestic registry mirror (e.g., registry=https://registry.npmmirror.com) in npm/pnpm config, and npm-source installs/updates automatically use it. After whitelist approval, if the plugin doesn't declare a web client half (dsh.client.platform === 'web'), a trial boot is performed: rebuild the composition in a temporary DSH_HOME using the web profile template, install the candidate plugin with the same dsh plugin add, then actually start with --port 0 (system free port), passing only if the dsh web: ready line appears.