dsh-link-menu:为 DeepSeek Harness 对话里的链接补右键菜单

前言

在 DeepSeek Harness(DSH)里和智能体对话时,消息里经常出现两类可点内容:工作区内的文件引用,以及 http(s) 外链。默认情况下,Chromium 原生右键菜单对这类元素帮助有限——DSH 把文件 mention 渲染成带 title 的 <button>,而不是带 href 的 <a>,因此 Host 侧往往拿不到可用的 linkURL。要在 Finder 里定位文件、复制绝对或相对路径,或在系统浏览器里打开链接,通常得自己翻路径或复制粘贴。

下面介绍社区客户端插件 dsh-link-menu(维护者 xiaoliuzhuan666)。它只在聊天区域的链接与文件引用上挂自定义右键菜单,并通过会话工作区根目录把相对路径解析成 Host 可接受的绝对路径,不修改应用本体、不跑 setup 脚本。

这是什么

dsh-link-menu 是 DSH 的纯客户端插件:在对话消息里对文件引用和 HTTP(S) 链接提供右键菜单,并完成与工作区一致的路径解析。分类属于「客户端」;源码与说明见 GitHub 仓库,社区目录页为 SkillHub 条目。许可证 MIT,当前 package 版本 1.0.0。

插件刻意收窄范围:只处理聊天里的链接,不做侧边栏或其它 UI 补丁;README 中列出的相邻插件(如 dsh-filemenu、dsh-link-context-menu 等)覆盖其它场景,可按需对比选用。

核心功能

文件引用(右键消息里的文件 mention)

菜单项 作用
Reveal in Finder / 在 Finder 中显示 在 Finder 中选中该文件(Windows 上对应 explorer /select)
Copy File Path / 复制文件路径 复制绝对路径
Copy Relative Path / 复制相对路径 复制与聊天中展示一致的相对路径

HTTP(S) 链接

菜单项 作用
Open in Browser / 在浏览器中打开 将 URL 交给系统默认浏览器
Copy Link Address / 复制链接地址 复制 URL

实现要点(与原生菜单的关系)

插件不依赖对 DSH 打补丁。README 说明,所需信息在标准安装里已存在:文件路径来自 markdown 渲染器生成的 <button> 的 title;工作区根来自 ctx.sessions.list.getSnapshot().byId[id].cwd;会话 id 来自对话根节点的 data-conversation-session;在 Finder 中显示则调用 remote.session.openWorkspacePath({ action: "reveal" })。

因原生 Electron 上下文菜单无法从 <button> 得到链接目标,插件在 contextmenu 时自绘弹出层并对原生菜单 preventDefault(),这是客户端插件的常见做法。

绝对路径解析

remote.session.openWorkspacePath 需要绝对路径;Host 通过 fs.processPathFromHostPath 映射,相对路径会得到 undefined 并报错 "Path has no verified Host path"。mention 的 title 常为工作区相对路径,插件会先与会话 cwd 拼接,并保持当前 OS 的路径分隔符(POSIX /,Windows \)。

若 DOM 中找不到会话、或 store 里没有 cwd,插件不展示会静默失败的操作,而是保留原生菜单并给出简短 toast。

安装与启用

DeepSeek Harness 要求 >= 0.2.1-rc.1(README 在 0.2.1-rc.5、macOS arm64 上验证);Node >= 20。

在桌面 profile 下执行官方安装命令:

dsh plugin --profile desktop add github:xiaoliuzhuan666/dsh-link-menu

安装后完全退出并重新打开 DeepSeek Harness。无需 setup.sh、无需改应用文件、无需重签 app bundle。

在 DevTools 控制台可确认插件已加载:

document.documentElement.getAttribute('data-dsh-link-menu')   // 期望为 "active"

典型用法

  1. 打开任意带工作区的对话,在消息中找到助手或用户引用的文件路径(渲染为可点的 mention)。
  2. 在该 mention 上右键,选择「在 Finder 中显示」或「复制文件路径 / 复制相对路径」。
  3. 对消息中的 https:// 或 http:// 链接右键,选择「在浏览器中打开」或「复制链接地址」。

路径相关菜单仅在能解析到会话与工作区根时生效;否则见上文 toast 行为。

适用场景与注意

适合谁: 经常在 DSH 聊天里点开文件引用、需要在资源管理器中定位或复制路径,以及希望外链一键进系统浏览器的桌面用户。

权限与安全: 插件随当前 DSH 进程运行,安装前建议阅读 仓库源码 与 MIT 许可证,确认行为符合你的环境策略。社区插件目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系,安装来源以你执行的 dsh plugin 命令与 GitHub 发布为准。

环境: 面向 dsh.client.platform: web 的客户端注入;Host 侧 lib/index.js intentionally 为空,属于仅客户端逻辑的包结构。

结尾

dsh-link-menu 用标准插件方式补上聊天内文件与外链的右键能力,并把相对 mention 解析成 Host 可用的绝对路径,避免为菜单去改 DSH 本体。若你只需要对话里的链接菜单,可以按 README 命令安装并在控制台核对 data-dsh-link-menu。

  • 目录页:https://www.skillhub.cn/plugins/xiaoliuzhuan666/dsh-link-menu
  • GitHub:https://github.com/xiaoliuzhuan666/dsh-link-menu
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye