nanshanzhaoji
dsh-download-progress
DSH 下载进度插件:download 工具实时计算下载百分比,Web GUI 右下角悬浮面板显示进度条
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 17, 2026
- Updated
- Aug 17, 2026
Introduction
dsh-download-progress
DSH 下载进度插件:给 DeepSeek Harness 增加一个 download 工具,下载时在 Web GUI 右下角显示实时进度条(百分比 / 速度 / 大小),无需用户盯着终端猜下载是否卡住。
- 中英双语界面(面板文案跟随浏览器语言)
- 纯官方接缝:工具走
ctx.tools,面板走shell.overlayslot,进度走ctx.webServer路由 - 零构建:客户端 bundle 为手写
__ModuleLoader__.load格式,安装即用
Overview
| 问题 | 本插件解决 |
|---|---|
| 模型用 shell / web 工具下载大文件时,GUI 上看不到进度 | 提供 download 工具,实时上报 received / total → percent |
| 想知道下载速度、剩余大小、是否卡住 | 面板显示速度(B/s)、已下载/总大小、百分比 |
| 想让别的客户端也消费进度 | 暴露 GET /download-progress JSON 快照接口 |
Compatibility
- 目标 DSH:
0.1.0-rc.6(实测于 2026-08-17,Windows + web profile) - 依赖:Node.js ≥ 18(内置
http/https/stream,无第三方运行时依赖) - 平台:Web GUI(
dsh web);浏览器端依赖shell.overlayslot(由dsh-client-ui-layout声明) - 已验证:
download工具真实下载 4 MiB →percent: 100、字节数一致、快照 JSON 正确、取消后清理临时文件(test/smoke.mjs)
Install
# 方式一:npm 包(若已发布)
dsh plugin --profile web add dsh-download-progress
# 方式二:GitHub clone 安装
git clone https://github.com/nanshanzhaoji/dsh-download-progress.git
dsh plugin --profile web add ./dsh-download-progress
安装后重启 dsh web 生效(新增插件行需要重新加载组合树)。
安装完成后确认:
# 浏览器访问(重启后)
curl http://127.0.0.1:3080/download-progress # → {"downloads":[]}
curl http://127.0.0.1:3080/plugins/dsh-download-progress/client.js # → 200
Uninstall
dsh plugin --profile web remove dsh-download-progress
或手动移除 profile 的 cordis.patch.yml 中对应 insert 行、删除 node_modules 中的包,然后重启 dsh web。
Quick start
在对话中让模型调用:
download({ url: "https://example.com/file.zip", dest: "file.zip" })
Web 右下角实时显示:
下载进度 2 个进行中
file.zip ▓▓▓▓▓░░░░░ 62%
34.5 MB / 55.7 MB 8.2 MB/s
下载完成后条目停留约 1 分钟自动消失;没有活动下载时面板自动隐藏。
Configuration
host 端 Config(cordis.patch.yml 中 download-progress 行的 config):
| 字段 | 默认 | 说明 |
|---|---|---|
keepFinishedMs | 60000 | 完成后在面板停留的毫秒数 |
maxFinished | 20 | 内存中保留的已完成条目上限 |
maxRedirects | 5 | 跟随重定向次数上限 |
示例:
- id: download-progress
name: dsh-download-progress
config:
keepFinishedMs: 120000
maxRedirects: 8
Permissions & data
- 网络:
download工具会向目标 URL 发起 HTTP(S) 请求并流式写入工作区文件(dest相对工作区根解析,默认取 URL 文件名)。请确保目标地址可信。 - 文件:写入路径由调用方
dest决定,仅写入工作区内的目标文件及其父目录。 - 不访问:不读取凭据、不上传任何数据、不做遥测。
- 浏览器端:仅轮询同源
/download-progress;不读取会话内容。
Troubleshooting
| 现象 | 排查 |
|---|---|
| 面板不出现 | 确认重启过 dsh web;确认浏览器访问 /plugins/dsh-download-progress/client.js 返回 200;确认页面无 JS 报错 |
/download-progress 404 | 插件 host 端未加载:检查 --dump-config 是否包含 download-progress 行,检查启动日志 |
下载报 HTTP xxx | 目标返回非 200;可能是 404/403/500,检查 URL 是否有效 |
| 进度一直 0% | 服务器未返回 Content-Length(chunked 响应),此时显示"下载中…"而非百分比,属预期行为 |
| 取消后残留文件 | 取消时会删除未完成的临时文件;若进程被强杀可能残留,手动删除即可 |
Development
npm install # 安装运行时依赖(@deepseek-ai/dsh-tools 等)
node test/smoke.mjs # 冒烟测试:本地 HTTP 服务器驱动真实下载 + 取消路径
冒烟测试断言:文件字节数、percent === 100、/download-progress 快照 JSON、取消后清理临时文件。
License & security
- MIT License(见 LICENSE)
- 安全问题:请勿在公开 issue 中粘贴敏感信息;可直接开 issue 或私信维护者