Introduction¶
When developing agents with DeepSeek Harness (DSH), a common practice is to have a web chat interface on the left side and an IDE or terminal open on the right to check files, run commands, and view Git status. Constantly switching windows disrupts context and workflow.
Below, we introduce the deepseek-harness-workbench-plugin (npm package name dsh-workbench-plugin) maintained by loadingvx. It embeds a three-column workbench within the DSH Web UI’s Conversation view: the left column retains the chat, the middle houses an editor and smart terminal, and the right contains the file tree, Git, usage, and Ultra Slash. This workbench opens with a new session, no need to send a first message.
What Is This¶
The dsh-workbench-plugin is a workbench plugin for the DeepSeek Harness Web UI. It is maintained by loadingvx and has approximately 26 stars on GitHub. It is categorized as “Model Inference” in SkillHub.
The plugin injects frontend modules via Cordis patches, providing a CodeMirror 6 editor, a local PTY terminal, a Git panel, an API usage view, and Ultra Slash slash commands that don’t interrupt the current turn—all within the browser. It is licensed under MIT.
Interface Layout¶
The workbench uses a three-column structure:
- Left: Conversation chat area
- Middle: Editor (default first tab is Agent Control Plane) and Smart terminal
- Right dock: Files, Source Control, Usage, Ultra Slash
Column widths are adjustable by dragging, and double-clicking the separator resets them. Each column can collapse into an icon rail. The collapsed state, active right dock tab, and Usage pinned position are remembered globally and persist across refreshes or new sessions. The Workbench button in the page header toggles the entire workbench’s visibility.
Core Features¶
Agent Control Plane¶
The first tab in the editor, enabled by default; can be disabled in Settings → Agent control plane.
Execution trajectory (default view) displays a timeline of user messages, each LLM call, tool execution, and agent responses. A fishbone line on the left differentiates types, and you can expand to view full I/O.
Capabilities lists the current session’s agent model, tools, prompt segments, sub-agents, and session knobs, with support for online adjustments. It auto-refreshes approximately every 4 seconds, with manual Refresh and Clear all knobs options.
Usage Panel¶
The Usage tab in the right dock, or pinned above the left Settings button (showing a compact bar when the icon rail is collapsed), allows viewing:
- Official API balance (currency matches the API; CNY shows ¥, USD shows $)
- Local observed expenditure (cumulative balance decrease; not reset on top-ups; not the same as official lifetime consumption)
- Session tokens (input / output / cache hits / cache writes / hit rate)
- Current context usage
The balance is also displayed to the left of the Feedback button in the status bar. Clicking Official usage opens platform.deepseek.com/usage.
Ultra Slash¶
Slash commands inject guidance into the next model turn without interrupting the current turn. Managed in the right Ultra Slash tab; type / in the chat box and select from the “Plugin commands” group at the bottom.
Built-in commands (cannot be renamed or deleted):
| Command | Function |
|---|---|
/steer |
Inject guidance |
/new |
Blank session; /new <text> starts a new session with that message |
/skill |
Saves to .dsh/skills/ after task completion |
/docs |
Writes to docs/ after task completion |
/canvas |
Creates or updates a Canvas in .canvas/ after task completion |
Custom /name shortcuts are stored in ~/.dsh/ultra-slash/commands.json, shared across all sessions on the machine, with a maximum of 40 commands.
Canvas¶
Canvas files written by the agent are located at .canvas/*.canvas.tsx in the workspace (not in the IDE configuration directory). The workbench transpiles TSX and mounts React components in the browser, supporting editing / preview / split-screen (similar to Markdown). After the agent writes a file, it automatically opens in preview mode. Sending /canvas <topic> can guide the model without interrupting the current turn.
Workspace Editor¶
CodeMirror 6, with syntax highlighting for JavaScript, TypeScript, JSX, TSX, JSON, HTML, CSS, Markdown, Python, XML, and YAML. Keybinding modes: Plain / Emacs / Vim; default is Emacs (direct insertion, not Vim normal mode).
Additional features include Markdown editing / preview / split-screen (with Mermaid), image and table preview (csv / tsv / xlsx), Git diff tab, multi-file tabs, and dirty file close confirmation. Selected content or entire files can be sent to the chat via Add to chat without copy-pasting.
Smart Terminal & AI Command Assist¶
The editor embeds a local xterm.js PTY, with the current workspace as the working directory. Real shell commands (including pasted $ ls) execute directly; natural language is translated by AI command assist and written to the current terminal session.
Alt + Ior the ✨ toolbar button: Opens AI command assistAlt + J: Opens a new terminal tab (each tab has an independent PTY)- Descriptive text like greetings or warnings is written as non-executable and won’t be run as commands
- A destructive command blacklist can be configured (only limits assistant-written commands; user manual input is unrestricted)
On POSIX, bash / zsh / sh / dash are supported; on Windows, Git Bash is preferred, followed by system PowerShell.
Files, Git & Add to Chat¶
Files: Tree view, filtering, hidden files, .gitignore marking, create / rename / delete; can open files in external editors (Cursor, VS Code, etc.).
Source Control: git status, staging, commit (supports streaming AI commit messages with editable templates), fetch / pull / push (dangerous operations intercepted for dirty tree, behind remote, detached HEAD, etc.; --force not supported), branch switching and merge, commit graph (GRAPH). Chat-side provides git_status, git_diff, git_log, git_branch, git_commit tools.
Add to Chat: Drag files from the file tree or network requests from DevTools; right-click terminal output to add selected or recent output (including pwd / shell context); click page elements in the embedded browser. All are added as reference chips in the input box and sent with the next message.
Notification Sounds & Other Features¶
A notification sound plays when a session ends or waits for user input (approval, plan confirmation, questions). In Settings, you can choose from 5 built-in Web Audio sounds or upload custom audio (mp3, ogg, wav, webm, m4a, flac, max 50 MB), with optional looping reminders (default every 10 seconds until handled).
The interface supports Chinese and English; includes a built-in upgrade checker; tokens in paths and errors are redacted.
Installation & Activation¶
Prerequisites: DeepSeek Harness is installed and dsh web starts normally.
- Install the plugin (version must be specified; pnpm 11 has a 24-hour delay for new versions, so omitting the version might install the old 0.1.0):
dsh plugin --profile web add dsh-workbench-plugin@0.1.31
If still rejected due to a too-new version, add the following to ~/.dsh/profiles/web/pnpm-workspace.yaml and retry:
minimumReleaseAgeExclude:
- dsh-workbench-plugin
-
Restart
dsh web. -
Open http://127.0.0.1:3080, enter Conversation, and create a new session. The workbench appears immediately on the right without needing to send a message first.
Installation from SkillHub / GitHub source (uses built lib/; source-only commits will fail):
dsh plugin --profile web add github:loadingvx/deepseek-harness-workbench-plugin
Typical Use Cases¶
Pin Usage Panel: Open Usage on the right, click the pin icon, and the panel moves above the left Settings button, allowing continuous viewing of balance and session tokens during chat.
Inject Guidance Without Interrupting Turn: While the model is running, select /steer or a custom Ultra Slash command in the chat box; the text queues for the next model access without clicking Stop.
Natural Language to Command in Terminal: Press Alt + I in the Smart terminal, enter “List all .ts files in the current directory,” and the assistant writes the translated shell command to the current PTY.
Canvas Prototype Preview: Send /canvas dashboard layout; after the task, the agent writes .canvas.tsx in .canvas/, and the workbench automatically opens the preview.
AI Commit Message: After staging changes in Source Control, generate a commit message; the text streams into the commit box, and you can confirm and commit.
Use Cases & Notes¶
This plugin is suitable for users who want to perform conversation-driven development within the DSH Web UI and edit code, run terminals, view Git, and check API usage in a single interface. Agent Control Plane is ideal for debugging multi-turn tool calls and adjusting session knobs online; Ultra Slash and Canvas are useful for adding guidance during long tasks without interrupting the current reasoning.
Please note before installation:
- The plugin runs with the current
dshprocess permissions; terminal and Git operations affect the workspace. Read the source code and MIT license before installing. - The current latest version on npm is 0.1.31 (package name
dsh-workbench-plugin); the version displayed on the SkillHub directory page may be outdated. - Version 0.1.1 does not include the upgrade notifier; manually install 0.1.31. Later versions will show upgrade notifications at the top of the UI, and the terminal will provide installation commands as
#comments.
Links¶
- SkillHub Directory: https://www.skillhub.cn/plugins/loadingvx/deepseek-harness-workbench-plugin
- GitHub: https://github.com/loadingvx/deepseek-harness-workbench-plugin
- npm: https://www.npmjs.com/package/dsh-workbench-plugin