Preface¶
DeepSeek Harness (dsh) is an open-source agent runtime developed by DeepSeek, which the official repository summarizes in one sentence: Everything is a Plugin. Model adapters, tools, session logs, agent loops, and even the web interface can all be replaced or extended at the configuration layer without modifying the framework source code.
In actual development, many people run two interfaces simultaneously: one is the browser workspace from dsh web, and the other is the local VS Code. After an agent modifies files in the web interface, you need to return to the editor to view diffs, set breakpoints, and commit code. Often, you first copy the path from the sidebar, then switch windows and use code . or “Open Folder”. When the path is long, this step is prone to errors.
dsh-open-in-vscode does one simple thing: adds an “Open in VSCode” option to the overflow menu of each real Workspace row in the web sidebar. Clicking it hands the directory to your local editor. This article organizes what it is, how to install it, where to find the option, and its limitations after cross-checking with the community directory page, GitHub repository README / package.json, and the official DeepSeek Harness repository.
First, it should be noted that the community plugin directory deepseek-harness-plugin.com is an independent site used to retrieve repositories tagged with the dsh-plugin topic. It has no official affiliation with DeepSeek / FunPropeller and should not be treated as an official app store.
What it is¶
dsh-open-in-vscode is a UI enhancement plugin maintained by the GitHub organization omdsh-dev, with the repository address at omdsh-dev/dsh-open-in-vscode. It uses the MIT license, and the current version is 0.1.6 (consistent across package.json, dsh.plugin.json, and the git tag v0.1.6). The community directory categorizes it under “UI Enhancements” and included it on 2026-08-15; on the day this article was cross-checked, the GitHub repository had 46 stars (the directory page previously showed 41, so refer to the repository page).
The problem it solves can be summed up in one sentence: One-click hand off the already opened workspace directory in the sidebar from the DSH web interface to the local VS Code (or other directory-opening editor CLI).
The client in package.json declares "platform": "web", so it runs on the web interface rather than being a terminal TUI plugin. The tools and skills fields in contributes of dsh.plugin.json are both empty arrays: the model cannot see it, and there will be no new tools available for the agent to call.
Core Features¶
Sidebar Menu Entry¶
After installing and refreshing the webpage, a new option will appear in the … menu for each real Workspace row in the sidebar:
- When the interface language is Chinese: Open in VSCode
- When the interface language is English: Open in VSCode
The text follows DSH’s locale, and both paths render the same menu item. Clicking it will first close the menu, then pass the directory path of that workspace to the host machine.
How the Client and Host Cooperate¶
The repository README splits the plugin into two parts that share the wire protocol in src/contract.ts:
1. Client: Prioritizes registering a menu row to the harness’s sidebar.workspaces.row-menu slot. If the publicly released DSH 0.1.0-rc.6 does not yet have this native slot, it will use a limited compatibility adapter. Both paths appear as the same menu item to users.
2. Host: Receives the directory path via the strict Typert Remote endpoint openInVscode/open, then spawns the configured editor CLI. The child process is detached, so the editor will not be tied to the dsh server after starting, and closing the web service will not also shut down VS Code.
The source code has hard restrictions on paths: relative paths are directly rejected; if the executable cannot be found, an error will be thrown with a prompt to install the CLI or modify the command. The default command is code, and on Windows, it will also additionally detect the standard user-level / system-level standard VS Code installation directories (Code.exe).
Configurable Editor Command¶
Deployment-related options are validated Config fields via schema, which can be modified in cordis.yml:
| Key | Default Value | Meaning |
|---|---|---|
command |
code |
The executable used to open the directory. The default value will also look for standard installation locations on Windows; other commands will use the system PATH. |
args |
[] |
Additional arguments appended before the directory path. |
Relative paths for command will be rejected. Failures due to missing executables are clearly communicated, and the README notes that repair prompts will be provided. If you commonly use Cursor, VSCodium, or other CLIs that accept “open a directory”, you can change the command to the corresponding command, provided it is available on the PATH and can open directories.
Limitations¶
The README explicitly lists the limitations in a table:
| Action | Where it runs | Requires approval? |
|---|---|---|
| Open workspace directory in editor | Host (user clicks the menu) | No, because it is initiated by the user actively |
| Other actions | — | No tools, no configuration namespace, no model-facing interface |
The plugin does not read or write workspace files itself, it only opens the directory that the user has already opened in DSH. It will not add a new tool like open_in_vscode for agents, so there is no path for “the agent to open the editor by itself”.
Installation and Activation¶
Command Provided by the Directory Page¶
The installation command on the community directory details page is:
dsh plugin add github:omdsh-dev/dsh-open-in-vscode
The dsh CLI will parse the plugin from GitHub and add it to the current configuration. The directory page also notes that for reproducible installations, you can pin the commit hash:
dsh plugin add github:omdsh-dev/dsh-open-in-vscode#commit
Replace #commit with the actual commit hash. Do not manually construct other installer syntax using the repository name.
Web Profile Installation Recommended by the Repository README¶
Since the client explicitly runs on the web platform, the repository README / README.zh.md suggests adding it to the web profile and using a versioned tarball to avoid running the git prepare script:
dsh plugin --profile web add https://github.com/omdsh-dev/dsh-open-in-vscode/archive/refs/tags/v0.1.6.tar.gz
This command will run pnpm in the profile and merge the bundle layer. After installation, restart the Web server and refresh the browser page. The README specifically emphasizes: Restart using kill -TERM <pid> and wait for the process to exit, do not use kill -9, to avoid corrupting the zstd session logs mid-frame.
The host plugin mount name is dsh-open-in-vscode; the client bundle is provided by /plugins/dsh-open-in-vscode/client.js. To confirm the actually installed version:
dsh plugin --profile web list dsh-open-in-vscode --depth 0
Prerequisites¶
The repository lists two hard requirements:
1. DeepSeek Harness 0.1.0-rc.6 or higher. When the native Workspace row menu extension point is available, it uses the slot; for rc.6, it uses the compatibility adapter. The engines.dsh field in dsh.plugin.json is >=0.0.1, which is the plugin manifest field; the actual usable UI functionality is subject to the note in the README.
2. VS Code installed locally, or an editor CLI available on the PATH:
- macOS: You must first install the VS Code Command Line Tools (“Shell Command: Install ‘code’ command in PATH” in the command palette), otherwise the default code command will not be found.
- Windows: When using the default code command, the plugin will look for Code.exe on the PATH and the standard user-level / system-level installation directories.
- Other editors: Configure the plugin command to a CLI that can open directories.
The engines.node field in package.json is ^22.19 || >=24, which matches the Node version requirements for the current DSH developer preview. Confirm that your local Node can run dsh web before installing the plugin.
Typical Usage¶
Follow the repository instructions to reproduce a complete workflow, without inventing additional screenshots or undisclosed configuration items:
1. Your local machine can already run the DeepSeek Harness Web UI (for example, npx @deepseek-ai/dsh web from the official documentation, or pnpm dsh web from the source repository).
2. Install the plugin using the directory page command from the previous section, or the web profile + v0.1.6 tarball method from the README.
3. Restart the Web server with kill -TERM and refresh your browser.
4. Confirm that there is at least one real Workspace in the sidebar (the plugin only adds menus to real workspace rows, not virtual rows).
5. Click … on the right side of that row, and select Open in VSCode (or Open in VSCode for English interfaces).
6. VS Code should pop up locally and open that workspace directory. The editor process is independent of the dsh server.
If no window appears, troubleshoot per the failure paths in the README:
- Is the code command available on the command line (especially easy to miss on macOS after missing the shell command setup).
- Is the plugin command a relative path (which will be rejected).
- On Windows, is VS Code installed in a non-standard directory and not added to the PATH; in this case, change the command to the absolute path of the executable, or add code to the PATH.
To switch editors, only modify the command / args two fields. For example, the default behavior is equivalent to executing this on the host:
code /absolute/path/to/workspace
The args will be inserted before the directory path. The specific YAML syntax depends on your current profile’s cordis.yml, and the repository does not provide an additional sample snippet, so this article will not provide a potentially outdated patch syntax example.
Applicable Scenarios and Notes¶
This plugin is suitable for these situations:
- You usually watch agents modify code in the browser, but still use VS Code for actual file reading, debugging, and Git commits.
- You have multiple DSH workspaces open at the same time and do not want to manually copy paths every time.
- You only want to add a menu item without adding new tools for the agent.
Situations where it is not suitable, or requires prior configuration changes:
- Only running headless / terminal environments without a Web UI: The client platform is web, so there is no entry without the web sidebar.
- No graphical editor installed locally, or no code available in an SSH remote development environment: You must first resolve the CLI, or point the command to a program that can actually open directories.
- Expecting the agent to “decide to open VS Code on its own”: The plugin has no model-facing interface, so this is not possible.
There are several constraints consistent with the directory page and official repository before installation:
- The plugin runs with the permissions of the current dsh process, and may execute code during installation. You should read the repository source code and MIT license before installing; prioritize pinned tags (such as v0.1.6) or commit hashes in production or shared environments.
- DeepSeek Harness is still a developer preview version, and core plugins and APIs are subject to change. This plugin uses a compatibility adapter to supplement the slot on 0.1.0-rc.6, and after subsequent native slots are stabilized, the behavior should be subject to the then-current harness version.
- The community directory is only a discovery channel, and stars and categories may lag behind GitHub. Refer to the repository README and git tags when checking installation commands and version numbers.
Summary¶
dsh-open-in-vscode fills the missing click between “that workspace in the webpage” and “local VS Code”. It does not extend agent capabilities or touch file contents, it only passes the absolute path to the editor CLI in a detached process after the user clicks the menu.
Community Directory Page: https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-open-in-vscode/
GitHub Repository: https://github.com/omdsh-dev/dsh-open-in-vscode
DeepSeek Harness Official Repository: https://github.com/deepseek-ai/deepseek-harness