前言¶
在 DSH Web UI 中,工具输出的文件路径或会话中的链接通常只是纯文本。直接打开文件、查看文件详情或管理链接往往需要复制路径并在外部应用中操作。此插件通过注入右键菜单和路径芯片的视觉增强,将原生文件系统的操作能力引入 Web 界面。
这是什么¶
dsh-file-link-menu 是一个为 DSH Web UI 提供右键菜单支持和路径芯片视觉增强的插件。
它解决的核心问题是:在浏览器环境中,用户无法像在本地桌面一样快速打开文件或链接。该插件通过监听浏览器事件并识别 DSH 界面的特定锚点,为文件、链接、附件以及用户输入的 @ 引用提供上下文菜单操作,同时为路径芯片添加文件类型图标和短名称,提升信息识别效率。
核心功能¶
插件主要处理三类目标的交互与展示:
-
文件右键菜单
针对已交付的文件卡片、生成的文件芯片或内联路径,右键菜单提供以下操作:- 打开文件(默认应用)
- 在 VS Code 中打开
- 以其他应用打开
- 另存为
- 复制文件路径
- 在资源管理器中显示
-
链接右键菜单
针对外部链接(http/https链接),右键菜单提供以下操作:- 在新标签页打开
- 在默认浏览器打开
- 复制链接
- 将链接另存为
-
路径芯片与附件增强
- 图标与短名:路径芯片会显示文件类型图标和短文件名,全路径保留在元素的
data-flm-full-path属性中。 - 附件卡片:支持附件卡片的预览(左键)和右键操作。
- @ 引用:处理用户在消息中输入的
@引用,将其渲染为文件芯片并支持相同的右键操作。
- 图标与短名:路径芯片会显示文件类型图标和短文件名,全路径保留在元素的
-
主机能力探测
插件通过GET /api/dsh-file-link-menu/caps接口获取宿主机的能力,例如桌面会话状态、可用的文件管理器类型和可启动的应用列表。如果没有桌面会话,插件会自动隐藏启动行。
安装与启用¶
插件通过 NPM 发布预构建版本,无需本地构建步骤。
dsh plugin --profile web add dsh-file-link-menu
安装后,必须重启 dsh web 进程或宿主应用,然后刷新页面,功能才会生效。
典型用法¶
- 右键操作:在对话或工具输出中,右键点击文件芯片或链接,即可弹出对应的操作菜单。
- 快速预览:点击附件卡片,文件会在右侧边栏预览。
- 引用文件:在消息输入框中使用
@引用文件,发送后该引用会以芯片形式显示,支持右键操作。
适用场景与注意事项¶
- 环境依赖:插件依赖
@deepseek-ai/dsh-client-ui-conversation、@deepseek-ai/dsh-client-ui-primitives和@deepseek-ai/dsh-client-ui-slots插件。 - 桌面会话:未检测到桌面会话的主机会隐藏“打开”和“在资源管理器中显示”等启动行。
- 渲染机制:插件使用 React 的
useId生成动态 ID。如果宿主更新了锚点结构且插件未同步更新,识别逻辑可能会失效,此时系统将回退到 Shell 的默认渲染方式。 - 构建方式:NPM 包为预构建版本,本地检出源码无本地构建步骤。
短结尾¶
dsh-file-link-menu 为 DSH Web UI 带来了接近原生桌面应用的文件交互体验。通过标准化的右键菜单和路径芯片增强,开发者可以更直观地管理文件与链接资源。