Preface¶
When working with DeepSeek Harness (DSH), dealing with file paths is a high-frequency action: the assistant generates files within the session, and inline file references or absolute paths appear in the message body. To verify results, you typically have to copy the path first, switch to a file manager or editor, then paste, locate, and expand the directory—the chain isn’t long, but it interrupts your train of thought every time.
DSH’s philosophy is “everything is a plugin,” and this kind of interaction gap is perfect for a plugin to fill. The dsh-filemenu introduced below does exactly that: converging these operations into a single right-click.
What is it¶
dsh-filemenu is a DSH plugin maintained by ltsone9 (MIT License) that provides a right-click context menu for the DSH Web UI: files produced in the conversation, workspace (project) and session rows in the sidebar can all be right-clicked to open in a file explorer/Finder, show in a detected editor, or copy the path. Supported platforms are Windows, macOS, and Linux.
Technically, it is a dynamic Cordis plugin: purely additive, replacing no existing UI elements, and removing all side effects when the plugin stops; it also provides a persistent profile package form, with two installation methods described below.
Core Features¶
File Right-Click Menu¶
There are four categories of right-clickable targets:
- Files chips produced in the session;
- Inline code file references in assistant messages;
- File path links on tool cards (best effort recognition);
- Pure absolute paths in assistant text.
Corresponding menu items:
- Open: Open the file;
- Open containing folder: Show the containing directory in File Explorer / Finder;
- Open in editor ▸: Expand the editor submenu;
- Open with another program…: Invoke Windows’ Open With dialog;
- Copy path / Copy relative path: Copy absolute or relative paths.
Sidebar: Workspace and Sessions¶
Right-clicking a sidebar workspace (project) row displays a menu containing:
- Open containing folder
- Open (switch to sessions in that workspace)
- Copy path
Right-clicking a sidebar session row displays a menu with more items:
- Open containing folder
- Open (switch session)
- Rename
- Fork
- Archive
- Copy path
Editor Detection and System Opening¶
Open in editor ▸ is a submenu listing editors automatically detected on the host machine, covering: VS Code, Cursor, Windsurf, VSCodium, Sublime Text, Notepad++, Typora, HBuilderX, Zed, IntelliJ IDEA, WebStorm, PyCharm, Rider, CLion, Neovim, Vim, and gedit.
Open with another program… directly invokes Windows’ Open With dialog, handing the choice back to the system.
Theme and Positioning¶
- Theme awareness: Light mode follows harness alias tokens, dark mode uses near-black background and near-white text lines.
- Menu appears precisely at the cursor, single-column layout, edge clamping ensures it doesn’t overflow the viewport; each action includes inline SVG icons.
Installation and Activation¶
Prerequisites¶
- A running DeepSeek Harness Web UI;
- The host OS has native opening capabilities (Windows, macOS, or Desktop Linux). Only when the Host reports
canOpenPathdo the system-dependent menu items automatically enable; headless Linux hosts will hide these items; - For persistent installation,
pnpmmust be available in PATH (CLI forwarded to pnpm); the plugin’spackage.jsonengines require Node >= 18.
Method 1: Dynamic Plugin, No Restart¶
The dynamic form of dsh-filemenu consists of two halves: Host and Client, corresponding to the plugin/host.js and plugin/client.js files in the repository. First, fetch these two files from the GitHub repository.
Then, have the agent install it in any session of the DSH Web UI. You can directly send this message to it:
请安装 dsh-filemenu:用 cordis_define(kind: new,idPrefix: file)创建插件,
code.host 填入 plugin/host.js 的完整内容,code.client 填入 plugin/client.js
的完整内容,然后 cordis_run(mode: run)激活。
The first activation requires manual approval: the Client half will request authorization in the Run card; just click Allow (checking double-check will also trust subsequent versions); if not approved, the plugin will stay in awaiting-approval. After completion, verify by right-clicking on a generated file, workspace row, or session row.
Note that the dynamic plugin is process-local: after a Harness restart, it needs to be redefined and run. To persist across restarts, use Method 2 below.
Method 2: Persistent Installation (Official CLI Route)¶
dsh-filemenu can also be installed as a persistent profile plugin. Execute the following in the repository checkout directory:
dsh plugin --profile <profile> add .
Choose the profile based on deployment type: use --profile desktop for the DSH Desktop application, and --profile web for standalone web service deployment. The command forwards to pnpm to complete the installation. Follow these three steps in order:
1、执行上面的 add 命令,把包装进 profile;
2、重启 Harness 服务,使宿主组合重载、web shell 重建客户端包(Desktop 应用重启应用即可);
3、在 Web UI 里右键产出文件、工作区行或会话行验证。
经过上面的步骤,插件即持久生效。也可以不检出仓库,直接从 npm 安装,README 提到已发布 dsh-filemenu@1.1.6 到 npm:
dsh plugin --profile desktop add dsh-filemenu
Use the same set of commands for subsequent management; any pnpm parameters are forwarded as-is:
dsh plugin --profile desktop remove dsh-filemenu
dsh plugin --profile desktop update dsh-filemenu
dsh plugin --profile desktop why dsh-filemenu
If running Harness from source, you can also use patch overrides:
pnpm dsh web --patch ./cordis.patch.yml
Applicable Scenarios and Considerations¶
The target audience is clear: developers who run the DSH Web UI on Windows, macOS, or Desktop Linux and frequently switch between conversations and local files. On headless Linux hosts, system-related menu items are automatically hidden, so the benefit in such environments is limited.
A few notes:
- The plugin runs with the permissions of the current
dshprocess and has the ability to invoke the host OS’s native opening capabilities (opening files, launching editors, etc.). It is recommended to check the plugin’s source code and license (this project is MIT) before installation to ensure it fits within your security boundaries before enabling. - Dynamic installation is process-local and requires redefinition and re-running after a Harness restart; persistent installation persists across restarts but depends on
pnpmin PATH, and the Harness service must be restarted after every installation or update to take effect.
Summary¶
dsh-filemenu solves a very specific problem: compressing “copy path → switch window → paste open” into a single right-click, while not occupying DSH’s existing UI space and removing all side effects when stopped. Source code and more information:
- GitHub repository: https://github.com/ltsone9/dsh-filemenu
- Community directory page: https://www.skillhub.cn/plugins/ltsone9/dsh-filemenu (社区维护的独立站点,非官方应用商店)