dsh-download-progress:DSH 会话头里的下载与后台任务进度

前言

在 DeepSeek Harness(DSH)里,拉模型权重、装依赖、用 curl / wget / aria2c 下大包,多半会走后台任务。进度通常只打在任务输出里:要么盯着终端,要么反复问「下完了没」,要么干脆忘了还在跑。

dsh-download-progress 由社区维护者 MorixMa 发布,归类为客户端插件。它在会话头右上角放一个常驻下载图标,自动汇总正在跑的后台任务与可配置的进度源,用环形进度、动画条、速率和剩余时间呈现;已完成的文件可单击用系统默认应用打开。不启动、不结束任务,也不写业务文件(除你主动点的「打开文件 / 定位文件夹」)。安装与运行发生在本机 DSH 进程权限下,装之前建议扫一眼仓库源码与 MIT 许可证。

这是什么

一句话:专为 DSH 下载与后台任务做的进度指示器,零第三方插件依赖,运行时 dependencies 为空。

DSH 里下载和普通后台任务共用同一名册(ctx.jobs)。插件不会猜哪条才是「下载」,而是读名册里全部任务:能解析出进度的画成进度条,解析不出的显示为「未知进度」的走马灯条。对下载场景够用,其它长任务也能当进度看板。

核心功能

会话头图标

状态 表现
空闲 灰化下载图标,无角标
有任务在跑 外圈环形进度弧;右下角蓝色数量角标
进度未知 环为旋转、伸缩的走马灯弧
仅剩失败任务 角标变红,显示失败数

图标常驻;只有打开带会话头的对话页时可见,纯设置页没有会话头则看不到。

弹层清单

点开图标后:

  • 标题「下载与任务」、运行中数量、总览进度条与聚合数字
  • 每行只显示文件名(无目录、盘符、整行命令;悬浮 title 也不带路径)
  • 运行中进度条带扫光;未知进度为斜纹走马灯;完成变绿、失败变红
  • 数字行示例形态:100% · 36.71 MB / 36.71 MB · 48.1 MB/s(源里没写速率则不显示,不用 0 凑数)
  • 已完成且文件在盘上:单击文件名用系统默认应用打开;行尾文件夹图标在资源管理器中定位(进行中也可定位)
  • 底部:最后刷新时间、数据源可用性、手动「刷新」

系统开启 prefers-reduced-motion: reduce 时,动画会自动关闭。

进度解析

面向真实下载器输出,例如:

  • curl --progress-bar 的 \r 刷新表
  • wget 的 45%[===> ] 7.98M 1.21MB/s eta 8s
  • aria2 汇总行、各类「已传输 x / y」写法
  • 通用 JSON 进度文件

也支持多行「进度块」文本(百分比、比例、块状条、字节、速率、剩余时间等字段)。源未提供速率时,客户端用两次采样之间的字节差做指数滑动平均(α=0.4),并推算剩余时间;连续三次无增量则停止外推,避免卡住仍显示旧速率。

界面不渲染源里的 markdown 原文;原文留在 API 的 raw 字段,便于用 curl 排查。

数据来源(优先级)

  1. dsh-ops/background:若存在带 list() 的扩展服务则使用(当前 README 写明该路径尚无服务扩展点,空态会说明)
  2. DSH 后台任务:宿主 ctx.jobs,通过非消耗的 list() + readAt() 读输出尾部(最多约 8 KB),不移动模型自己的 job_output 游标
  3. 配置项 progressSources 中的绝对路径文件或目录(目录仅浅扫描一层,支持 *.md / *.markdown / *.txt / *.json / *.jsonl / *.progress;单文件最多读尾部 256 KB)

一次响应最多 64 条任务;结束超过 2 分钟的任务不再显示。DSH 内部常驻 shell 会话等也会出现在列表里,往往显示为未知进度。

安装与启用

环境要求(见仓库徽章与 package.json):DSH >=0.2.0-rc.1 <0.2.1,Node >=22.3。产物 lib/ 随仓库提交,安装端无需构建、无需联网装 npm 依赖。

从 GitHub 安装:

dsh plugin --profile <profile 名> add github:MorixMa/dsh-download-progress

本地开发可用 link:<本仓库绝对路径>。desktop profile 由 Electron 独占,命令行会被拒绝,需在应用内插件管理器填同样的 github: 或 link: 规格。

装完后重启 DSH(host 半边需重新装载),再硬刷新页面(Ctrl+Shift+R)。会话头右上角应出现下载图标。更细的卸载与验证见仓库 INSTALL.md。

配置

配置写在插件 Loader 行的 config:,默认见仓库 cordis.patch.yml,也可写在 profile 的 patch 层。修改后需重启 DSH;host 半边不支持热更新。

字段 类型 默认 含义
progressSources string[] [] 进度源绝对路径;目录浅扫描一层
pollIntervalMs number 1500 客户端轮询间隔,限制在 500–60000

示例:

- id: download-progress
  name: dsh-download-progress
  config:
    progressSources:
      - 'D:\字体_进度.md'
      - 'D:\downloads\progress'
    pollIntervalMs: 1500

插件导出 Standard Schema 形态的 Config,Loader 可校验;宿主设置页可能不会自动生成表单(Inspect 里可能显示 unsupported)。这是为了在 link: 安装下不依赖 @deepseek-ai/schemastery 解析路径。

典型用法

  1. 按上文命令把插件装进当前 profile,重启并硬刷新。
  2. 在 DSH 里用模型或工具发起 wget / curl / aria2c 等后台下载,回到对话页看会话头图标与角标。
  3. 点开弹层查看每条任务的百分比、体积、速率与 ETA;完成后单击文件名打开。
  4. 若进度写在独立文件(例如脚本定期更新 markdown 或 JSON),把绝对路径加入 progressSources,重启后再看弹层。

排查时常见对照:

现象 处理方向
没有图标 确认 profile bundles 含本插件;硬刷新或重启
Failed to fetch host 路由未挂上,重启 DSH
HTTP 403 信任围栏;非桌面部署需检查 trustedHosts
一直是走马灯 任务输出无可解析进度;可读 API 里该任务的 raw 字段对照 README「支持的进度写法」

适用场景与注意

适合:经常在 DSH 里跑大文件下载或长后台任务、希望会话内一眼看到进度和 ETA,并在下完后从面板直接打开文件的开发者。

注意:

  • 插件以当前 DSH 进程权限运行;只观察任务,默认不杀进程、不写进度文件。
  • 与 dsh-better-sidebar 等其它插件无硬依赖;Slot 与 webServer 均用 DSH 核心能力。
  • UI 文案固定中文,未做 i18n。
  • 社区目录 SkillHub 条目 与 GitHub 仓库同源,与 DeepSeek / 幻方无官方从属关系;DSH 生态本身是「一切皆插件」,装插件前自行审阅源码与许可即可。

结尾

dsh-download-progress 把分散在终端输出里的下载进度收拢到会话头:环形图标、清单式进度条、真实差分速率,以及完成后的打开与定位。需要安装命令、配置字段和限制说明时,以仓库 README 为准。

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

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

Xiaoye