Preface¶
DeepSeek Harness (dsh) makes model adaptation, tools, sessions, sandboxes and UI replaceable plugins, with the official slogan of “Everything is a plugin”. Running npx @deepseek-ai/dsh web will launch the web interface, which defaults to http://127.0.0.1:3080. The interface during the developer preview phase is relatively bare: there is no task board, no Git lanes, and file previews and remote task monitoring require separate windows.
The community directory DeepSeek Harness Plugin Repository categorizes and collects such extensions by function. It should be noted that this site is an independent community directory, has no official affiliation with DeepSeek / Fang Tian, and is not an official app store. Under the “Interface Enhancement” category in the directory, the featured entry dsh-web-ui combines task boards, Git graphs, right panels, mobile remote access, image understanding and skin center into one set, which can be installed individually or all at once.
This article is collated after cross-checking the directory detail page, GitHub repository README, npm aggregate package description and DeepSeek Harness official repository.
What is this¶
dsh-web-ui is a collection of plugins and skins for the DeepSeek Harness Web GUI, maintained by GitHub user zhu1090093659, licensed under Apache-2.0, mainly in TypeScript. The repository address is zhu1090093659/dsh-web-ui. As of the verification of this draft, the GitHub API shows 3448 stars; the community directory page listed 2271 stars at that time, and the directory data may be lagging behind.
It solves the problem that “dsh web can run agents, but the interface is not enough to be a workbench”: tasks need to be queued and scheduled, warehouse changes need to be visualized, files need to be previewed next to the chat, mobile phones need to monitor long-running tasks, and skins need to be changeable. All capabilities are hooked into dsh web through the official profile mechanism without modifying DSH source code.
The community directory categorized it under “Interface Enhancement”, included it on 2026-08-14, and marked it as featured. The aggregate package on npm is @linxin666/dsh-web-ui-all, and the version as of the verification of this draft is 0.1.19.
Core Features¶
The repository README uses a comparison table to illustrate: the native dsh web does not have task boards, Git visualization, right-side file previews, mobile remote access and skin center; after installing the full package, these entries will appear in the sidebar and settings. Below only list the capabilities that are consistent across both sources.
Task Board¶
Click “Task Board” in the sidebar. Tasks are arranged in five columns: To Plan, To Do, In Progress, Completed, Failed. The “Execute” on the card will be handed over to the real DSH agent session to run, and the status will be updated after completion; when you need to review, you can jump back to the execution session to see the complete process.
You can configure cron in the details. The repository examples: automatically upgrade DSH at 23:00 every day, generate weekly reports at 09:00 every Monday. Scheduling is completed in the browser, and the dsh web tab must remain open; missed triggers during the shutdown period will be skipped and not queued for re-run. If the task is running when the scheduled time comes, it will be postponed to the next matching time point.
Git Graph and Right Panel¶
There is a branch selector above the input box, which can switch branches and browse commit history. The Git graph draws branch lanes and commit history.
When the project session is opened, “Preview” and “Files/Changes” appear on the right side of the chat area:
- File Tree: Browse the working directory, click the file name to open it in the preview panel, support searching by file name
- Preview: View markdown, HTML, code, diff, CSV, PDF, Office, images and text in multiple tabs, can switch between source/preview, split-screen editing, save
- Changes (SCM): stage/unstage/discard
- The panel width can be dragged, the collapsed state and width are remembered per project; the skin will change accordingly
Mobile Remote and SSH Operations¶
Open the pairing panel by clicking the phone icon at the bottom of the sidebar. After scanning the QR code or copying the link, your phone can enter the independent mobile interface to remotely operate the current dsh web workspace: view sessions, open new sessions, send and receive messages, switch models and thinking intensity, adjust permission presets. The pairing token is one-time and time-limited, and “Stop” can revoke all devices. The QR code defaults to local area network; after enabling the cloudflared public tunnel, your phone can pair from other networks.
Real-time messages use SSE. The repository states: Cloudflare quick tunnel (trycloudflare.com) and Tailscale Serve do not forward SSE, and the plugin will downgrade to polling under such networks, sending and receiving is still available, but new messages may be delayed by a few seconds. To get real-time push, you need to use a tunnel that supports SSE.
The “SSH” entry in the sidebar opens the remote operation panel. Hosts support key/password authentication, can be imported from ~/.ssh/config, and the configuration is written to ~/.dsh/dsh-ssh.json. For configured hosts, you can:
- Web terminal (xterm.js)
- SFTP upload/download
- Local port forwarding (only listens on 127.0.0.1)
- Multi-host cluster execution
- Share the same host configuration with the Agent, let the agent execute remote commands in the conversation
Passwords and passphrases are stored in plaintext in the above JSON file (file permission 0600). Reconnection may replay non-idempotent commands, and remote output is returned as-is without desensitization. Before using in a production environment, you should read the dsh-ssh instructions in the repository.
Image Understanding and Real-time Throughput¶
When images appear in the conversation (local path, http(s) URL, session attachment), the tool describe_image sends the image to the configured OpenAI-compatible visual endpoint (the README lists Qwen-VL, GLM-4V, GPT-4o, local Ollama). Only the returned text enters the conversation, the image itself does not enter the session record. When the plain text model does not have an image entry, the plugin will add an image button to the input box. Custom instructions can use the prompt parameter of the tool (OCR, UI diagnosis, translation). The endpoint, model, key and default instructions can be modified in “Settings > Plugin Configuration > Image understanding”, and take effect immediately. This tool is ported from whitelonng/dsh-plugin-describe-image.
The session status line will show real-time throughput: when streaming the response, update the input/output token estimate (~ means heuristic estimate), and TPS follows the step count; after the provider’s usage limit is reached, the estimate will be replaced with the real value.
Liang Shen Mode and Skin Center¶
“Liang Shen Mode” is a two-stage agent preset for DeepSeek V4 Pro. The repository description: V4 Pro is sensitive to the first-round tool directory; this preset first starts with Minimal mode when creating a new session (only exposes persistent bash and str_replace_editor), and then switches to Code Mode (PTC) after the trajectory is anchored, and the complete tool registry is restored afterwards. The README cites the community evaluation repository xiaobright/modeltest, and gives the author’s actual test scores in the Windows native environment. These numbers come from the plugin documentation and are not third-party reproduction results. You should verify against the current DSH version before adopting it. Liang Shen Mode requires DSH 0.1.0-rc.5 or above (preset mechanism and system-prompt/assemble hook). Do not switch presets in the middle of a session that has already generated content.
The skin center has 10 skins, supports trying on before applying: trying on takes effect immediately, restores completely when exiting, and will not be saved to disk unless you click “Apply”. The themes named in the README include Windows XP (Luna), Blue Fantasy, Whale Sing, Sunset Harbor; there are also entries such as “Descendants of the Dragon”, “Hatsune Miku · Electronic Songstress” and Tonghuashun style, some screenshots are marked as to be supplemented in the repository.
There is also a permanent whale girl pet in the interface: it switches animations according to the agent’s status, can be renamed, dragged and hidden. This is an experience-oriented function and does not affect task execution.
The directory page recommends: if you still need a file/terminal workbench, you can match it with sidebar plugins (such as dsh-better-sidebar). Whether to install both depends on your interface needs.
Installation and Enablement¶
First confirm that you can start dsh web locally.
The installation command given on the community directory page is as follows, run it in the DeepSeek Harness terminal:
dsh plugin add github:zhu1090093659/dsh-web-ui
For reproducible installation, the directory page requires fixing the commit hash:
dsh plugin add github:zhu1090093659/dsh-web-ui#<commit>
Replace <commit> with the actual commit hash in the repository, do not copy the placeholder verbatim.
The repository README marks the npm aggregate package as the daily use method, and it must be installed into the web profile:
dsh plugin --profile web add @linxin666/dsh-web-ui-all
If you only want skins:
dsh plugin --profile web add @linxin666/dsh-skins
If you don’t want to install the full package, you can install individual packages by name (published on npm):
dsh plugin --profile web add @linxin666/dsh-liangshen
dsh plugin --profile web add @linxin666/dsh-client-ui-task-board
dsh plugin --profile web add @linxin666/dsh-ssh
dsh plugin --profile web add @linxin666/dsh-tool-describe-image
dsh plugin --profile web add @linxin666/dsh-pet
Do not install the aggregate package and the independent packages of the same name in parallel. For example, if you have installed @linxin666/dsh-liangshen, you need to first dsh plugin --profile web remove the independent package before installing the full package.
After installation, you must restart the dsh web process, just refreshing the page is not enough. The corresponding entry will appear in the sidebar to take effect; you can also use the following command to confirm that the configuration layer has been mounted:
dsh --profile web --dump-config
To uninstall the full package:
dsh plugin --profile web remove @linxin666/dsh-web-ui-all
Then restart dsh web again.
Installing from cloning the GitHub source code is the development and debugging path, which requires Node.js >= 22 and pnpm. The steps are subject to the repository README and will not be expanded here.
Typical Usage¶
1. Attach the full package in three steps¶
- Execute the npm aggregate package command in the previous section (or the GitHub installation command on the directory page)
- Restart
dsh web, the sidebar should show entries such as task board, SSH, skin center, etc. - Open “Settings > Plugin Configuration” to toggle on/off as needed; try on skins in the skin center and click Apply when satisfied.
The settings sidebar will group the Web UI plugin groups (task-board / live-stats / remote-web-ui / describe-image), as well as the skin center, community plugins and pets.
2. Use the board to run scheduled tasks¶
Open the task board, move the card to “To Do” or “In Progress”, and click “Execute”. The agent session will start running, and the list status will be updated after completion.
If you need scheduling, fill in cron in the task details. Remember that scheduling depends on the browser tab, closing the tab is equivalent to pausing the scheduling.
3. Monitor long tasks on your phone¶
Click the phone icon in the sidebar → scan the QR code to pair → view the conversation, send messages, switch models on your phone. For public network access, prioritize tunnels that support SSE; accept the polling delay in the quick tunnel scenario.
4. Let plain text models view images¶
Fill in the visual endpoint in “Settings > Plugin Configuration > Image understanding”. Afterwards, reference images in the conversation, or use the image button in the input box to insert attachments. The model will get the text description through describe_image instead of writing the original image into the conversation.
5. Create a new session and select Liang Shen Mode¶
After installation and a full restart, create a new empty session, select “Liang Shen Mode” in the preset selector. The plugin will synchronize the preset to ~/.dsh/.agent-presets when starting. Do not switch presets in the middle of a session that already has content.
Applicable Scenarios and Notes¶
It is more suitable for: people who stay in dsh web for a long time to write code, monitor agents, and view Git changes; people who need to remotely view conversations on their mobile phones; people who want to change skins during demonstrations or screenshots.
It is not suitable to treat it as an “official distribution version modified DSH source code”. It is a community plugin package hooked to the current profile. DSH itself is still in developer preview, and the official repository notes that there will be breaking changes; the aggregate package has version pinning for @deepseek-ai/* SDK, and compatibility follows the repository release rhythm.
Pay attention to these restrictions before installation:
- Permissions: The directory page states that the plugin runs with the permissions of the current dsh process, and may execute code during installation. You should check the source code repository and license before installing.
- pnpm 11 release age gate: minimumReleaseAge may silently isolate new versions released within about 10 days, and actually install the old version. After applying the skin in the old skin center, dsh web may crash because it cannot find dsh-client-ui-skin-*. The solution is shown in the repository README and issue #71: add @linxin666/* to minimumReleaseAgeExclude in the profile’s pnpm-workspace.yaml, then run dsh plugin --profile web update @linxin666/dsh-web-ui-all.
- Strict layout: Under the pnpm isolated layout, sub-packages may fail to resolve. You can set nodeLinker: hoisted in the profile’s pnpm-workspace.yaml and then reinstall.
- Build script: If ERR_PNPM_IGNORED_BUILDS appears during the first installation, follow the prompt to write cloudflared / cpu-features / ssh2 into allowBuilds.
- SSH credentials: Stored in plaintext in ~/.dsh/dsh-ssh.json, do not commit this file into a repository or sync it to uncontrolled environments.
Summary¶
dsh-web-ui combines boards, Git graphs, right-side previews, mobile remote access, SSH, image tools and skins into a single set of Web UI plugins. The community directory provides the installation entry github:zhu1090093659/dsh-web-ui, and the author’s recommended daily path is to install @linxin666/dsh-web-ui-all into the web profile, then restart dsh web.
Directory page: https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-web-ui/
GitHub: https://github.com/zhu1090093659/dsh-web-ui