dsh-delivery-cards:独立交付卡片行,修复链路抢占与窗口可见性问题

前言

DeepSeek Harness Web 插件生态中,conversation.chat.turnTail 是一个 chain slot——第一个 accept 的渲染会跳过后续渲染。dsh-better-sidebar 插件常通过 -1 的优先级抢先接管该链,导致官方交付卡片(包含 chips 与交付卡片)的整条渲染被跳过。本插件通过 -2 的优先级插入链路,仅在存在 present 声明的回合接手渲染,绕开了链被抢占导致的卡片消失问题。

它是什么

dsh-delivery-cards 是 vclike 维护的一个 DSH Web 插件。它提供独立的交付卡片行,具备 11 类文件类型图标、亮暗双主题支持,且完全零依赖零构建。

安装与启用

插件未发布至 npm,需从 GitHub 源码安装。

  1. 安装插件:
    dsh plugin --profile web add github:vclike/dsh-delivery-cards
  1. 本地开发:
    git clone https://github.com/vclike/dsh-delivery-cards.git
    dsh plugin --profile web add link:D:/path/to/dsh-delivery-cards
  1. 登记包名:
    在 <DSH_HOME>/profiles/web/package.json 的 dsh.profile.bundles 数组中添加 "dsh-delivery-cards"。若不登记,浏览器半边不会被组装进启动图。
  2. 重启服务:
    修改前端 bundle 后必须重启 dsh web。

注意:不要在 dsh.profile.bundles 的 cordis.patch.yml 里手动写 insert: 行。宿主行由插件包内的 cordis.patch.yml 自动插入,手动重复会导致冲突。

核心功能

  • 优先级控制:以 -2 优先级参与 turnTail 链渲染,只在有 present 声明的回合接手;无 present 时回退,行为与未装插件一致。
  • v2.0 启发式兜底:客户端新增兜底层,当 presented 为空时,按路径、格式、大小启发式过滤 produced。这使得任何模型(Kimi、Claude、GPT 等)即使未调用 present 也能渲染交付卡片。
  • 卡片交互:
    • 点卡片空白处(或 Enter/Space)侧边栏预览。
    • 两个常驻按钮「打开」(默认程序)和「定位」(文件资源管理器),无折叠二级菜单。
  • 文件图标:支持 11 类文件类型图标(PDF、DOC、表格、PPT、MD、HTML、图片、视频、音频、压缩包、代码)。未收录的扩展名回落为文字徽标。
  • 主题适配:配色全部走主题 token,支持亮暗双主题切换。

技术细节与修复

  • 链路抢夺修复:dsh-better-sidebar 抢占了官方交付卡片的渲染入口,导致卡片消失。本插件通过更低优先级抢占,优先处理有 present 的回合。
  • Windows 窗口可见性修复:上游 @deepseek-ai/dsh-native-command 的 revealNativePath 使用了 windowsHide: true,导致 Windows 资源管理器窗口创建为不可见状态。本插件在宿主半边重写了该方法,将 windowsHide 改为 false,确保定位按钮能正常打开可见窗口。

环境要求

  • DSH:^0.1.5-rc.1
  • Node:>=20
  • 平台:Windows 平台下的「定位」功能修复了窗口不可见问题;非 win32 平台回退上游实现。

结语

dsh-delivery-cards 解决了 DSH Web 生态中交付卡片在多插件环境下不稳定显示的问题,并通过 v2.0 的启发式兜底和 Windows 窗口修复,提升了跨模型的兼容性和易用性。

  • GitHub: https://github.com/vclike/dsh-delivery-cards
羽毛球分组比赛记分
小程序二维码

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

小夜