下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/9yun--9yun-downloader.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @9yun/9yun-downloader。九运下载器(9yun-downloader)是一款可安装在AI智能体(Workbuddy、豆包、Deepseek Harness)内的文件下载工具。支持多线程下载、断点续传。可以从会话中提取下载地址,或者由用户直接提供下载地址完成文件的下载。
阅读全文 (展开查看完整说明)
概述
概述
通过内置 Python 脚本(scripts/download.py)用多线程把 HTTP(S) 文件下载到本地,仅依赖 Python 标准库,零第三方依赖。核心特性:
- 多线程分块下载:用 HTTP
Range请求把文件切成多块并行下载(单文件默认 8 线程,上限 32),写入同一文件的不同偏移。 - 自动回退:服务器不支持
Range时自动改为单线程流式下载。 - 断点续传:
.9yundl临时文件 +.9yundl.meta元数据(块级记录),意外中断后再次运行同一命令可从中断处继续。 - 多文件并行:
-j控制同时下载的文件数。 - 进度显示 + 完成提示:进度走 stderr,完成有摘要;并尽力发送系统通知(Windows 通知气泡 / macOS
osascript/ Linuxnotify-send)+ 终端响铃。 - 限速 / 重试 / 校验:
--limit-rate、--retry、自定义请求头、Cookie、UA、--hash md5/sha1/sha256校验,--insecure跳过证书校验。
使用时机
- 用户发来一个/多个下载链接,说"下载这个""帮我把这些文件下载下来"。
- 用户说"从我们的聊天记录里找下载地址并下载""把上面那些链接都下载了"。
- 用户需要大文件高速下载、断点续传、批量下载、或带限速/校验的下载。
调用方式
脚本位于本技能目录下 scripts/download.py,用隔离环境里的 Python 运行:
<隔离Python> <技能目录>/scripts/download.py <URL或参数>隔离 Python 路径(优先用受管版本):
C:UsersAdministrator.workbuddybinariespythonversions3.13.12python.exe
1) 直接提供下载地址(最常见)
用户明确给出 URL,直接作为位置参数传入:
python scripts/download.py "https://example.com/bigfile.zip" -d ./downloads -n 8多个 URL 并行下载:
python scripts/download.py "URL1" "URL2" "URL3" -j 3 -n 8 -d ./downloads2) 从当前会话中提取下载地址
当用户没有给出明确"下载这个"的指令,而是说"把会话里的下载链接都下了""找找上面的下载地址",按此流程:
- 扫一遍当前会话,用正则
https?://[^s<>"')]]+找出所有 http(s) 链接。 - 判断哪些像文件下载地址:通常带文件名后缀(
.zip/.tar.gz/.pdf/.iso/.exe/.mp4/.apk/.bin/.img等),或出现在"下载/附件/点击获取"等语境里。网页链接(如博客文章、搜索结果页)一般不是下载地址——拿不准时把候选链接列给用户确认,不要擅自下载。 - 把确认的 URL 直接传给脚本(
--from-file或位置参数)。批量场景建议用--from-file写入一个临时urls.txt(每行一个 URL,#开头为注释),再调用。
# 把提取到的链接写入文件后
python scripts/download.py --from-file /tmp/urls.txt -d ./downloads -j 3也可让用户直接把链接粘贴到 stdin:
echo "https://example.com/a.zip
https://example.com/b.zip" | python scripts/download.py -3) 完成后
下载结束后脚本会打印结果摘要(每条的成功/失败、路径、大小、耗时)。请用 present_files 把下载好的文件(或其所在目录)展示给用户,路径由摘要里的 -> 行 / JSON 的 items[].path 给出。
参数说明
| 参数 | 说明 |
|---|---|
URL... / - | 一个或多个下载地址;- 表示从 stdin 读取 |
-o, --output PATH | 输出文件路径(单文件)或目录(多文件) |
-d, --dir DIR | 输出目录,默认 ./downloads |
-n, --connections N | 单文件连接数,默认 8,上限 32 |
-j, --jobs N | 并行下载的文件数,默认 3 |
--min-split SIZE | 小于此体积不分块(默认 1MB),如 5M |
--min-part-size SIZE | 每个分块最小体积,默认 256K |
--chunk-size SIZE | 单次读取块大小,默认 256K |
--limit-rate SIZE | 限速,如 1M / 500K(0 或省略 = 不限速) |
--timeout SEC | 连接/读取超时秒数,默认 30 |
--retry N | 每个分块失败重试次数,默认 3 |
-H, --header "K: V" | 自定义请求头,可重复 |
--cookie / --user-agent / --referer | 自定义 Cookie / UA / Referer |
--insecure | 跳过 SSL 证书校验 |
--no-proxy | 忽略系统代理 |
--overwrite | 覆盖已存在的文件 |
--no-resume | 禁用断点续传 |
--hash ALGO:HEX | 下载后校验,如 --hash sha256:<hex> |
--progress bar|plain|none | 进度显示方式,默认 auto(TTY 用 bar,管道用 plain) |
--progress-step / --progress-interval | plain 模式的刷新步长/间隔 |
--from-file FILE | 从文件读取 URL 列表(每行一个,# 注释) |
--no-notify | 关闭系统通知 |
--bell | 完成时输出终端响铃 |
--reveal | 完成后在文件管理器中定位文件 |
--json | 以 JSON 输出结果摘要(stdout 仅 JSON,进度在 stderr) |
--quiet | 不显示进度条 |
--version | 打印版本 |
大小单位支持 K/M/G/T(如 500K、2M、1.5G),解析失败会报参数错误并退出码 2。
输出与进度
- 进度信息走 stderr,结果摘要走 stdout;
--json时 stdout 只有 JSON,方便脚本/智能体解析。 - 进度条(plain 模式,无 TTY 时自动启用)形如:
▸ bigfile.zip [██████████████··] 62.5% 5.0 MB/8.0 MB 3.2 MB/s eta 1s 8线程大小未知时显示已下载字节数而不显示百分比。
- 下载完成打印摘要(成功/失败数、总大小、耗时、各文件绝对路径),并尽力弹出系统通知 + 终端响铃。
- 退出码:
0= 全部成功;1= 有失败;2= 参数/输入错误。
文件名规则
输出文件名优先级:-o 指定 > Content-Disposition 中的文件名 > URL 路径 basename > 兜底命名。文件名会按操作系统规则清洗(去除 <>:"/|?* 等非法字符、限制长度、Windows 保留名加前缀)。同一目录重名自动追加 (1) 等。
注意事项
- 纯标准库,无需
pip install、无需 API 密钥。 - 网络/服务端异常时如实返回错误信息(HTTP 状态码 / 连接错误 / 校验失败),请把错误原样转述给用户。
- 限速为全局聚合限速(多连接共享预算),实测速率与目标接近。
- 断点续传依赖
.9yundl临时文件与.9yundl.meta元数据;下载成功后二者自动清理。中断后保留,重跑同命令即可续传。 - 下载体量较大或耗时较长时,建议放到后台运行,结束后再用
present_files交付。
来源:九运AI工具 https://tool.9yun.co/