a903067276-rgb/dsh-file-mentions
DSH 回复中的可点击文件路径:Codex 风格内联打开,📂 在文件管理器中显示,提及文件芯片列表。DSH 网页插件(零依赖)。
项目介绍Project Overview
dsh-file-mentions 是一款 DSH Web 插件,将回复中用反引号包裹的文件路径(支持 ~/、绝对、相对路径及中文路径)渲染为可点击链接,点击用默认应用打开,附带文件夹图标按钮可在文件管理器中显示;对话末尾还会自动汇总"📎 提及文件"芯片列表,点击可预览。会话工作目录外的路径需在设置中加白名单,系统盘路径会被自动拒绝。注意:仅识别反引号包裹的路径,行文中的裸路径不会变可点击。
dsh-file-mentions is a DSH web plugin that turns backtick-wrapped file paths in replies—covering ~/, absolute, relative, and Chinese paths—into clickable links that open with the system default app, with an extra folder-icon button to reveal the file in the file manager. A "📎 mentioned files" chip list at the end of each turn previews contents when clicked. Use it whenever the agent references files in its output. Paths outside the session working directory require adding them to the external-drive whitelist; system disk roots are blocked automatically. Caveat: only backtick-wrapped paths are clickable—bare paths in prose are ignored.
请帮我了解并安装插件:【dsh-file-mentions】【https://github.com/a903067276-rgb/dsh-file-mentions】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add "github:a903067276-rgb/dsh-file-mentions#main"
把 a903067276-rgb/dsh-file-mentions 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-file-mentions 📎
Clickable file paths in DSH replies — a DeepSeek Harness (DSH) web plugin with a Codex-style experience.
Unofficial project: independently developed and maintained by a community member, not an official DeepSeek product.
Screenshot

Inline paths wrapped in backticks (`~/...`, absolute, relative, or Chinese paths) become
click-to-open; each clickable path carries a small folder-icon button that reveals the file in your
file manager; a "📎 mentioned files" chip list at the turn tail covers the rest. URLs are
already auto-linked by the official renderer, so this plugin leaves them alone.

The external-drive whitelist (Settings → Plugins → file-mentions): local files in your home
directory are clickable by default; only external drives / network volumes (e.g.
/Volumes/USB) need their root added here — one path per line. System-disk marker
directories (/System, /etc) are rejected automatically.
Features
| Where | What | Effect |
|---|---|---|
| Inline path text | click | Open with default app / open directory |
| folder icon after inline path | click | Reveal in file manager |
| "📎 mentioned files" chip | click name | Preview content inside DSH |
| folder icon in the chip list | click | Reveal in file manager |
| Inline URL | click | Browser opens it (official autolink) |
Supports ~/ expansion, relative paths (resolved against the session cwd), and absolute
paths in macOS / Linux / Windows forms. Non-existent paths silently do nothing.
Install
This repository is an official bundle plugin (dsh.bundle + dsh.client in the root
package.json), installed through the official profile manager:
dsh plugin --profile web add "github:a903067276-rgb/dsh-file-mentions#main"
Then restart dsh web (bundle layers are composed at startup; HMR does not apply).
Requires pnpm on PATH (dsh plugin forwards to pnpm).
Manual mount fallback: see docs/install.md.
Usage
Have the agent wrap paths in backticks (e.g. `~/docs/plan.md`) to make them clickable
inline. The tail chip list appears automatically — no configuration.
Paths outside the session directory (external drives, etc.)
Local files inside your home directory (e.g. ~/Downloads, ~/Desktop) are clickable by
default — no configuration needed. For paths on an external drive / network volume (e.g.
/Volumes/USB), add that root to the external-drive whitelist in Settings → Plugins →
file-mentions (one path per line). Saving takes effect immediately — no restart required.
System-disk protection: whitelist roots containing system marker directories (/System,
/etc, or \Windows on Windows) are rejected automatically, so a full system disk mounted
externally can never be whitelisted by mistake.
Platform support
| Platform | Status |
|---|---|
| macOS | ✅ Fully tested (incl. Chinese paths) |
| Linux | ⚠️ Not tested — expected to work (command branching and path parsing implemented) |
| Windows | ⚠️ Not tested — expected to work (command branching and path parsing implemented) |
Requirements
- DSH web >= 0.1.0-rc.6 (run with
npx @deepseek-ai/dsh web) - Version compatibility (best effort — the settings card uses dual-field
key+idregistration to satisfy both rc.6 (id) and rc.7+ (key); verified locally on rc.6/rc.8/0.1.1-rc.2, not guaranteed on every DSH version):- DSH 0.1.0-rc.6 and newer (incl. 0.1.1-rc.1/rc.2): try
main(default). - Conservative fallbacks (the last pre-0.1.1 build): DSH 0.1.0-rc.7/rc.8 →
v1.0.8(dsh plugin add github:a903067276-rgb/dsh-file-mentions#v1.0.8); DSH 0.1.0-rc.6 → frozenrc6-compattag (no maintenance).
- DSH 0.1.0-rc.6 and newer (incl. 0.1.1-rc.1/rc.2): try
- Pure Node stdlib implementation — peer dependencies (
@deepseek-ai/dsh-settings,@deepseek-ai/schemastery) are provided by the host - Opening files uses the system default app / file manager (per-platform command branching)
- Maintenance policy: this plugin keeps evolving with the latest DSH releases; compatibility with older DSH versions is best-effort only and not guaranteed going forward.
How it works
- Host (
lib/index.js): three routes —/api/file-mentions/check(existence check),/api/file-mentions/open(system open,mode: open/reveal, per-platform command) and/api/file-mentions/config(whitelist read/write for the settings page). All three routes are same-origin guarded. Probe surface: absolute/~/paths are checked only inside the session cwd or user-declared whitelist roots (stored via the official settings service — immediate effect, no restart); whitelist roots are protected against system disks and symlink escapes. Pure Node stdlib;execFileavoids shell injection. - Client (
lib/client.js): a conversationEvents collector extracts paths from each reply → publishes them to turn data → the tail list filters non-existent paths before rendering; inline clicks use a document-level click delegation (the official render entry is occupied by the official "deliverables" plugin, so DOM delegation is the only viable path); inline folder-icon buttons are inserted by a MutationObserver and restored automatically after React re-renders; a settings card (sidebar section + plugin page) edits the whitelist.
See docs/architecture.md.
Notes
- Use either the official bundle install or the manual mount — never both.
- Manual mounting needs a single entry in
~/.dsh/cordis.patch.yml; a double entry applies the plugin twice and crashes on duplicate route registration.
Compatibility notes
- Inline clicks rely on backtick-wrapped paths (the agent-output convention, same as Codex); bare paths in prose are intentionally not clickable.
- The official "produced files" list and this plugin coexist: official wins when it has output, otherwise this plugin shows.
- Windows / Linux validation via issue or PR is welcome.
nexu-io/open-design
ruvnet/ruflo
amruthpillai/reactive-resume
esengine/DeepSeek-Reasonix
volcengine/OpenViking
Molunerfinn/PicGo
titanwings/distilly
titanwings/colleague-skill