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.
- Language
- JavaScript
- License
- MIT
- Branch
- master
Install
$ dsh plugin --profile web add github:yyyyukari/dsh-plugin-workshopRun 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 thedshfield inpackage.jsonorcordis.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.mjsinto 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 requiresreactthrough platform seeding; data sources areapi.github.com+raw.githubusercontent.com+ Google gtx translation - Architecture Pattern: Dual-end architecture — host side (
lib/index.js) registers same-origin HTTP routes onwebServerservice 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 viapackage.json#dsh.bundle.patchfor one-click activation - Entry Files:
lib/index.js(host),lib/client.js(browser, built fromsrc/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
| Dependency | Min Version | Description |
|---|---|---|
| DSH | Not declared | Requires DSH to support webServer service registration and dsh.bundle.patch mechanism (README demo uses dsh plugin --profile web add command) |
| Node.js | Not declared | Host side uses node:crypto's randomUUID, browser side uses AbortSignal.timeout, actually requires a relatively new Node runtime (bundled with DSH) |
| Platform | Cross-platform (search/browse); one-click install/uninstall only smooth on Windows | See "Known Issues" below for details |
| Native Modules | None | Only depends on Node built-in modules, no native bindings introduced |
| Other | Optional Git client | One-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.
| Config | Type | Description | Default |
|---|---|---|---|
DSH_HOME | Environment Variable | Host side used to locate profile directory, .agent-presets, cordis patch files, etc. | ~/.dsh |
DSH_WORKSHOP_STATS_URL | Environment Variable | Optional: points to self-deployed statistics service address; if not set, workshop stays in zero-server mode, only using GitHub search | Not 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
dshcommands through Windows'scmd /cchannel; 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>toC:/Users/Administrator/workshop-host-probe.txton Windows (lib/index.js:439), which is a diagnostic trace that doesn't affect functionality but may attract attention.
简体中文 | English
DeepSeek Harness(DSH)的创意工坊式插件浏览器——零服务器、单包开箱即用,内置在 DSH Web UI 侧栏「新会话」按钮正下方。
与 DSH_Creative_Workshop 的中心化市场平台路线不同,本项目走零基础设施路线:目录、搜索、热度、发布时间全部由 GitHub 免费提供,不部署任何控制平面或账号系统,装进 profile 即用。
✨ 特性
- 侧栏常驻入口:官方「新会话」按钮正下方,同款样式(DOM 克隆官方按钮,宽/窄侧栏自适应),刷新、重启都不丢
- 搜索与排序:关键词搜索(支持中文,自动映射英文)、★最热 / ⏰最新、飙升榜时间窗口(近 7/30/90 天新建 + 热度排序,Steam Trending 近似)
- 默认只搜 DSH 插件:默认「插件话题」(
topic:dsh-plugin);搜索结果自动排除官方 harness 等核心仓库(查询级-repo:过滤,不再占据榜首);全站模式自带插件特征验证(检查package.json的dsh字段 /cordis.yml等,走 raw CDN 不耗 API 额度),默认过滤无关仓库 - 已安装管理:工具栏「📦 已安装」视图——合并 profile 依赖/激活行/本地预设展示本机插件(类型、激活状态、安装来源),一键更新(pnpm update / git pull)与卸载
- 双语体验:描述一键切换原文/中文机翻,README 可整篇翻译(Google 翻译接口,自动缓存)
- 智能一键安装/卸载(预检分级):详情页自动预检仓库结构,给出「可直接安装 / 有风险 / 建议手动」三级评级——标准 bundle/nested/preset 一键安装照旧;特殊结构(多包 monorepo、非插件仓库、带构建脚本等)自动降级为作者给出的安装方式(从 README 提取安装命令,可复制,绝不自动执行)。卸载按安装方式逆向清理(pnpm remove 失败则不动文件、不留失效链接;成功后自动重启 dsh web 刷新插件表);缺 git 时界面明确提示
- 详情页:星数/fork/语言/许可证/创建时间、README 轻量渲染、手动安装命令、GitHub 直达
- 额度透明:实时显示 GitHub 搜索剩余额度与恢复倒计时;可选填 GitHub Token(30 次/分,仅存本机浏览器)
- 零服务器:数据全部来自 GitHub 搜索 API(浏览器直连,CORS)+ raw.githubusercontent.com(特征验证与 README);可选接入统计服务后解锁「社区装机徽章 + 真·飙升榜」(见
remote/README.md,不部署零影响)
📦 安装
以 web profile 为例:
# 一条命令即可:本包在 package.json 声明了 dsh.bundle.patch,
# dsh plugin add 会自动把它加入 profile 的 dsh.profile.bundles,
# 启动时其 cordis.patch.yml 作为 bundle 补丁层自动激活,无需手改配置。
dsh plugin --profile web add "github:yyyyukari/dsh-plugin-workshop"
# 重启 dsh web 并刷新浏览器
手动接入旧流程:把本包加进 profile dependencies,并在
$DSH_HOME/profiles/web/cordis.patch.yml添加:- insert: - id: plugin-workshop name: '@dsh-external/dsh-plugin-workshop'
激活后侧栏「新会话」下方出现「🧩 插件工坊」,点击打开浮层;设置 → 插件 区也有「插件工坊」标签页。
🧭 使用
| 需求 | 操作 |
|---|---|
| 找 DSH 插件 | 默认即「插件话题」列表(topic:dsh-plugin 收录的仓库) |
| 看飙升榜 | 时间下拉选 近7天/近30天/近90天飙升 + ★最热 |
| 中文搜索 | 直接输入「天气」「翻译」等中文词,自动映射英文关键词 |
| 看中文描述 | 工具栏「描述中文」;详情页「翻译 README」 |
| 安装/更新/卸载插件 | 详情页「一键安装(订阅)/ 更新到最新 / 卸载」,按仓库类型自动选择安装路径(需要本机 git,缺失时会提示) |
| 提高搜索额度 | 工具栏 ⚙ → 填入 GitHub Personal Access Token |
🏗️ 架构
- 宿主侧(
lib/index.js):在webServer服务上注册同源 HTTP 路由/dsh-plugin-workshop/api/{status,install,update,uninstall};智能安装(bundle/preset 类型检测)与逆向卸载(严格输入校验 + 自定义头 CSRF 防护) - 浏览器侧(
lib/client.js):React + 平台种子模块;DOM 克隆官方按钮 + MutationObserver 自愈;shell.overlay与settings.plugins.tab双挂载 - 数据流:GitHub 搜索 API(匿名 10 次/分)→ 特征验证与 README(raw CDN,无额度)→ 机翻(Google gtx)
- 安全:不执行任何第三方代码;Token 仅存 localStorage
🗺️ Roadmap
- v1.1 一键安装/更新(宿主 API:git 探测、clone/pull 到
.agent-presets,缺失时界面提示) - v1.2 智能安装/卸载:bundle 型走官方
dsh plugin add+ 激活行,preset 型走.agent-presets,卸载逆向清理(实测通过) - v1.3 遵循 DSH bundle 规范:
package.json声明dsh.bundle.patch(dsh plugin add一条命令自动激活);智能安装兼容三种仓库形态(bundle / nested / preset) - v1.4 「已安装」管理视图(更新/卸载、类型与激活状态);搜索结果排除官方核心仓库;卸载安全化(失败不改动、自动重启刷新)
- v1.5 可选统计服务(Phase A):匿名装机埋点 + 社区装机徽章 + 真·飙升榜(Cloudflare Worker 参考实现见
remote/,未部署时零影响) - 社区索引收录:✅ 三大列表全部收录——awesome-dsh-plugin(UI Enhancements 分类)/ awesome-deepseek-harness / awesome-dsh-plugins
📄 License
MIT
Read the usage guide →
Install steps, key points, FAQ and compatibility for this plugin — auto-derived from indexed fields.
Listing badge
[](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.