dsh-open-native:点交付卡片用系统默认程序打开

前言

在 DeepSeek Harness(DSH)里,智能体通过 present 交付的文件会以卡片形式出现在对话中。默认行为是:点卡片主体会在右侧 Sidebar 内嵌预览,而「用系统默认程序打开」是卡片上另一个独立按钮。对经常要直接用 WPS、本地编辑器或专业软件处理 .xlsx、.pdf 等交付物的开发者来说,多一步预览、再去找「打开(默认)」并不顺手。

下面介绍社区插件 dsh-open-native(维护者 Lessthinker66),它把「点卡片本体」改成走系统默认程序打开,同时保留按住修饰键时仍进内置预览的退路。插件归类为 客户端,改动只在浏览器端,不修改 DSH 本体。

这是什么

dsh-open-native 的定位是:打开交付文件卡片时,用宿主提供的原生通道 session.openWorkspacePath({ path }) 调起系统对该扩展名关联的默认应用,而不是 DSH 写死的侧边栏内嵌预览。

文件最终由哪个程序打开,仍取决于操作系统对扩展名的默认关联(例如 Windows 上 .xlsx 关联到 WPS 还是 Microsoft Office),与插件无关;若关联异常,属于系统侧问题,不是本插件的打开通道选择问题。

DSH 默认行为与本插件的差异

DSH 交付卡片刻意区分两条路径:

  • 点卡片本体 → 右侧 Sidebar 内嵌预览(无设置项可改)。
  • 卡片上的「打开(默认)」按钮 → 系统默认程序。

本插件把第一条路径改成与第二条相同的原生打开方式。实现上在 document 的捕获阶段监听 click:命中带 [data-presented-file] 的卡片、且未点在右下角动作按钮上时,preventDefault() 掉原预览逻辑,改为调用 session.openWorkspacePath。卡片预览按钮的 title 上挂的是解析后的绝对路径(resolveWorkspacePath(cwd, file.path)),插件从实际点到的按钮上读取路径,避免一张卡片多个文件时认错。

保留内置预览

按住 Shift、Ctrl、Alt 或 Cmd(视平台而定)再点卡片,仍走 DSH 内置侧边栏预览,便于偶尔需要在内置界面里快速看一眼的场景。

安装与启用

这是标准 DSH 插件包(dsh.bundle.patch + dsh.client)。package.json 中声明适用 DSH 版本为 >=0.2.0-rc.2,供插件市场做兼容判断;当前包版本为 1.1.1,许可证 MIT。

在 desktop profile 下安装:

dsh plugin --profile desktop add dsh-open-native

若使用本地打包文件:

dsh plugin --profile desktop add file:/绝对路径/dsh-open-native-1.1.0.tgz

装完后在 DSH 可视化页面的「插件」面板中可见条目(标题「原生打开」,带图标),可随时启用或停用。

安装前建议自行查看 GitHub 仓库 源码与许可证;插件在当前 DSH 进程权限下运行,与任何客户端插件一样,应确认来源可信。

典型用法

  1. 安装并启用插件后,在对话中让智能体 present 出文件卡片。
  2. 直接点击卡片主体(非右下角动作按钮)→ 文件应由系统默认程序打开。
  3. 若需要侧边栏预览,按住 Shift(或 Ctrl / Alt / Cmd)再点卡片。

无需额外配置项;行为由点击目标与修饰键决定。

实现要点与包结构

改动不碰 app.asar,DSH 升级不会因此丢失插件逻辑。主要文件如下:

文件 作用
lib/index.js 宿主半区:不注册服务,仅保证 bundle 可被加载
lib/client.js 客户端半区:捕获阶段点击拦截
cordis.patch.yml 将插件挂入 profile
locale/*.json 插件面板名称与描述

排错与版本风险

按 F12 打开开发者工具,在 Console 中查看是否有 [dsh-open-native] 开头的警告:

  • 宿主没有受理原生打开:宿主拒绝调用(路径不在会话工作区内,或宿主未提供原生打开能力)。
  • 无任何输出:点击可能未被识别为卡片,常见原因是 DSH 大版本更新了卡片 DOM。

插件靠 [data-presented-file] 容器与预览按钮 class 中含 cardPreview 识别卡片;常量定义在 lib/client.js 顶部。类名对不上时会退回「卡片内第一个 title 为绝对路径的按钮」;若容器标记 data-presented-file 被移除,插件可能整体失效。路径须形如绝对路径(C:\、\\、/ 开头)才会调用宿主,避免误把普通文案当路径。

README 中记载的版本变更:1.1.0 增强预览按钮识别与多文件路径取值;1.0.0 为首版。

适用场景与注意

适合经常在 DSH 桌面端处理交付文件、希望「点卡片即本地打开」的开发者。不适合依赖默认侧边栏预览作为唯一阅读路径、且不愿使用修饰键的场景。

社区插件目录见 SkillHub 条目;该站点为社区生态目录,与 DeepSeek / 幻方无官方从属关系。源码与问题反馈:https://github.com/Lessthinker66/dsh-open-native。

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

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

Xiaoye