dsh-web-ui
zhu1090093659
Plugin and skin collection for DeepSeek Harness (DSH) Web UI - task board, git graph, right-side panel, remote mobile UI, pet, live token stats, and skin center.
PROJECT TOPICS
PROJECT README
Plugin Workshop for the DeepSeek Harness web GUI — a curated plugin catalog that lives in this very repo.
A Settings → Plugin Workshop (插件工坊) page with:
dsh plugin CLI in the background);.node) are detected and prompt for a restart instead.The catalog is this repo's own data/plugins.json — anyone can add a plugin by opening a pull request (see Submitting a PR). The plugin fetches it live at runtime; there is no offline cache or snapshot.
One command from anywhere (once published to npm):
dsh plugin --profile web add @cyber-moshen/dsh-plugin-market
From a local checkout:
dsh plugin --profile web add ./dsh-plugin-market -w
Restart the web server, then open Settings → Plugin Workshop. After that, installing/updating pure-JS plugins needs no restart.
#tag on a card to search that tag.Install button (installs via the npm package).Installed vX + Update → vY.Installed vX.Update.Settings button next to the search box)GITHUB_TOKEN / GH_TOKEN environment variables take precedence. Saving an empty box never clears a stored token; use the Clear button to remove it.Installing a bad plugin that bricks DSH at the next boot is the deadliest failure mode for a market tool. dsh plugin automatically mounts every dependency that declares dsh.bundle as its own profile layer, so "kitchen-sink" aggregate plugins (e.g. the dsh-web-ui family) routinely duplicate loader entries (duplicate loader entry id: ui-skin-center) and kill the whole process on startup. The workshop defends against this on three levels:
dsh.bundle is listed. If "fan-out" is detected (one plugin would enable many profile layers at once), a clear warning is shown and the install requires an explicit "I understand the risk" confirmation.pnpm finishes and before any hot-apply, the new bundle stack is composed in a throwaway subprocess with the exact same loader/include machinery the real boot uses (scripts/compose-check.mjs). Duplicate loader ids, invalid config, and missing packages all surface there.package.json is restored from a pre-op snapshot and the package is uninstalled; the task shows "auto-rolled back" with the reason. The profile is never left in an unbootable state, no matter what was installed.There is also an offline repair script for profiles that are already broken (e.g. a plugin installed from the CLI directly):
node <dsh-plugin-market checkout>/scripts/repair.mjs --profile web
It repeatedly runs the composition check and removes non-base bundle layers until the profile composes again.
dsh-plugin-market), set an expiry.repo scope (that is all this plugin needs).✓ Token saved (···xxxx) line appears once a token is stored.Keep the token private — it grants write access to your repositories.
The catalog is a single JSON file: data/plugins.json.
data/plugins.json in this repo on GitHub."plugins": [...].A validation workflow runs on every PR and fails on malformed JSON or missing fields (run it locally with node scripts/validate.mjs data/plugins.json).
Entry shape (keep it simple — everything else is derived from the URL):
{
"url": "https://github.com/you/your-plugin", // your repo URL (required, unique)
"tags": ["记忆增强", "UI美化"], // 0-5 searchable tags (optional)
"npm": "your-npm-package" // required — install/update go through the npm package
}
The card name, author and stats are all derived from url; npm is required — installation and updates go through the npm package (GitHub installs are not used).
See CONTRIBUTING.md for details.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: marketplace、web-ui。