dsh-download-progress:为 DeepSeek Harness 提供常驻下载进度面板

前言

在 DeepSeek Harness(DSH)里做下载任务时,命令行日志往往只能看到当前进度,多个下载任务同时跑时不容易区分。尤其是 GitHub 大文件、镜像加速、多线程下载这类场景,进度、速度和剩余时间最好能常驻显示。

dsh-download-progress 是 DSH 的一个下载管理器插件,在右下角提供常驻悬浮面板,把每个下载任务的文件名、百分比、速度、剩余时间显示出来。

这是什么

dsh-download-progressazhe411 维护,许可证为 MIT。

它主要解决的是 DSH 下载任务缺少常驻进度面板的问题:

  • 右下角常驻显示下载面板;
  • 每个任务显示文件名、百分比、速度、剩余时间;
  • 支持多任务并发,每个任务有独立进度条;
  • 保留已完成和失败任务的历史记录,最多 20 条;
  • 支持在文件资源管理器中定位已完成或失败文件;
  • 面板支持拖动和缩放;
  • 下载工具支持断点续传、HTTP 重定向跟随、GitHub 镜像加速;
  • 可选使用 aria2 多线程下载,使用 16 连接并发;
  • 下载任务状态写入 ~/.dsh/downloads/tasks/<任务>.json
  • 支持动态插件加载和固化插件加载两种方式。

DSH 的插件生态强调“一切皆插件”。dsh-download-progress 属于社区目录中的下载管理插件,社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。

核心功能

常驻下载面板

面板常驻在右下角,不会因没有任务就消失。面板会显示「待命」状态,并在下载任务开始后展示具体进度。

多任务并发

每个下载任务单独显示一行:

  • 文件名;
  • 百分比;
  • 速度;
  • 剩余时间;
  • 独立进度条。

历史记录

已完成和失败任务会保留在列表中,最多保留 20 条。列表中可以通过「打开」按钮在文件资源管理器里定位对应文件。

面板操作

  • 任务列表支持收起 / 展开;
  • 面板可以通过标题栏拖动;
  • 面板可以通过右下角手柄缩放。

下载能力

下载工具支持:

  • 断点续传;
  • HTTP 重定向跟随;
  • GitHub 镜像加速;
  • 可选 aria2 多线程下载,使用 16 连接并发。

下载任务状态会写入:

~/.dsh/downloads/tasks/<任务>.json

面板读取这些任务状态来展示进度。

安装与启用

这个插件有两种加载方式:

  1. 动态插件方式:临时使用,重启即失;
  2. 固化插件方式:推荐重启自动加载,需要复制插件包到 profile 的 @local 目录、修改 cordis.patch.yml,并重启 dsh web

如果你只是临时验证,可以用动态插件方式。如果你希望重启后仍然自动加载,建议使用固化插件方式。

固化插件安装命令

以下是固化插件包的复制命令:

cp -r @local/dl-manager ~/.dsh/profiles/web/node_modules/@local/dl-manager

复制完成后,还需要在 cordis.patch.yml 中加入该插件的加载配置,并重启 dsh web

固化版插件推荐用于长期保留下载面板。动态插件方式适合临时调试,重启后会丢失。

典型用法

以下命令示例来自插件说明。

普通下载

node ~/.dsh/scripts/download.cjs <URL> <输出路径>

下载开始后,右下角面板会显示该任务的进度。

使用 GitHub 镜像加速

node ~/.dsh/scripts/download.cjs <URL> <输出路径> --mirror=https://gh-proxy.com/

适合国内直连 GitHub 大文件容易超时的场景。README 中提到推荐镜像可能偶发不稳定,遇到失败时可以换镜像或重试。

使用 aria2 多线程下载

node ~/.dsh/scripts/aria2-dl.cjs <URL> <输出路径> --mirror=https://gh-proxy.com/

aria2 模式使用 16 连接并发,适合较大文件。进度同样写入任务状态目录,并驱动右下角面板显示。

适用场景与注意

适合谁使用

如果你经常需要在 DSH web 会话中下载文件,尤其是 GitHub 大文件、多任务下载、镜像加速下载,这个插件比较适合。

安装前注意

插件会以当前 dsh 进程权限运行。安装前建议先检查源码,并确认许可证。该插件许可证为 MIT。

路径问题

如果 fs.resolve('~/.dsh/...') 没有正确展开 ~,进度条可能一直显示「待命」。这时需要把相关路径改成绝对路径,例如把 ~/.dsh/downloads/tasks 改成当前用户目录下的实际绝对路径。

动态插件注意事项

DSH 动态客户端没有浏览器定时器全局。动态插件里需要定时刷新时,应使用 timer 服务的 ctx.interval,并且插件需要声明:

"inject": ["timer"]

固化插件注意事项

固化版插件不能直接使用动态插件里的 harness.handle。固化版 host 端应改用 ctx.webServer.register 注册 HTTP 端点,client 端使用 fetch 轮询。

aria2 RPC 注意事项

  • aria2 RPC 请求必须带 Content-Length,否则 aria2 RPC 服务器可能报 Parse error
  • aria2 RPC 模式下载完成后不会自动退出,需要轮询 tellStopped 收尾并写入 done 状态,再执行 aria2.shutdown

其他说明

  • 限速功能已移除;
  • README 推荐的镜像可能偶发不稳定;
  • 动态插件方式标注为临时,重启即失;
  • 固化插件方式推荐用于重启自动加载。

结尾

dsh-download-progress 的价值在于把 DSH 下载任务从“命令行等待”变成“常驻面板观察”,尤其适合多任务下载、GitHub 镜像加速和 aria2 多线程下载场景。

相关链接:

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

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

小夜