Skip to main content

dsh-plugin-workshop

25Stars3Forks3Issues0Watchers

DSH Plugin Workshop: Serverless, browse/search/install/uninstall third-party plugins directly in the DSH Web sidebar, supports Chinese keywords, GitHub Trending view, and local plugin management.

Evidence5/5methodologySourceInstallMaintenanceDSH versionSecurity scan
Machine-auditedInstall commandRepo verifieddsh-plugin topicLicenseREADMEAI wiki
Language
JavaScript
License
MIT
Branch
master
deepseek-harnessdshdsh-pluginworkshop

Install

cmdweb profile
$ dsh plugin --profile web add github:yyyyukari/dsh-plugin-workshop

Run the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial

Install via your agent

Install the DeepSeek Harness plugin yyyyukari/dsh-plugin-workshop for me: review the repository at https://github.com/yyyyukari/dsh-plugin-workshop first, then run the install command and verify the plugin loads successfully.

Paste this instruction to the DSH Web GUI assistant — it will install and verify for you.

One-Line Description

A Steam Workshop-like plugin browser embedded in the DSH Web UI sidebar, with no deployment required, using GitHub as the directory. Supports search, Chinese keywords, hot/trending lists, one-click install/uninstall, and local plugin management.

Core Features

  • Sidebar Persistent Entry: A "🧩 Plugin Workshop" button cloned right below the "New Session" button in the DSH sidebar, styled consistently with the official one, automatically restored after refresh and restart.
  • Search DSH Plugins Only by Default: Defaults to querying topic:dsh-plugin, with results automatically filtering out official core repositories; when viewing the full site, it performs plugin feature validation (identifying the dsh field in package.json or cordis.yml).
  • Search and Sorting: Supports Chinese keyword auto-mapping to English (built-in vocabulary like "天气→weather", "翻译→translate"); can sort by hottest, newest, or trending in the last 7/30/90 days.
  • Smart One-Click Install/Uninstall: The detail page first pre-checks repository structure, following different paths for four types: bundle (standard plugin package), nested (single package in monorepo), preset (no dsh declaration), and multi (multiple packages); those that cannot be one-click installed degrade to "manually install via author-provided commands".
  • Installed Management: The "📦 Installed" view merges three sources: profile dependencies, activation lines, and local presets, displaying plugin type, activation status, and installation source, supporting one-click update and uninstall.
  • Bilingual Experience: Description can be toggled between original text/machine-translated Chinese; detail page can translate the entire README (Google gtx, with caching).
  • Quota Transparency: Real-time display of remaining GitHub search quota and recovery countdown; optional GitHub Personal Access Token to increase quota from 10 requests/min to 30 requests/min.

Technical Implementation

  • Language: JavaScript (ESM on host side, browser side bundled by scripts/build.mjs into CJS and injected into the platform)
  • Key Dependencies: Host side uses only Node.js built-in modules (node:child_process, node:fs, node:crypto, node:http/node:https); browser side requires react through platform seeding; data sources are api.github.com + raw.githubusercontent.com + Google gtx translation
  • Architecture Pattern: Dual-end architecture — host side (lib/index.js) registers same-origin HTTP routes on webServer service for install/uninstall/update and pre-check; client side (lib/client.js) persists in sidebar as a React overlay + DOM cloning of the official button; automatically joins profile bundles via package.json#dsh.bundle.patch for one-click activation
  • Entry Files: lib/index.js (host), lib/client.js (browser, built from src/client/index.js)

Use Cases

DSH users who want a centralized place to browse third-party plugins scattered across GitHub without manually searching each repository. The workshop encapsulates search, feature validation, hot sorting, installation preview, and one-click install/update/uninstall in a sidebar button, making it friendly for those who don't want to fiddle with command lines.

Prerequisites and Compatibility

DependencyMin VersionDescription
DSHNot declaredRequires DSH to support webServer service registration and dsh.bundle.patch mechanism (README demo uses dsh plugin --profile web add command)
Node.jsNot declaredHost side uses node:crypto's randomUUID, browser side uses AbortSignal.timeout, actually requires a relatively new Node runtime (bundled with DSH)
PlatformCross-platform (search/browse); one-click install/uninstall only smooth on WindowsSee "Known Issues" below for details
Native ModulesNoneOnly depends on Node built-in modules, no native bindings introduced
OtherOptional Git clientOne-click install/update works via git clone / git pull, missing Git shows clear prompts in UI

Installation

dsh plugin --profile web add github:yyyyukari/dsh-plugin-workshop

Configuration

This plugin has no options to fill in the frontend or host configuration panel; the following two are optional environment variables, only needed when enabling community statistics badges.

ConfigTypeDescriptionDefault
DSH_HOMEEnvironment VariableHost side used to locate profile directory, .agent-presets, cordis patch files, etc.~/.dsh
DSH_WORKSHOP_STATS_URLEnvironment VariableOptional: points to self-deployed statistics service address; if not set, workshop stays in zero-server mode, only using GitHub searchNot set

There's also one built-in browser localStorage on the plugin side: dsh-plugin-workshop:token, which saves the GitHub PAT; it only exists in the local browser and is cleared when browser data is cleared.

FAQ

Q: Where is the plugin interface after installation?

A: Open DSH Web UI, and a "🧩 Plugin Workshop" button will appear right below the "New Session" button in the sidebar; additionally, a workshop tab will be added in "Settings → Plugins".

Q: What's the difference from centralized marketplace solutions like DSH_Creative_Workshop?

A: The workshop takes a zero-infrastructure path — no directory service deployment, no account system; search/hotness/installation counts all come from GitHub public APIs; the downside is that search results are affected by GitHub Search API rate limits (10 requests/min for anonymous).

Q: How to enable installation badges and real trending lists?

A: They are off by default (zero-server mode). Deploy the Cloudflare Worker + D1 per remote/README.md, set environment variable DSH_WORKSHOP_STATS_URL=https://your-subdomain.workers.dev for the dsh web process, then restart. The plugin will automatically report install/update/uninstall events and display community installation badges and real trending lists.

Q: Installation failed with error "pnpm blocked package with prepare build script" — what to do?

A: This is triggered by build scripts that pnpm rejects by default. Follow the error prompt, add the corresponding package's onlyBuiltDependencies / allowBuilds in the profile directory's pnpm-workspace.yaml, then retry one-click installation.

Q: Uninstall shows "pnpm remove failed, no changes made" — will it leave trash?

A: No. The workshop follows a "no change on failure" principle — when pnpm remove fails, it won't delete activation lines or local copies; profile dependencies remain unchanged; after retry or manual handling, the plugin still works.

Q: One-click install button is grayed out / detail page shows "recommended manual" — why?

A: The detail page's pre-check (probe interface) rates the repository as one of four types: bundle/nested/preset/multi. When the repository is a multi-package monorepo, has no dsh declaration in root directory and no cordis.yml, has prepare build scripts, or the local machine is not Windows, it will be marked as "risky" or "recommended manual", and the installation command extracted from README will be displayed for you to copy and execute.

Difficulty Level

Beginner — installation is just one dsh plugin add command; after activation, the sidebar button can be directly clicked to use; only when enabling community installation badges is additional Cloudflare Worker deployment needed.

Known Issues and Limitations

  • One-click install/update/uninstall dispatches dsh commands through Windows's cmd /c channel; on macOS/Linux, pre-check will be downgraded to "risky/recommended manual" (lib/index.js:552), requiring manual installation commands extracted from the detail page.
  • After successful uninstall, only the command-line version of dsh web (Windows) will automatically restart to refresh the plugin list; DSH running in the desktop App (Electron) won't self-restart, requiring manual App restart (lib/index.js:362-373).
  • Pre-check results are cached for 10 minutes; changes in the same repository structure during that time won't be immediately reflected (lib/index.js:39, 526).
  • "Hottest" in GitHub search results uses stars count as approximate hotness; to get the "real trending list" based on net installation growth, you need to deploy the Worker under remote/.
  • Anonymous search quota is limited by GitHub (10 requests/min); when hitting the limit, you'll be prompted to fill in a Token in ⚙; the Token only exists in localStorage (src/client/index.js:34-36).
  • The plugin's host-side code writes a probe log apply ran: <time> to C:/Users/Administrator/workshop-host-probe.txt on Windows (lib/index.js:439), which is a diagnostic trace that doesn't affect functionality but may attract attention.

Read the usage guide →

Install steps, key points, FAQ and compatibility for this plugin — auto-derived from indexed fields.

Listing badge

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/yyyyukari/dsh-plugin-workshop)

Paste this markdown into your GitHub README to link back to this listing. The badge only states the listing — not a security endorsement.

← Back to plugin directory