前言¶
在 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 认证),HTMLdownload属性提供文件名。 - 绝对路径来自卡片已有的
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
手动安装:
- 将插件目录复制到
<dsh-install>/plugins/dsh-download-button/。 - 在
$DSH_HOME/cordis.patch.yml中追加:
- insert:
- id: download-button
name: /absolute/path/to/dsh-download-button/index.js
- 重启服务:
systemctl restart dsh(或重启你的dsh web进程)。
若该包出现在 profile 的 dsh.profile.bundles 中,捆绑的 cordis.patch.yml 会自动完成同样的 insert。
验证¶
- 打开 Web UI,让智能体生成任意非文本文件(docx、xlsx、pdf 等),在文件卡片上应能看到 Download;点击后应保存到本地。
- 服务端可单独验证底层路由(需替换会话 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 应与源文件字节一致
- 插件仓库内单元测试:
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