Add an "Open in VSCode" option to the right-click menu in the DSH web interface workspace. Clicking it opens the workspace directory in the local VS Code, eliminating the need to manually locate the path.
$ dsh plugin --profile web add github:omdsh-dev/dsh-open-in-vscodeRun the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial
In DeepSeek Harness's web interface, adds an "Open in VSCode" option to the "..." menu of each workspace in the sidebar. Clicking it opens that workspace's directory in the local VS Code, eliminating the need to manually copy the path and run commands in the terminal.
openInVscode/open, launching the editor via Node child process in detached mode; the browser-side registers the menu item into the host's sidebar.workspaces.row-menu slot, and on click passes the directory path to the server through this endpoint. If the host version doesn't provide this slot yet, a DOM-observation-based compatibility adapter is enabled and automatically removed when the native slot is detected.src/index.ts (server-side), src/client/index.ts (browser-side)Suitable for people who frequently switch between multiple workspaces in the DSH web interface and need to view the same code in an editor. The previous approach was to copy the workspace directory path, then switch to a terminal or file manager to open it—this plugin compresses that step into a single menu click. The prerequisite is that the editor and DSH server run on the same machine.
| Dependency | Minimum Version | Description |
|---|---|---|
| Node.js | ^22.19 or >=24 | Server runtime environment requirement |
| DSH | Manifest declares >=0.0.1, docs recommend 0.1.0-rc.6 and above | Uses native workspace menu slot when available, compatibility adapter for rc.6 |
| Platform | macOS / Windows / Linux | Server uses only Node built-in capabilities; Windows has additional installation directory detection for the default code command |
| UI Mode | Web interface only | The plugin's client portion declares web platform; no menu under CLI/terminal interface |
| VS Code or Other Editor CLI | None | Requires an executable that can accept a directory argument, default is code; macOS needs VS Code's command line tool installed first |
| Native Modules | None | No dependencies on any compiled native extensions |
dsh plugin --profile web add github:omdsh-dev/dsh-open-in-vscode
| Option | Type | Description | Default |
|---|---|---|---|
| command | string | The editor executable to open directories, can be replaced with any editor command | code |
| args | string array | Additional launch arguments passed to the editor before the directory path | [] |
Configuration is written in DSH's cordis.yml and will be validated. Errors with fix suggestions are reported when the executable cannot be found.
Q: The "Open in VSCode" option doesn't appear in the menu after installation. What should I do?
A: After installing the plugin, you need to restart the web server and refresh the page for the menu item to appear. The documentation explicitly requires graceful exit with kill -TERM before restarting, not kill -9.
Q: Clicking does nothing. How do I troubleshoot?
A: Failure messages are only printed to the browser console, not shown as UI prompts. Open the browser developer tools and look for errors starting with [dsh-open-in-vscode]. The most common cause is the editor command not being in PATH.
Q: macOS says it can't find the code command. How do I fix it?
A: You need to install VS Code's command line tool first (Shell Command: Install 'code' command in PATH), or change the plugin's command to another editor command that can open directories.
Q: Can I use an editor other than VS Code?
A: Yes, change the command to any executable that can accept a directory argument. You can also use args to append additional arguments. Note that only the default code command has automatic installation directory detection on Windows; other commands must be findable in PATH.
Q: Will the editor open on my computer or on the server?
A: It opens on the machine running the DSH server. If you're accessing DSH on another machine via browser remotely, the editor window will appear on that server, not on your local machine.
Q: Does this plugin read/write my files or get called by the model?
A: No. It only launches the editor process when you manually click the menu. It doesn't read or write files itself, and hasn't registered any tools or skills—models cannot see or call it.
Q: Will the editor close when I shut down the DSH server?
A: No. The editor is launched as a detached process, separating from the server after startup. Server exit does not affect already-open editor windows.
Q: Why do some workspace rows not have this menu item?
A: Only workspaces with actual directory paths will render this menu item; rows without directory information are skipped.
Beginner — Just install, restart the server, refresh the page, and it's ready to use. The default configuration targets VS Code. You only need to touch the configuration when changing editors or when macOS doesn't have the code command installed.
src/client/row.tsx:71-73)src/runtime.ts:37)src/runtime.ts:86-88)src/client/row.tsx:65)src/client/legacy-menu.tsx:60-63)code command; custom commands still need to be ensured resolvable via PATH (src/resolve.ts:53)0.1.5, which doesn't match the current package version and can cause confusion during troubleshooting (src/runtime.ts:51)package.json:28-36)Open a workspace directory in VS Code straight from the DeepSeek Harness web GUI: every real Workspace row in the sidebar gains an Open in VSCode row inside its … overflow menu.
sidebar.workspaces.row-menu slot when
available and falls back to a scoped compatibility adapter on the public
DSH 0.1.0-rc.6 build. Both paths render the same locale-following menu row
— 在 VSCode 中打开 under the Chinese locale, Open in VSCode under
English.openInVscode/open, passing the workspace directory.code <path> by default), detached, so the editor outlives the server.code command
also discovers standard per-user and system VS Code installations. On macOS,
install the
VS Code shell command
or set the plugin command to any editor that opens a directory).0.1.0-rc.6 or newer. The plugin uses the native Workspace row-menu
extension point where present and a compatibility adapter on rc.6.Add the plugin to your web profile (this runs pnpm inside the profile and reconciles the bundle layer):
dsh plugin --profile web add https://github.com/omdsh-dev/dsh-open-in-vscode/archive/refs/tags/v0.1.6.tar.gz
Restart the web server (kill -TERM <pid> and wait for exit — never
kill -9, it tears the session zstd log mid-frame), then refresh the page.
The host plugin mounts under dsh-open-in-vscode; the client bundle is
served at /plugins/dsh-open-in-vscode/client.js.
The versioned tarball replaces older pinned commits without running a git
prepare script. Confirm the installed version with:
dsh plugin --profile web list dsh-open-in-vscode --depth 0
Deployment-varying choices are validated Config fields, changeable from
cordis.yml:
| Key | Default | Meaning |
|---|---|---|
command | code | Executable that opens a directory. The default also probes standard Windows VS Code install locations; other commands resolve through PATH. |
args | [] | Extra arguments passed before the directory path. |
A missing executable fails loud with a fix hint; relative paths are refused.
| Action | Runs where | Requires approval |
|---|---|---|
| Open a workspace directory in the editor | Host (user gesture) | No — the user clicked the row |
| Anything else | — | The plugin has no tools, no settings namespace, and no model-facing surface |
The plugin adds no tools, no skills, and no settings; it only opens the directory the user already opened in DSH. It never reads or writes files itself.
pnpm install
pnpm run check # typecheck + lint + test + build; commit lib/ (file: installs run without a build)
Layout: the wire contract lives in one module (src/contract.ts) shared by
the host manifest (src/typert.ts) and the client contribution
(src/client/remote.ts); the harness owns the slot declaration and the
Menu node-entry kind this plugin composes through.
MIT