VS Code-style local workbench for DSH with a file explorer, Monaco editor, full-text search and a Git panel.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-vscode-workbench
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:tingfeng347/dsh-vscode-workbench
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
Highlights
- One local workbench: explorer, Monaco editor, search, Git, terminal, and DSH conversation in one VS Code-style interface.
- Complete file experience: open text, Markdown, images, PDF, and Word files directly; the tree supports drag-and-drop uploads and common file operations.
- Reliable and live: atomic saves and revision checks prevent silent overwrites, while WebSocket updates flag external workspace changes.
- Visual Git workflow: status, staging, commits, branches, diffs, commit files, and a swimlane commit graph.
- Persistent workspace context: restore tabs, tree, views, panels, and widths per workspace; terminals support multiple sessions, splits, and rename.
- Built for DSH: reuse the DSH conversation surface on the right and manage theme and layout from workbench settings.
Features
- Files and editor: lazy explorer with create, upload, drag-and-drop, rename, delete, and Git markers; Monaco tabs provide dirty state, atomic saves, and conflict notices.
- Preview: Markdown source, outline, relative links, and images; built-in PDF paging and zoom plus DOCX rendering, with DOC/ODT download support.
- Search and Git:
@vscode/ripgrepsupports case, whole-word, regex, and path filters; Git covers stage, unstage, discard, commit, branches, diffs, commit files, and the graph. - Terminal:
node-ptyand xterm with up to eight sessions, rename, a right-side switcher, splits, ANSI output, and Ctrl+C. - Layout and DSH: the primary view, terminal panel, and DSH conversation sidebar can be shown and resized independently; settings manage theme and widths.
- Sync and restore: workspace file changes stream to the UI, while reload restores views, tabs, expanded directories, panels, and layout.
The workbench mounts through the official sidebar.footer.action and shell.overlay extension points. It does not replace or disable ui-layout.
Demo
Installation
dsh plugin --profile web add dsh-vscode-workbench
First terminal installation
The terminal uses node-pty. On the first install, pnpm 11 may block its build script, so dsh plugin ... add can report Ignored build scripts and end with an error. This is an expected safety check: the dependency has already been written to the profile. Run this on the machine that runs DSH:
cd ~/.dsh/profiles/web
pnpm approve-builds --all
This approves the node-pty build and completes the installation. Restart dsh web afterwards. If the terminal still reports that node-pty cannot load, run:
cd ~/.dsh/profiles/web
pnpm approve-builds --all && pnpm rebuild node-pty
pnpm can also delay versions published less than 24 hours ago. Retry after the waiting period, or use DSH's "Update now" action when it is offered.
Shortcuts
| Shortcut | Action |
|---|---|
Ctrl+Shift+E |
Open Explorer |
Ctrl+Shift+F |
Open Search |
Ctrl+Shift+G |
Open Source Control |
Ctrl+S |
Save the active file |
Ctrl+Alt+B |
Toggle the DSH conversation panel |
| `Ctrl+`` | Show or hide the terminal |
| `Ctrl+Shift+`` | Create a terminal |
Security
The host accepts only paths relative to the active DSH session workspace and rejects traversal and symlink escape. Saves use revision checks and atomic replacement. Git and ripgrep run with argument arrays rather than shell-concatenated commands. The terminal accepts same-origin loopback requests only, starts in the session workspace, and removes API keys, tokens, secrets, and similar environment variables.
Development
pnpm install
pnpm typecheck
pnpm test
pnpm build
Requires Node.js ^22.19 || >=24, pnpm 11.7, system Git, and the native build prerequisites for node-pty when no prebuild is available.
License
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-task-board★ 8567
Task board for the dsh web GUI: a sidebar multi-column kanban whose cards run in real DSH agent sessions and can also be scheduled with cron expressions, executed host-side even with the browser closed.
zhu1090093659/dsh-web#packages/dsh-web-all★ 8567
Plugin and skin collection for the DSH Web UI: task board, Git graph, right-side panel, remote mobile UI, pet, live token stats, and a skin center.
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 4363
A fixed-corner whale widget for the DSH web GUI — balance, today's usage and per-turn cost with peak/off-peak pricing, editable balance-alert and daily-budget bubbles, a module-based custom bubble queue with A/B weighted choices and random lines or images, 30+ vendor templates (OpenAI, OpenRouter, Kimi, SiliconFlow, Ark, Zhipu, MiniMax and more) with per-model balance and subscription quota, plus task-end sound, imported audio, custom roles and a resource manager. Local-only, no telemetry.
ccch1mneyyy/dsh-TUI★ 4235
Claude Code-style full-screen terminal UI: pixel-whale header, live status line, and streaming thought expansion.
omdsh-dev/DSH-better-sidebar★ 4081
Full sidebar workbench with file rendering and editing, terminal, Git, and subagents; third-party plugins can register new tabs.
Devin-AXIS/deepseek-design#deepseek-idesign★ 1441
Visual design studio for websites, app prototypes, posters, cards, reports, and magazines, with templates, direct element editing, selection-aware AI draft handoff, and export.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.