Preface

The DeepSeek Harness (dsh) Web UI defaults to a chat-first design: the model chats on the left, while file operations and command execution are handled via tool calls, with results written back to the session log. For daily tasks like editing a script, reviewing a diff, or checking logs on a remote machine, you often have to switch to an external editor or open an SSH connection separately. Your code exists in the chat interface, but your workspace is in a separate window.

The official summary of Harness’s design is Everything is a plugin: model adapters, tools, sessions, sandboxes, and the UI can all be added or removed at the configuration layer without modifying the core source code. As a result, the community has produced a number of plugins that add only a single focused capability. dsh-IDE fills the gap on the Web GUI side: it turns the right-hand panel into a JupyterLab-style workspace, and adds SSH remote mode, allowing a local model to operate on remote file systems and terminals.

This article was cross-checked against the community plugin directory, the GitHub repository’s README / package.json / CHANGELOG.md / NOTICE, and the official deepseek-ai/deepseek-harness repository. The community directory deepseek-harness-plugin.com is an independent site and has no official affiliation with DeepSeek / FunFound, and should not be treated as an official app store. Harness is currently in developer preview, and plugins may experience breaking changes as the core framework is updated.

What is this

dsh-IDE is an integrated development environment plugin for the DeepSeek Harness Web GUI. The GitHub repository is maintained by chenw2759-wq, and is listed under “Tools and Capabilities” in the community directory. Its license is BSD-3-Clause. The repository’s package.json currently has version 0.1.0 and is marked private: true; GitHub API shows the primary language is TypeScript. As of 2026-08-17, the repository has 19 stars (the community directory page still showed 6 at the time; always refer to the repository page for accurate star counts). The last push was on 2026-08-17, corresponding to commit 36a8f9e.

It solves two categories of problems:
- Local: Browse, preview, edit, run workspace files directly in the browser, and view the red-green diff after the Agent modifies files, without switching to an external IDE.
- Remote: After configuring an SSH host, the file tree, file read/write, terminal, and bash operations transparently switch to the remote host, while the LLM and Agent loop still run locally – the repository’s own description is “Local Brain, Remote Hands and Feet”.

The repository is a pnpm monorepo, with three packages that together provide full functionality:

Package Purpose
dsh-aionui-panel Right-hand panel: file tree, preview, terminal, edit diff, semantic color tags
dsh-ssh SSH engine: ssh2 connection pool, exec / PTY / SFTP
dsh-easyssh Remote workspace: mode switching, seam facade, Web GUI frontend

The brand name is dsh-IDE, but the installation identifier still uses dsh-easyssh and will not change with the brand rename. The remote ctx.fs / ctx.subprocess implementation is ported and adapted from UynajGI/dsh-ssh (MIT, original author yuunagi_cn), see the repository’s NOTICE for details.

Core Features

Right-hand Workspace and Four Layouts

After installation, a dockable workspace drawer appears on the right side of the Web UI: the file tree and preview/editor share the same panel. The right side of the preview tab bar uses “⇊ / ⇉ / ⇱” to switch between three display modes, plus a three-column IDE layout:
- Bottom pane: Preview is pinned below the chat window
- Right sidebar (default): Preview is pinned in the right-hand drawer
- Floating: Overlaid on top of the chat dialog with a larger width
- Three-column IDE: Chat | File Tree | Preview arranged side by side

You can drag the preview tab bar or empty toolbar area to turn the preview into a floating window; drag it to the right edge of the screen and release to dock it back to the right sidebar. The system settings have a “Right Sidebar Workspace” section with 8 feature toggles (auto diff, watch dots, Git badges, syntax highlighting, zoom preview, three-column IDE, terminal docking, session isolation) and 9 editing tools, with changes taking effect immediately and persisting.

File Tree, Git Badges and Watch Paths

The left file tree supports lazy loading, filename search, right-click creation of files/folders, inline renaming, copy/paste, download, and delete to recycle bin. Git status is marked with badges (A/M/D/R/U/C). Local directories and SSH remote directories switch automatically; the same file will not open multiple tabs, and disk changes will refresh the existing tab.

The watch path defaults to only the first-level directory. The dot on the right side of a directory row can be clicked to toggle levels: light yellow watches the immediate subdirectories, green watches all nested levels. Build artifacts, temporary files, and lock files will not automatically pop up regardless of watch settings.

Code Editing, Running and Terminal

