penguin-oo/dsh-pathlink

Ctrl+click file paths and links in DeepSeek Harness chat: paths open their folder in the OS file manager, links open in a new browser tab.

Bundle verified MIT JavaScript Unknown
Bundle verified

Listed

1

Ui

Bundle verified

VersionUnknown
LanguageJavaScript
LicenseMIT
View on GitHub

What it does

Ctrl+click file paths and links in chat: paths open their folder in the OS file manager (with the file selected), links open in a new browser tab.

Best for

  • Developers who frequently receive filesystem paths in DSH Web chat and want to reveal them in Explorer, Finder, or a Linux file manager.
  • Users who need unlinked bare URLs in rendered messages to open in a new browser tab.
  • Workflows where modifier-click preserves ordinary text selection and copying.

Not ideal for

  • Terminal or native-client workflows without the DSH Web click surface.
  • Users who expect ordinary clicks to open paths or links; the plugin requires Ctrl-click or Command-click.
  • Cases requiring perfectly precise path parsing; recognition is heuristic and can over-match some prose-adjacent paths.

README

English · 中文

Ctrl+click file paths and links in DeepSeek Harness chat.

Recognizes file paths and URLs in rendered chat messages (assistant replies, user bubbles, code blocks, tool cards), marks them with a subtle dotted underline, and opens them with Ctrl+click (⌘ on macOS):

  • Path → containing folder — the file’s folder opens in the OS file manager with the file selected (Windows explorer /select, macOS open -R, Linux xdg-open on the parent directory). A path that names a directory opens the directory itself.
  • Link → new browser tab — covers bare URLs the renderer did not linkify (e.g. in user bubbles); markdown links already open in new tabs natively.

Plain clicks stay inert, so text selection and copy are never disturbed. When a path does not exist, a small toast explains why instead of failing silently.

ctrl+click tooltip

recognized path in chat

① Hovering a path shows the Ctrl+click hint — Ctrl+click opens the containing folder with the file selected · ② The recognized path in a real conversation (dotted underline).

Install

dsh plugin --profile web add dsh-pathlink

or via GitHub:

dsh plugin --profile web add github:penguin-oo/dsh-pathlink

Restart the web GUI afterwards. Requires the web profile (a browser is the only surface that can receive the click).

Usage

  1. Wait for a settled message that mentions a path or a link — recognized tokens get a dotted underline.
  2. Hold Ctrl (or ⌘ on macOS) and click.
    • Path → folder opens in Explorer/Finder with the file selected.
    • Link → opens in a new browser tab.
  3. Relative paths resolve against the session’s workspace directory first, then the harness working directory; missing paths show a toast.

Config

Key Default Meaning
maxPathChars 1024 Longest accepted path text, in characters

How it works

  • Client half (dsh.client, platform web): a MutationObserver-driven scanner watches the rendered conversation containers (data-chat-flow / data-conversation-scroll), recognizes paths and URLs in text nodes, wraps matches in inert inline spans, and handles one delegated capture-phase click listener. The official chatFileMentions seam is deliberately not used so the plugin never conflicts with the built-in deliverables provider and covers every surface uniformly.
  • Host half (pathlink Remote service): one read-only open method that resolves relative paths against the addressed session’s working directory, verifies existence, and launches the platform file manager. No durable state; it never creates or resumes an Agent or Session.

Development

npm install
npm run build   # bundle src/client → lib/client.js
npm run smoke   # Remote markers + Typert manifest validation
node scripts/e2e-synthetic.mjs   # browser E2E against http://127.0.0.1:3738

docs/demo.html is built with node scripts/build-demo.mjs (reuses the production recognizer) and screenshotted by node scripts/e2e-screenshot.mjs.

Limitations

  • Web GUI only (the click surface is a browser); the host opener covers Windows / macOS / Linux.
  • Path recognition is heuristic: CJK directory names survive, but a path whose final segment is a bare English word (no extension) followed directly by prose may occasionally be over-matched — the existence check then shows the not-found toast instead of opening anything wrong.

License

MIT

Acknowledgements

Built for the DeepSeek Harness plugin ecosystem — thanks to the community on LINUX DO for feedback and testing.

Frequently Asked QuestionsFAQ

Use the verified command dsh plugin --profile default add github:penguin-oo/dsh-pathlink in a DSH-enabled shell. The command resolves the public package metadata and keeps the plugin attached to the catalog identity shown on this page.