dsh-download-button:为交付物文件卡片补上 Download

前言

在 DeepSeek Harness(dsh)的 Web 界面里,智能体生成文件后会渲染一张「交付物」卡片,默认只有 Open 和 Open in sidebar 两类操作。若你在无桌面的服务器上跑 dsh web,Open 会依赖宿主机桌面集成,往往直接失败;Open in sidebar 对 docx、xlsx、pdf、zip 等非文本文件只会提示无法预览。结果是:文件已经在工作区里,却缺少一条从浏览器落到本地磁盘的路径。

下面介绍社区插件 dsh-download-button(维护者 maxesisnclaw,分类:客户端)。它在每张交付物卡片上追加 Download 链接,复用 dsh 自带的认证文件接口,把字节流保存到本机。

这是什么

dsh-download-button 是面向 dsh Web UI 的客户端侧插件:不改 node_modules、不新增服务端路由,只在服务端渲染的首页注入一小段脚本,给交付物卡片增加下载入口,并在无桌面环境下隐藏与桌面集成相关的无效提示。

默认卡片行为与缺口

dsh 对交付物卡片提供的动作大致如下:

动作 行为 常见不足
Open 让宿主机用默认应用打开文件 无桌面服务器上无法使用
Open in sidebar 文本预览 非文本文件无法预览

插件希望在卡片操作区呈现类似:

[ Download ] [ Open ▾ ]

点击 Download 时,浏览器通过带会话 cookie 的请求拉取文件并触发保存。

核心功能

下载按钮

  • 为每张交付物文件卡片追加 Download 链接。
  • 复用内置路由 GET /api/file?path=<absolute path>(正确 Content-Type、cookie 认证),HTML download 属性提供文件名。
  • 绝对路径来自卡片已有的 title 属性(dsh 当前会把解析后的工作区路径写在这里)。

样式与升级友好

  • 按钮的 className 从同卡片上已有操作按钮复制,不硬编码 bundled 类名,主题变更时更容易跟上。
  • 不修改 vendor 代码,只 tap 服务端渲染的 index 页并注入脚本。

无桌面主机上的 UI 调整

当判定为无桌面环境时,隐藏「此主机无可用桌面,无法打开文件或文件夹」类提示。检测规则与 dsh 在 Linux 上的一致:是否存在 DISPLAY 或 WAYLAND_DISPLAY;macOS / Windows 桌面模式下不隐藏。

安装与启用

官方推荐(Web profile):

dsh plugin --profile web add github:maxesisnclaw/dsh-download-button

手动安装:

  1. 将插件目录复制到 <dsh-install>/plugins/dsh-download-button/。
  2. 在 $DSH_HOME/cordis.patch.yml 中追加:
   - insert:
       - id: download-button
         name: /absolute/path/to/dsh-download-button/index.js
  1. 重启服务:systemctl restart dsh(或重启你的 dsh web 进程)。

若该包出现在 profile 的 dsh.profile.bundles 中,捆绑的 cordis.patch.yml 会自动完成同样的 insert。

验证

  1. 打开 Web UI,让智能体生成任意非文本文件(docx、xlsx、pdf 等),在文件卡片上应能看到 Download;点击后应保存到本地。
  2. 服务端可单独验证底层路由(需替换会话 cookie 与路径):
   curl -b "<your session cookie>" \
     "http://127.0.0.1:3080/api/file?path=/absolute/path/to/file.docx" -o out.docx
   # out.docx 应与源文件字节一致
  1. 插件仓库内单元测试:npm test(检查 index 页注入只发生一次且幂等)。

适用场景与注意

适合谁: 自托管 dsh web、经常在浏览器里收 docx / pdf / 压缩包等交付物、主机可能是 headless Linux 的开发者或运维。

限制(README 原文):

  • 依赖当前 dsh 在交付物卡片上用 title 暴露绝对路径;若未来 markup 变更,需更新注入脚本中的选择器。
  • 仅作用于交付物文件卡片;侧边栏文本预览等其他界面不改动。

安全与权限: 插件以当前 dsh 进程权限运行,下载链路走已认证的 /api/file。安装前请阅读 GitHub 仓库 源码与 MIT 许可证,确认符合你的部署策略。

DSH 生态强调「一切皆插件」;社区目录 SkillHub 插件页 与 DeepSeek / 幻方无官方从属关系,本文仅作第三方插件说明。

结尾

dsh-download-button 在不大改 dsh 的前提下,为交付物卡片补上浏览器直下的 Download,并减轻无桌面环境下的无效 Open 提示。需要安装命令与细节时,以仓库 README 为准:

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

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

小夜