前言¶
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()
下载如何工作¶
- 浏览器向插件注册的已认证路由发
HEAD请求;探测成功表示文件可读、Host 可以流式传出。 - 再由浏览器自带下载管理器请求附件 URL,大文件流式落盘,避免整文件堆在页面内存里。
- 探测失败会再发一次
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 目录页。