dsh-file-link-menu:文件与链接的右键菜单增强

前言

在 DSH Web UI 中,工具输出的文件路径或会话中的链接通常只是纯文本。直接打开文件、查看文件详情或管理链接往往需要复制路径并在外部应用中操作。此插件通过注入右键菜单和路径芯片的视觉增强,将原生文件系统的操作能力引入 Web 界面。

这是什么

dsh-file-link-menu 是一个为 DSH Web UI 提供右键菜单支持和路径芯片视觉增强的插件。

它解决的核心问题是:在浏览器环境中,用户无法像在本地桌面一样快速打开文件或链接。该插件通过监听浏览器事件并识别 DSH 界面的特定锚点,为文件、链接、附件以及用户输入的 @ 引用提供上下文菜单操作,同时为路径芯片添加文件类型图标和短名称,提升信息识别效率。

核心功能

插件主要处理三类目标的交互与展示:

  1. 文件右键菜单
    针对已交付的文件卡片、生成的文件芯片或内联路径,右键菜单提供以下操作:

    • 打开文件(默认应用)
    • 在 VS Code 中打开
    • 以其他应用打开
    • 另存为
    • 复制文件路径
    • 在资源管理器中显示
  2. 链接右键菜单
    针对外部链接(http/https 链接),右键菜单提供以下操作:

    • 在新标签页打开
    • 在默认浏览器打开
    • 复制链接
    • 将链接另存为
  3. 路径芯片与附件增强

    • 图标与短名:路径芯片会显示文件类型图标和短文件名,全路径保留在元素的 data-flm-full-path 属性中。
    • 附件卡片:支持附件卡片的预览(左键)和右键操作。
    • @ 引用:处理用户在消息中输入的 @ 引用,将其渲染为文件芯片并支持相同的右键操作。
  4. 主机能力探测
    插件通过 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 带来了接近原生桌面应用的文件交互体验。通过标准化的右键菜单和路径芯片增强,开发者可以更直观地管理文件与链接资源。

羽毛球分组比赛记分
小程序二维码

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

小夜