The code editor provides syntax highlighting (Trae-style color scheme, follows light/dark theme), line numbers, and zebra striping. Press Ctrl+S to save, with mtime conflict detection enabled on save. The toolbar’s “▶ Run” button can directly execute the current file (python / node / bash, etc.); .R / .r files use Rscript, and .Rmd files are previewed as Markdown.

The “>_ Terminal” button opens a command line panel docked to the bottom ~1/5 of the chat bar. In SSH mode, both the run command and terminal will execute on the remote host.

Trae-style Red-Green Diff

When the Agent tool writes a file, another process modifies a file, or you save a local file, an “Update(Path)” card will pop up in the bottom pane: deleted lines have red backgrounds, added lines have green backgrounds, with dual-column line numbers and change statistics. Brand new files show a full green card, and deleted files show a full red card. Clicking “Edit Latest Version” will open the latest code in the editor for editing and saving; clicking “Refresh” will preserve the red-green annotations.

Multi-format Preview and Visual Editing

The panel uses color tags to distinguish file types: orange = images, green = CSV, blue = Python, yellow = JS/TS, purple = JSON, cyan = Markdown, red = diff, gray = logs. Supported previews include:
- Markdown / HTML / images / CSV / logs
- Office documents: docx, xlsx (first worksheet), pptx (page-by-page cards)
- Images and HTML support toolbar zoom and Ctrl+scroll wheel

Markdown and HTML can enter Word-style visual editing: edit directly on the rendered result, and when saved, Markdown will convert back to source code and HTML will write back the full document. docx / xlsx / pptx also support rich text editing within the panel, and when saved, the Office package is rebuilt from HTML and written back as binary. Known limitations: complex structures such as charts (word/charts/*), embedded objects (embedded Excel) are not parsed yet, and editing and saving will not preserve them; PPT animations and transition effects are not preserved.

SSH Remote Workspace

The SSH button in the top-right corner (left of the session log) is used to configure hosts: alias, host, port, username, password or key, remote root directory. Configurations are persisted in ~/.dsh/dsh-ssh.json, supporting multiple hosts, ProxyJump jump chains, and key passphrases. After entering SSH mode:
- The right-hand panel switches to the remote file tree
- The model’s read / write / edit / glob / grep and bash / terminal commands execute on the remote host
- Relative paths are based on remoteRoot (default ~); do not use Windows local paths
- Each session remembers its own device and mode; the limitation is that the host-side fs/subprocess still routes in global mode, with isolation only applied to the panel and explicit remote_* tools

Explicit remote tools include remote_status, remote_ls, remote_read, remote_write, remote_mkdir, remote_rm, remote_rename, remote_glob, remote_grep, as well as ssh_exec / ssh_upload / ssh_download. The remote file tree will follow symbolic link directories (the README uses AutoDL’s /root/autodl-tmp as an example).

The seam switching is automatically applied via cordis.patch.yml included with dsh-easyssh during installation: it disables the built-in fs-sandbox / subprocess and hooks up the mode routing facades easyssh-fs / easyssh-subprocess. Local mode still delegates back to the sandbox implementation; you do not need to manually edit cordis.patch.yml.

Installation and Activation

Prerequisites (from the repository README): Node.js ≥ 22, pnpm, and dsh already installed (npx @deepseek-ai/dsh). The engines field of dsh-easyssh specifies ^22.19.0 || >=24.0.0, and the peer dependency aligns with @deepseek-ai/dsh-* at ^0.1.0-rc.6. This plugin is designed for the Web profile and requires the web interface.

The installation command given on the community directory page is as follows, to be run in the DeepSeek Harness terminal:

dsh plugin add github:chenw2759-wq/dsh-IDE

For reproducible installations, the directory page recommends pinning the commit hash. As of 2026-08-17, the latest commit on main is 36a8f9e84d218638073772d67f7a31684fcd1bb3:

dsh plugin add github:chenw2759-wq/dsh-IDE#36a8f9e84d218638073772d67f7a31684fcd1bb3

The installation path and one-click command from the repository README differ: the root repository is a monorepo with three packages, and the documentation requires cloning the repository, building each package separately, and adding them to the web profile. Following the more up-to-date README instructions, the steps are as follows (replace the path with your local absolute path):

git clone https://github.com/chenw2759-wq/dsh-IDE.git
cd dsh-IDE
pnpm install
pnpm --filter "./packages/dsh-aionui-panel" build
pnpm --filter "./packages/dsh-ssh" build
pnpm --filter "./packages/dsh-easyssh" build

dsh plugin --profile web add file:/your/absolute/path/dsh-IDE/packages/dsh-aionui-panel
dsh plugin --profile web add file:/your/absolute/path/dsh-IDE/packages/dsh-ssh
dsh plugin --profile web add file:/your/absolute/path/dsh-IDE/packages/dsh-easyssh

dsh-ssh depends on native libraries ssh2 / cpu-features. pnpm 10+ blocks dependency build scripts by default, and dsh plugin add may throw ERR_PNPM_IGNORED_BUILDS, and write a placeholder allowBuilds to pnpm-workspace.yaml. Change the corresponding entry to true and re-run dsh plugin add (re-running is idempotent). The current root repository’s pnpm-workspace.yaml has already set ssh2, cpu-features, etc., to true.

Older versions before 0.1.0 required manually writing seam patches to cordis.patch.yml. If you hand-wrote patches before upgrading, you must delete them and restore the file to [], otherwise duplicate loaders will be inserted by both the manual and automatic patches, causing a duplicate loader entry id error on startup.

Restart the Web UI after installation:

npx @deepseek-ai/dsh web

Open http://127.0.0.1:3080, and perform a hard refresh with Ctrl+F5 (required when the browser caches old client packages). To roll back, restore cordis.patch.yml to [] and restart.

Typical Usage

The following steps are from the repository README and can be reproduced in the local Web GUI.
1. Local workspace only: Open files like .py / .md / .js, edit directly, and save with Ctrl+S. When you need to see the rendered result, use the tab bar to switch between bottom pane / right sidebar / floating mode.
2. Run the current file: Open the script and click the “▶ Run” toolbar button. Open the terminal using the preview toolbar or the “>_” button on the file bar tab.
3. Review Agent changes: Wait for the diff card in the bottom pane after external edits or saves; click “Edit Latest Version” if you need to modify the latest version.
4. Enter SSH mode: Click SSH in the top-right corner of the session → fill in host information → save and test the connection → enter the mode. The right-hand file tree switches to remote; tell the Agent “read/modify remote files” or “execute commands on the server”, and the regular tools will run remotely.
5. Return to local mode: Click the toggle button in the top-right corner to exit SSH mode.

Path rules: Use remote absolute paths directly; relative paths are based on the remote root directory; do not send Windows local paths to remote tools.

Applicable Scenarios and Notes

This plugin is suitable for users already using dsh web who want to reduce window switching: editing scripts locally, viewing Markdown/Office files, reviewing diffs from Agent-modified files, or running models locally while code and data are on a GPU cloud host / jump server. Remote grep / glob / realpath depend on GNU find, grep, and coreutils, so the target host should be a standard Linux environment.

Please note these boundaries before installing and using:
- The plugin runs with the permissions of the current dsh process, and may execute code during installation. You should inspect the source code repository and license before installing; pin the commit hash for reproducible installations.
- The local sandbox does not apply to remote executions in SSH mode. Remote operations consume real remote resources, please confirm commands before executing.
- Authentication materials are stored in ~/.dsh/dsh-ssh.json (permissions 0600). Routing only works on loopback, and same-origin checks are enforced.
- Session-level SSH isolation does not override the host’s global fs/subprocess seam; when multiple sessions connect to different hosts simultaneously, the panel state can be separated, but the tool routing remains in global mode.
- Office previews perform ZIP parsing in the browser without requiring additional host dependencies; complex layouts (headers/footers, columns, charts, embedded objects) have limited fidelity, as noted in the CHANGELOG.
- The CHANGELOG.md marks v0.1.x as released capabilities, and v0.2.0 is still marked “In Development”. Do not treat in-development items as released version numbers.

Summary

dsh-IDE completes the DeepSeek Harness web chat interface into a browsable, editable, runnable workspace with diff viewing, and uses SSH to connect the same panel to remote machines. It is maintained by chenw2759-wq, licensed under BSD-3-Clause, with the remote implementation containing additional MIT source attributions. The community directory’s installation command is dsh plugin add github:chenw2759-wq/dsh-IDE; to follow the repository documentation, you need to add all three packages to the web profile and perform a hard browser refresh.

Directory page: https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-ide/

GitHub: https://github.com/chenw2759-wq/dsh-IDE