dsh-workbench-ui
> [English](#readme) · 中文
dsh-workbench-ui is a UI plugin for DeepSeek Harness. It replaces the default chat layout with a workbench-style interface: a task panel and a six-stage pipeline, a telemetry field, and a command console. Light and dark themes follow the system setting. Every value on screen comes from the live session — no timers, no fake state.
 · 
 · 
> Real screenshots above. Open preview/preview.html in a browser for a live self-contained render you can screenshot in both themes.
---
Overview
- The conversation becomes a process stream —
INPUTblocks, a liveREASONINGtimeline, tool cards,RESULTblocks. - A persistent Agent Core shows the current task and a real six-stage pipeline
ANALYZE → PLAN → EXECUTE → OBSERVE → VERIFY → COMPLETE, driven by real session events, never by timers. - A three-depth telemetry field (
SRC / Δ / SYNC / PROC / NODE / EXEC / MEM / OS) carries real values with a subtle mouse parallax. - A restrained command console replaces the chat input; the model menu stays fully usable.
Features
- Real state machine — phases come from the durable session log (
reasoning-delta,tool/call,tool/result,assistant/message,request/context) plusagent.phase.kindfor completed / error / cancelled / waiting. No fake state, no fake loading. - Agent Core — task + six-node pipeline (✓ done / ● current / ○ pending / × fault) + live process line with a real caret + tool fan-out (
AGENT ● → read ✓ → bash ◐ …). - Reasoning as a signal — vertical timeline, node markers, per-line entry animation, fading history, blinking caret, one-shot scan.
- Tool / terminal / diff visuals — flat engineering cards, streaming terminal caret, line-by-line diff reveal.
- Telemetry field — far / mid / near depth layers, real data only, agent-state-reactive.
- Signature mark — an original
[ · ]bracket-node-diagonal mark and a letterspaced wordmark. - System chip & status bar — system / agent state in the header; git, model, tokens and runtime at the bottom.
- Command palette —
⌘K/Ctrl+K(keyboard only, no UI chrome). - Privacy mask —
⌘⇧P/Ctrl+Shift+Pblurs project/session names, paths and telemetry before screenshots (visual only, data untouched). - Performance — all effects are CSS transforms / opacity / background-position;
prefers-reduced-motionfully respected.
Design details
- Typography: Inter / Geist for UI; JetBrains Mono / IBM Plex Mono for code, logs, numbers, metadata.
- Borders: 1px hairlines. Radius 4–8px, 0 on work areas. Structure by borders, not shadows.
- Motion: fast, precise, mechanical.
- Depth: ambient → field → surface → active process → interaction.
- All visuals procedural (CSS gradients + inline SVG). No third-party assets, no wallpapers, no copied layouts.
Light mode
A bright, clean engineering workbench: white surfaces, graphite text and a restrained cyan signal. Almost invisible grid and a soft depth. Quiet, precise, readable.
Dark mode
A deep computational environment: graphite layers, cold cyan signal, a faint grid, floating telemetry and a wireframe geometry. The focus is on the running agent.
Both themes share one semantic token system and follow the OS prefers-color-scheme. There is no theme toggle in the UI.
Install
From a local copy (recommended — works even when GitHub downloads time out):
git clone https://github.com/seedaylight/dsh-workbench-ui.git
dsh plugin --profile web add ./dsh-workbench-uiReplace web with your profile name if you use another one (default, tui, …). Works on macOS, Windows (PowerShell or cmd), and Linux — the dsh plugin command is identical. On Windows cmd, replace ./dsh-workbench-ui with dsh-workbench-ui (or an absolute path).
Directly from GitHub:
dsh plugin --profile web add https://github.com/seedaylight/dsh-workbench-ui.gitIf this fails with a download timeout (codeload.github.com … error 23), just use the local-copy method above — it avoids the tarball download entirely. The plugin has no build scripts, so a pnpm allowBuilds warning printed alongside a failure can be ignored; retry or switch to the local method.
Uninstall
dsh plugin --profile web remove dsh-workbench-uiGetting started
After installing, restart the web GUI and reload the page — the workbench UI appears automatically, no switch or config needed.
1. Stop the running web instance (Ctrl+C in the terminal where dsh web runs, or kill its process). 2. Start it again: dsh web. 3. Reload the browser (the page at http://127.0.0.1:3080, or whatever URL dsh printed).
Once loaded, the session view becomes a workbench:
- Agent Core — current task + live six-stage pipeline
ANALYZE → PLAN → EXECUTE → OBSERVE → VERIFY → COMPLETE, driven by real session events. - Telemetry field — far / mid / near layers (
SRC / Δ / SYNC / PROC / NODE / EXEC / MEM / OS), real values only. - Command console — replaces the chat input (the model menu stays usable).
- Status bar — git, model, tokens, runtime, agent state at the bottom.
- Command palette —
⌘K/Ctrl+K. - Privacy mask —
⌘⇧P/Ctrl+Shift+Pfor clean screenshots. - Themes — light/dark follow the OS
prefers-color-scheme, no toggle in the UI.
The host half registers two same-origin endpoints (/__dsh-workbench-ui__/health, /__dsh-workbench-ui__/snapshot); the client polls the snapshot once per second.
Requirements
DeepSeek Harness (dsh) with the web client · Node.js ≥ 18. Tested against dsh 0.1.0-rc.7. The CSS targets the current harness build's DOM (class-name hashes); a harness upgrade may need a small selector refresh — normal for community UI plugins.
Privacy
No telemetry, no analytics, no external requests. All values come from your local session, computed inside the harness process. The telemetry endpoints are same-origin read-only snapshots. The plugin ships no credentials, no tokens, no personal data, no machine paths.
Keyboard shortcuts
| Action | macOS | Windows / Linux |
|---|---|---|
| Command palette | ⌘K | Ctrl+K |
| Privacy mask (screenshots) | ⌘⇧P | Ctrl+Shift+P |
| Toggle workspace sidebar | ⌘\ | Ctrl+\ |
| Toggle details panel | ⌘J | Ctrl+J |
Troubleshooting
"Failed to apply … cannot get property "timer" without inject" means the browser is still loading an old cached bundle (this error came from a pre-v0.3.1 client that used the cordis timer service). The plugin no longer uses timer — after updating the plugin, you must:
1. Reinstall the updated plugin: git clone (or git pull in your existing clone) then dsh plugin --profile web add ./dsh-workbench-ui. 2. Restart dsh: stop the dsh web process and start it again. 3. Hard-reload the browser (⌘⇧R / Ctrl+Shift+R) to drop the cached script.
Verify which bundle is actually served: open http://127.0.0.1:3080/plugins/dsh-workbench-ui/client.js and check the URL's rev= — current versions are 9ad8d3e93c56 or newer. A 7b447dd6b1a0 rev means an old copy is still in place.
"Failed to load plugins / bundle script … failed to load" after a fresh install: the browser could not fetch the plugin's client.js — usually a dropped network connection (same cause as codeload.github.com … error 23 install timeouts), not a code error.
1. Reload the page (⌘R / Ctrl+R). If the browser had cached a partial download, a hard reload (⌘⇧R / Ctrl+Shift+R) clears it. 2. If it still fails, verify the bundle is served: open http://127.0.0.1:3080/plugins/dsh-workbench-ui/client.js — it should return the script, not an error page. 3. Reinstall from a local copy to rule out a partial GitHub download (see [Install](#install)).
License
MIT. This is an independent community plugin for DeepSeek Harness; the product and its brand belong to their respective owners.