dsh-cloud-download:在 Web 对话里直接下载交付与预览文件

前言

DeepSeek Harness(DSH)跑在远程主机、容器、NAS 或反向代理后面时,浏览器在你本机,文件在 Host 上。官方界面里「在文件管理器中打开」「显示文件位置」一类操作往往在 Host 桌面执行成功,但远程浏览器看不到那台机器的桌面;无头环境或只有 Xvfb 时更是如此。要拿到 Agent 交付或改动的文件,常见做法是 SFTP、自建文件管理或绕到 NAS,和对话流是两条线。

dsh-cloud-download 由社区维护者 SOVLOOKUP 发布,分类为客户端插件。它在 DSH Web GUI 上补一条真正走网络的浏览器下载路径,并默认隐藏那些在远程/无头部署里无效的本地打开控件。下面介绍它的能力、安装方式与使用边界。

这是什么

插件全名 dsh-cloud-download,仓库 SOVLOOKUP/dsh-cloud-download,目录页 skillhub.cn 条目。一句话:从对话里的交付卡片、改动文件审阅侧栏和文档预览头,把 DSH 已交付、已改动或正在预览的文件下载到本机,无需再开 SFTP 或后端文件管理。

DSH 生态强调「一切皆插件」;SkillHub 等社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。安装插件会以当前 dsh 进程权限在 Host 上加载代码,安装前宜自行查看源码与 MIT 许可证。

核心功能

README 用表格归纳了四个注入位置,均在官方界面做「加法」,不替换整张交付卡片(若 Host 的 Web 构建未暴露这些插槽,插件会保持静默)。

位置 增加的内容
交付卡片(present) 原生打开控件旁增加下载图标
改动文件审阅(右侧栏) 审阅标题区增加下载图标
文档预览标题栏 当前预览文件的下载图标
不支持预览的空状态 带文案的「Download file」按钮

下载图标会显示状态:Preparing download…、Download started,或 Download failed. Click to retry.。失败时会在短 toast 里展示服务端 HTTP 状态与原因,而不是浏览器泛化的「下载失败」。

远程打开控件的清理: 默认隐藏文件级、目录级原生打开控件(选择器 [data-open-target])。在确有本地桌面的环境里若需要恢复,在浏览器控制台执行后刷新页面:

localStorage.setItem('dsh-cloud-download:native-open', 'show')
location.reload()

再次隐藏:

localStorage.removeItem('dsh-cloud-download:native-open')
location.reload()

下载如何工作

  1. 浏览器向插件注册的已认证路由发 HEAD 请求;探测成功表示文件可读、Host 可以流式传出。
  2. 再由浏览器自带下载管理器请求附件 URL,大文件流式落盘,避免整文件堆在页面内存里。
  3. 探测失败会再发一次 GET,以便把 Host 返回的错误文案放进 toast。

交付与审阅侧的下载只携带官方卡片已有的坐标:Session、持久事件序号、文件索引;不传路径或额外能力,由 Host 从 Session 日志解析路径,并限制在配置的 workspace 根目录内,越界返回 403。

预览标题栏复用 DSH 内置 /api/file,需要 Host 上的绝对路径,单文件上限约 20 MiB;更大的文件应从交付卡片或审阅页下载。

Host 侧注册一条已认证路由 /api/cloud.download;浏览器侧注册上述四个 additive 插槽,不 patch DSH 核心包。当前 package 版本为 1.2.1(见仓库 package.json)。

安装与启用

在已安装 DSH CLI 的机器上,按 README 从 GitHub 安装(npm 同名发布计划中,目前以 GitHub 安装为准):

dsh plugin --profile web add github:SOVLOOKUP/dsh-cloud-download

安装后刷新浏览器页面。包内已包含构建好的 index.js 与 client.js。README 写明需要暴露上述四个 per-file 插槽的 DSH Web 构建(开发时针对 DSH 0.2.x);不满足时插件不会强行替换官方卡片。

典型用法

日常无需额外配置:在对话里出现交付卡片、打开右侧改动审阅、或预览文档时,点对应位置的下载图标即可。大文件优先用交付或审阅入口;仅预览且超过约 20 MiB 时受 /api/file 限制。

与生态里其它插件的分工(README「Related plugins」):dsh-save-button 侧重交付卡片下载并兼容较旧 DSH 线;dsh-file-transfer 在预览工具栏与 Files 树提供确认的上下传与文件夹 ZIP。本插件刻意收窄范围:卡片、审阅、预览三处统一的单文件下载,外加无头场景下的原生打开控件清理。

适用场景与注意

适合: DSH Host 在远端、容器、NAS 或反代后,你主要用 Web GUI 看对话和文件,希望「点一下就到本机下载目录」的场景。

限制(README「Limits」):

  • 预览路径受 DSH /api/file 约束(约 20 MiB)。
  • 交付与审阅下载限定在 Host 配置的 workspace 根内,外部文件 403。
  • 仅单文件下载;不上传、不扫目录、不打 ZIP。
  • 不绕过 DSH 的 session / 文件系统授权。

维护者提供的开发命令(Host 开发或审代码时参考,运行测试需 Node >=22):

npm install
npm run typecheck
npm test
npm run build

结尾

dsh-cloud-download 解决的是远程 DSH 上「看得见对话、拿不到文件」和「打开文件管理器却在 Host 桌面上」的错位:用认证路由 + 浏览器下载管理器补全链路,并默认收起无效的本地打开按钮。需要细节、截图与 Issue 时,见 GitHub 仓库 与 SkillHub 目录页。

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

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

Xiaoye