Preface¶
When developing agents using DSH, chat windows scroll past a massive amount of file paths and links daily: assistants list chains of modified files in their replies, tools cite artifacts, code blocks show log locations, and users paste URLs directly into their bubbles. The Web GUI renders these as plain text—to view a specific file, you must manually open the file manager and click through the path step-by-step; for bare URLs, you have to copy them first, then switch to the browser to paste. While a single action is minor, doing it repeatedly interrupts your workflow.
dsh-pathlink compresses this step into a single key press: Ctrl+click a path to open the containing folder and select the file; Ctrl+click a link to open it directly in a new browser tab. Below is an introduction to its positioning, implementation, and usage.
What is this?¶
dsh-pathlink is a DeepSeek Harness plugin maintained by penguin-oo, version 0.1.3, under the MIT license. DSH’s philosophy is that everything is a plugin, so this interface enhancement is naturally provided as a plugin.
The plugin is split into two halves:
- The client half runs inside the web GUI (
dsh.client, platformweb), responsible for identifying paths and URLs in messages and handling clicks; - The host half is a
pathlinkRemote service, responsible for parsing paths and launching the operating system’s file manager.
Core Features¶
- Identifies file paths and URLs within rendered chat messages (covering assistant replies, user bubbles, code blocks, and tool cards), marking the results with a dashed underline;
- Ctrl+click (⌘ on macOS) on a path: Opens the containing folder in the OS file manager and selects the file; if the path points to a directory, it opens the directory itself;
- Ctrl+click (⌘ on macOS) on a link: Opens it in a new browser tab; this overrides renderers that fail to auto-link bare URLs, such as URLs pasted directly in user bubbles;
- Ordinary clicks remain passive and do not interfere with text selection or copying; displays a toast message if the path does not exist instead of failing silently;
- Provides a configuration option
maxPathChars(default 1024), limiting the maximum length of path text characters accepted.
Implementation¶
The client half is a scanner driven by MutationObserver, monitoring the rendering session container (data-chat-flow / data-conversation-scroll), identifying paths and URLs within text nodes, and wrapping matching results in lazy inline spans. Click handling uses a single capture-phase delegated listener. It deliberately avoids the official chatFileMentions seam to prevent conflicts with the built-in deliverables provider while unifying coverage across all rendering surfaces.
The host half only exposes a read-only open method: it parses the relative path based on the target session’s working directory, validates its existence, and then launches the platform file manager. It maintains no persistent state and does not create or restore Agents/Sessions.
Installation and Enablement¶
Official installation command:
dsh plugin --profile web add dsh-pathlink
This installs the plugin to the web profile. You can also use the GitHub form:
dsh plugin --profile web add github:penguin-oo/dsh-pathlink
Restart the Web GUI after installation. The plugin requires the web profile—the browser is the only interface capable of receiving clicks.
Typical Usage¶
After completing the installation and restarting the Web GUI, use it in the following order:
- Wait for a stable message containing a path or link. The recognized tokens will have a dashed underline; this is the direct way to verify if the plugin is working.
- Hold Ctrl (⌘ on macOS) and click:
- Path → Opens the containing folder and selects the file in the OS file manager.
- Link → Opens in a new browser tab. - Relative paths are parsed first against the session working directory, then against the harness working directory; if not found in either location, a toast message is displayed.
The open action is dispatched by the host based on the platform:
Windows explorer /select
macOS open -R
Linux xdg-open (for parent directory)
Regarding configuration, the plugin currently has only one configuration item:
maxPathChars = 1024 # default value
This means the maximum length of path text characters accepted.
Use Cases and Notes¶
Suitable scenarios: If you spend all day reading assistant replies and verifying artifact files in the web GUI, this plugin saves you the loop of “view path -> open manager -> navigate step-by-step -> find file”.
Points to note:
- It only supports the Web GUI; the interface capable of receiving clicks is the browser. The host opener covers Windows/macOS/Linux.
- Path identification is heuristic: CJK directory names are preserved, but paths ending in an English word without an extension and followed by body text may occasionally be over-matched. In such cases, the existence check will display a “not found” toast and will not open incorrect content.
- Permissions and Security: The plugin runs with the permissions of the current
dshprocess, and the host half invokes the operating system’s file manager. It is recommended to check the source code and license before installing; this project is MIT-licensed.
Conclusion¶
dsh-pathlink solves a small pain point, but paths and links are among the most frequent content encountered in agent development. The benefit of a single Ctrl+click accumulates with usage time. The plugin is lightweight, and the source code can be read directly to decide whether to install it.
Entry points:
- Community directory page: https://www.skillhub.cn/plugins/penguin-oo/dsh-pathlink
- Source code repository: https://github.com/penguin-oo/dsh-pathlink
The directory page is a community-maintained independent site and has no official affiliation with DeepSeek or Huanfang.