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.
WZZNNE/DSH-CyberWorkStation
DSH CyberWorkStation — one-click DeepSeek Harness (dsh) bundle: cyberpunk desktop launcher, SillyTavern-grade Control Deck, 8 production plugins, AI skin studio & markets. Vendored core rc.8, run setup.cmd and go. 一键部署的 dsh 赛博工作站整合包。
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:WZZNNE/DSH-CyberWorkStation
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
中文 | English
A complete toolkit that turns DeepSeek Harness (dsh) from a CLI tool into a visual workstation: a cyberpunk desktop launcher + 8 production-grade plugins + 6 engineering skills + 1 in-dsh skill. Zero core rewrites — every capability is delivered through official plugin extension points, so the upstream core stays independently upgradable at all times.

| SillyTavern-grade Control Deck | Skin manager + community skin market |
|---|---|
![]() |
![]() |

DeepSeek Harness is DeepSeek's official agent framework — powerful, but natively CLI-only with a plain web UI. DSH Suite adds on top of it:
Everything ships as plugins / skills / a standalone launcher — git status in the core repo stays clean forever.
Prerequisites: Windows 10/11, Git, Node.js ≥ 18, Edge or Chrome.
git clone https://github.com/WZZNNE/DSH-CyberWorkStation.git
cd DSH-CyberWorkStation
setup.cmd
setup.cmd automatically: uses the bundled core/ source tree (dsh 0.1.0-rc.8; falls back to cloning upstream when absent) → installs deps and builds (build:lib + build:web) → registers all suite plugins → opens the launcher.
Daily use afterwards: double-click launcher/DSH启动器.exe. Manual mode: node launcher/server.mjs then visit http://127.0.0.1:3090.
Remember to configure an API key (
OPENROUTER_API_KEY/DEEPSEEK_API_KEYenv vars, or~/.dsh/settings.yaml). Core checked out elsewhere? PointDSH_REPOat it; override the launcher port withDSH_LAUNCHER_PORT.
| Capability | Stock dsh | Suite | Form | Authorship |
|---|---|---|---|---|
| Visual management workbench | ✗ CLI only | 10+ pages, zh/en bilingual, light/dark/system | Standalone app (EXE + zero-dep Node server) | Original |
| One-click start / stop | ✗ manual commands | Auto-opens browser on start; stop reaps the whole console process tree | Launcher | Original |
| Embedded console | ✗ separate window | Aki-style embedded console, live output, autoscroll | Launcher | Original |
| Plugin management | CLI (dsh plugin) |
Graphical list + ~140 built-in capability rows + one-click update | Launcher | Original |
| Plugin market | ✗ | Live npm search, one-click install, jump to project page | Launcher (npm registry API) | Original |
| Skill market | ✗ | Live GitHub search, one-click install into ~/.dsh/skills |
Launcher (GitHub API) | Original |
| Community skin market | ✗ | npm skin packages are converted in place to local CSS and managed on the Skins page (switch/delete/import) — never leaking into the plugin system | Launcher | Converter original; skin content belongs to its authors (e.g. the @linxin666 collection) |
| Token analytics | ✗ | GitHub-style heatmap, streaks, per-model split, daily detail | Launcher (reads cost-meter-plus ledger) | Original |
| Costs / balances | ✗ | Live balances (OpenRouter/OpenAI/local), auto price catalog sync, cache-hit strip | Plugin dsh-cost-meter-plus |
Fork of Han-1413141/dsh-cost-meter (MIT) |
| Usage panel, de-peaked | - | Removes peak/off-peak price display | Plugin dsh-token-usage-plus |
Fork of Tastelessor/dsh-usage-stats (MIT) |
| Destructive-command blocking | ask-confirm only | 38 pattern classes denied outright (rm -rf, format, registry, …) |
Plugin dsh-safe-guard |
Original |
| Control Deck (ST-grade) | ✗ | See the tutorial below | Plugin dsh-control-deck |
Original; semantics aligned with SillyTavern (behavior reference, no code included) |
| Frontend skin injection | ✗ | Injects ~/.dsh/frontend-skin.css into the dsh web UI |
Plugin dsh-skin-loader |
Original |
| Hover model prices | ✗ | Model picker shows input/output USD per million tokens on hover | Plugin dsh-price-hint |
Original |
| Quick workspace | manual GUI steps | One-click HTTP creation by absolute path | Plugin dsh-quick-workspace |
Original |
| AI skin studio (one-shot skins) | ✗ | Ask the agent for a launcher/frontend skin in chat: it gathers requirements first (style/colors/light-dark/background art), asks the user for an image instead of fabricating one when it cannot generate images (or calls an image-generation tool when it can), inlines local art as data URIs, and installs+applies in one call | Plugin dsh-skin-studio (registers the skin_studio tool) + dsh skill skin-studio |
Original |
| Engineering skills | ✗ | Architecture / plugin / frontend / ops / playbook / testing six-pack | Claude Code skills | Original |
| Core rewrites | - | 0 lines — everything above goes through official extension points | - | - |
"Control Deck" page in the launcher sidebar. Every save hot-reloads within 1.5 s — no dsh restart. Semantics match SillyTavern, so ST veterans feel at home instantly.
Each entry has:
system (into the system prompt) or user-prefix (prepended to the user message);Rewrites user input / world-info content, with SillyTavern-compatible fields:
{{match}} (whole match) and $1…$9 capture groups;{{match}};user_input or world_info.Scans recent conversation and injects lore when keys match:
/regex/flags supported; secondaryKeys + selectiveLogic: andAny / andAll / notAny / notAll;excludeRecursion / preventRecursion / delayUntilRecursion + global maxRecursionSteps);scanDepth (how many recent messages to scan) and budgetChars (injection budget).When "enable sampling override" is unchecked, the plugin touches no request parameters at all — nothing can be passed by accident. When checked, you can override temperature, maxTokens, and stop sequences (up to 4). Reasoning effort is deliberately not in the Control Deck: the native model picker already owns it, and two controllers would fight.
List tool names to deny them at the tools/pre-execute stage (e.g. disable web_search).
| Page | What it does |
|---|---|
| Dashboard | Status (RUNNING flip effect), core & Node versions, default model, start (lightning FX) / stop |
| Plugins | Installed plugins + built-in capability list, market search & install, one-click update |
| Skills | Local skill list + GitHub market install |
| Sessions | Browse all sessions with message counts, jump to their storage |
| Storage | Sizes per store, one-click open |
| Update | One-click git pull + build for core / plugins, live progress log |
| Tokens | Totals & hit-rate overview, GitHub-style heatmap, streaks, per-model, daily detail |
| Skins | Launcher skins and dsh frontend skins managed separately: switch / delete / CSS import / community market |
| Control Deck | The ST-grade editor described above |
| Quick workspace | Create a workspace from an absolute path (dsh must be running) |
| Logs | Launcher internals / dsh output / update logs |
The 🌐 icon at the bottom-left switches zh/en; the default skin supports light / dark / follow-system.
launcher/skins/launcher/): cyberpunk-2077 (Cyberpunk 2077 × Edgerunners, Jimeng-AI-generated art) and default (three-state theme).launcher/skins/frontend/): injected into the dsh web UI via the dsh-skin-loader plugin. Pick "(none)" to restore stock looks.| Plugin | Responsibility | Tests |
|---|---|---|
dsh-control-deck |
ST-grade prompts/regex/lorebook/sampling (pure-function engine + thin host shell) | 26 (11 semantics + 15 adversarial) |
dsh-safe-guard |
Destructive-command denial (deny, no confirm noise) | 44 (38 + 6 bypass-adversarial) |
dsh-cost-meter-plus |
Balances / prices / cache hits / ledger | 6 |
dsh-token-usage-plus |
De-peaked usage panel | - |
dsh-skin-loader |
Frontend skin injection | - |
dsh-price-hint |
Hover model prices | - |
dsh-quick-workspace |
HTTP quick workspace | - |
dsh-skin-studio |
Model-facing skin studio: the skin_studio tool plus a guided requirements flow, installing through the launcher API; companion dsh skill (dsh-skills/skin-studio, installed to ~/.dsh/skills/) carries the variable tables and templates |
9 (4 + 5 adversarial) |
Copy the folders under skills/ into ~/.claude/skills/ and Claude Code masters the dsh codebase:
dsh-architecture (Cordis model) · dsh-plugin-dev (plugin contract) · dsh-frontend-dev (client slots) · dsh-env-ops (environment ops) · dsh-playbook (tuning playbook) · dsh-testing (test layering).
dsh is built on the Cordis plugin framework; the suite only uses these official extension points:
ctx.systemPrompt.section() — sectioned system-prompt injection;agent/pre-step — rewrite messages entering the model (regex / world info / prefixes);agent/request — merge request parameters (sampling overrides);tools/pre-execute — allow/deny tool calls (safety blocking / tool switches);ctx.webServer.register() — mount HTTP endpoints (quick workspace / skin serving);__ModuleLoader__ slot — frontend injection (skins / price hints).The launcher is a fully separate process that talks to the core only via CLI and HTTP.
Q: A task failed with MISSING_CREDENTIAL: deepseek-official — is that a bug?
No. dsh sessions pin the model chosen at creation time. If a session was created on the official DeepSeek model while you only configured an OpenRouter key, that session keeps using the official channel and reports the missing credential. Fix: start a new session (default model shows on the dashboard), switch models inside the session, or add DEEPSEEK_API_KEY.
Q: Where did my market-installed skin go? The "dsh frontend skins" section of the Skins page — never the plugin list (v1 briefly installed them as plugins; that's fixed, with conversion).
Q: UI changes not showing?
Browser cache — hard-refresh with Ctrl+F5.
Q: Do Control Deck edits need a restart? No — saves hot-reload within 1.5 s.
Original suite code is MIT (see LICENSE). Forked plugins keep their upstream MIT licenses: dsh-cost-meter (Han-1413141), dsh-usage-stats (Tastelessor). Control Deck semantics align with SillyTavern (behavior reference only, no code included). Community skin content belongs to its authors (Maid Atelier is CC BY-NC-SA 4.0, non-commercial). Launcher artwork generated with Jimeng AI by the suite author. Launcher UX pays homage to 秋叶 aaaki's ComfyUI pack launcher.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: skins、web-ui。