跳到主要内容
这一页是 Agent 原文

本页由 skills/fnos-cli/reference/download.md 自动同步,写给 Agent 的措辞一字未改。第一次上手建议先读5 分钟上手、命令速查表。

download 模块

模块概述​

下载中心模块,映射到 appcgi.downloadcenter.* 命名空间。支持通过 URL/磁力链接/种子文件创建下载任务,以及任务查询、控制和统计。

下载中心请求使用与其他 CGI 调用相同的 { req, reqid, ...params } 格式,但部分端点通过 data.rsp、data.body 或 data.block.data 返回业务数据。

协议模型​

请求模型​

典型请求格式:

{
"reqid": "250318103000ABCDEF0123456789ABCD",
"req": "appcgi.downloadcenter.task.query",
"init_flag": true,
"state_filter": 65535
}

注意事项:

  • 部分参数在 API 层使用 camelCase(如 initFlag),但 CGI 层使用 snake_case(如 init_flag)
  • 多数端点接受可选 uid 参数
  • task.addUris 的 save_dir 在实际使用中是必需的

响应模型​

响应数据可能嵌套在不同位置:

{
"reqid": "...",
"result": "succ",
"req": "appcgi.downloadcenter.task.query",
"data": {
"block": {
"id": "20260318160514HlEnuPgC19HGBlXP",
"total_size": 41653,
"offset": 0,
"data": "{\"tasks\":[],\"stats\":{}}"
}
}
}

业务数据可能位于 data.rsp、data.body 或 data.block.data(JSON 字符串需解码)。

终态和错误处理​

终态值:succ、fail、cancel

处理规则:

  • 传输完成和业务成功是独立关注点
  • 保留 errno、errmsg 和 extra
  • 部分控制类端点成功时返回简单的 "ok"
  • 部分端点返回 { code: 200, body: {} } 格式
  • 批量创建端点可能返回 errs[](即使请求本身成功)

大块传输​

  • 单包不超过 1 MiB
  • 大载荷使用相同 reqid 分块传输
  • 响应包含 block.id、block.total_size、block.offset、block.data

端点索引​

查询类(已实现)​

  • appcgi.downloadcenter.task.query — 任务列表和统计
  • appcgi.downloadcenter.task.search — 关键字搜索
  • appcgi.downloadcenter.task.getInfo — 任务详情
  • appcgi.downloadcenter.task.getFiles — 任务文件列表

创建类(已实现)​

  • appcgi.downloadcenter.task.addUris — 从 URL/磁力链接创建
  • appcgi.downloadcenter.task.addPaths — 从 NAS 上的种子文件创建

控制类(已实现)​

  • appcgi.downloadcenter.task.pause — 暂停任务
  • appcgi.downloadcenter.task.resume — 恢复任务
  • appcgi.downloadcenter.task.retry — 重试任务
  • appcgi.downloadcenter.task.delete — 删除任务

统计类(已实现)​

  • appcgi.downloadcenter.stat.all — 汇总统计

泛化请求入口​

未封装为固定子命令的 appcgi.downloadcenter.* 端点通过以下入口调用:

fnos-cli download request appcgi.downloadcenter.<name> --json '<object>' --yes
  • --json 必须是 JSON object,不能包含 req 或 reqid,CLI 会自动注入。
  • 默认需要交互确认;自动化或确认过风险后用 --yes。
  • 响应会按下载中心常见位置解包:data.rsp、data.body、data.block.data。

通过 download request 覆盖的端点包括:

  • 创建类:task.addfnShareLink、task.getfnShareLinkStatus
  • 控制类:task.pin、task.setForceStart、task.setFilePriority、task.exportTorrentFile、task.setDownloadLimit、task.setUploadLimit、task.setShareLimit
  • 配置类:config.getDefaultSaveDir、config.setDefaultSaveDir、config.getTransferCfg、config.setTransferCfg、config.getNetworkCfg、config.setNetworkCfg、config.getAltCfg、config.setAltCfg、config.getListColumns、config.setListColumns
  • 统计类:stat.qbittorrent、stat.aria2
  • Tracker 类:task.getTrackers、task.addTrackers、task.removeTrackers、task.editTracker、tracker.query、tracker.insert、tracker.delete
  • Peer 类:task.getPeers、task.addPeers、transfer.banPeers
  • 扫描目录:scanDir.query、scanDir.insert、scanDir.delete
  • 工具类:util.getDirFreeSpace、util.isTcpPortInUse
  • 管理员:admin.getUsers

task.addUploadFile 涉及上传文件内容和大块传输,不是普通 JSON 参数请求;优先使用文件上传相关命令完成本地文件上传后,再按设备行为调用下载中心端点。

端点详情​

appcgi.downloadcenter.task.query​

端点​

appcgi.downloadcenter.task.query

用途​

查询任务列表、聚合统计和下载引擎错误信息。

CLI 映射​

fnos-cli download ls

请求​

字段位置必填类型含义约束 / 说明示例
req请求体是string端点选择器固定值appcgi.downloadcenter.task.query
reqid请求体是string请求关联 ID逐请求生成69ba...
engine_types请求体否array引擎类型过滤可选[1,2]
ids请求体否array指定任务 ID可选[42,43]
state_filter请求体否number状态过滤掩码CLI 默认 65535(所有状态)65535
type_filter请求体否number类型过滤可选1
init_flag请求体否boolean初始化标志CLI 默认 truetrue
uid请求体否number用户 ID可选1000

响应​

主要响应字段(位于 data.block.data 解码后):

字段总是存在类型含义条件 / 说明示例
tasks否array任务列表包含任务摘要信息[...]
stats否object聚合统计速度和大小统计{...}
errors否array引擎错误下载引擎报告的错误[...]

常见任务字段:id、type、name、state、total_size、size、dl_speed、up_speed、save_dir、uri、addition_time、error_code、error_message

appcgi.downloadcenter.task.search​

端点​

appcgi.downloadcenter.task.search

用途​

按任务名或文件名搜索下载任务。

CLI 映射​

fnos-cli download ls <keyword>

请求​

字段位置必填类型含义约束 / 说明示例
req请求体是string端点选择器固定值appcgi.downloadcenter.task.search
reqid请求体是string请求关联 ID逐请求生成69ba...
keyword请求体是string搜索关键字按任务名或文件名匹配ubuntu
uid请求体否number用户 ID可选1000

appcgi.downloadcenter.task.getInfo​

端点​

appcgi.downloadcenter.task.getInfo

用途​

获取单个下载任务的详细信息。

CLI 映射​

fnos-cli download info <id>

请求​

字段位置必填类型含义约束 / 说明示例
req请求体是string端点选择器固定值appcgi.downloadcenter.task.getInfo
reqid请求体是string请求关联 ID逐请求生成69ba...
id请求体是number任务 ID正整数42
uid请求体否number用户 ID可选1000

响应​

主要响应字段(位于 body 中):

字段总是存在类型含义条件 / 说明示例
name否string任务名称ubuntu-22.04.iso
total_size否number总大小(bytes)4194304
save_path否string保存路径/vol1/downloads
dl_speed否number下载速度1048576
up_speed否number上传速度0
eta否number预计剩余时间120
seeds否number种子数5
peers否number对等节点数12
share_ratio否number分享比0.5
addition_date否number添加时间1710000000
completion_date否number完成时间1710100000

appcgi.downloadcenter.task.getFiles​

端点​

appcgi.downloadcenter.task.getFiles

用途​

获取下载任务的文件列表,对 BT 类任务尤其有用。

CLI 映射​

fnos-cli download files <id>

请求​

字段位置必填类型含义约束 / 说明示例
req请求体是string端点选择器固定值appcgi.downloadcenter.task.getFiles
reqid请求体是string请求关联 ID逐请求生成69ba...
id请求体是number任务 ID正整数42
mode请求体否number获取模式1 表示立即获取1
uid请求体否number用户 ID可选1000

响应​

主要响应字段(位于 body[] 中):

字段总是存在类型含义条件 / 说明示例
index否number文件序号0
name否string文件名readme.txt
size否number文件大小1024
progress否number下载进度0.75
priority否number优先级0 不下载,1 正常,7 最高1

appcgi.downloadcenter.task.addUris​

端点​

appcgi.downloadcenter.task.addUris

用途​

从 URL 或磁力链接创建下载任务。

CLI 映射​

fnos-cli download add-uri <uri> <saveDir> --yes

请求​

字段位置必填类型含义约束 / 说明示例
req请求体是string端点选择器固定值appcgi.downloadcenter.task.addUris
reqid请求体是string请求关联 ID逐请求生成69ba...
uris请求体是string[]URI 列表支持 http/https/ftp/sftp/magnet["magnet:?xt=..."]
save_dir请求体是string保存目录必须为 /vol{v}/... 格式/vol1/downloads
select_files请求体否array选择文件BT 类输入时有意义[0,1,2]
uris_type请求体否numberURI 类型0 默认,1 qBittorrent0

响应​

字段总是存在类型含义条件 / 说明示例
ids否number[]创建的任务 ID[42]
errs否array逐项错误请求成功但部分项失败时出现[{"uri":"...","err":"..."}]

appcgi.downloadcenter.task.addPaths​

端点​

appcgi.downloadcenter.task.addPaths

用途​

从 NAS 上已有的种子文件创建下载任务。

CLI 映射​

fnos-cli download add-path <path> <saveDir> --yes

请求​

字段位置必填类型含义约束 / 说明示例
req请求体是string端点选择器固定值appcgi.downloadcenter.task.addPaths
reqid请求体是string请求关联 ID逐请求生成69ba...
paths请求体是string[]种子文件路径列表必须为 /vol{v}/... 格式["/vol1/torrents/demo.torrent"]
save_dir请求体是string保存目录必须为 /vol{v}/... 格式/vol1/downloads
select_files请求体否array选择文件可选[0,1]

响应​

字段总是存在类型含义条件 / 说明示例
ids否number[]创建的任务 ID[43]
errs否array逐项错误请求成功但部分项失败时出现[...]

控制类端点​

appcgi.downloadcenter.task.pause / resume / retry / delete​

这四个端点共享相同的请求结构。

CLI 映射​

fnos-cli download pause <id...> --yes
fnos-cli download resume <id...> --yes
fnos-cli download retry <id...> --yes
fnos-cli download rm <id...> --yes

请求​

字段位置必填类型含义约束 / 说明示例
req请求体是string端点选择器对应具体操作appcgi.downloadcenter.task.pause
reqid请求体是string请求关联 ID逐请求生成69ba...
ids请求体是number[]任务 ID 列表支持批量操作[42, 43]
uid请求体否number用户 ID可选1000
delete_files请求体否boolean是否同时删除文件仅 delete 端点可用;CLI 默认不删除文件false

响应​

成功时通常返回 "ok"。

appcgi.downloadcenter.stat.all​

端点​

appcgi.downloadcenter.stat.all

用途​

获取下载中心的汇总统计信息。

CLI 映射​

fnos-cli download stat

请求​

字段位置必填类型含义约束 / 说明示例
req请求体是string端点选择器固定值appcgi.downloadcenter.stat.all
reqid请求体是string请求关联 ID逐请求生成69ba...
uid请求体否number用户 ID可选1000

响应​

字段总是存在类型含义条件 / 说明示例
dl_speed否number总下载速度1048576
dl_total_size否number总下载量10737418240
up_speed否number总上传速度524288
up_total_size否number总上传量5368709120

注意事项​

  • 文件上传(task.addUploadFile)需要上传内容和大块传输支持,不应当作普通 download request --json 调用。
  • task.addfnShareLink 是下载中心的导入任务端点,不要与 appcgi.sharesvr.share.link.* 的共享链接管理端点混淆。
  • 部分响应数据的具体字段结构可能因后端版本而异。

自动同步自 skills/fnos-cli/reference/download.md(fnos-cli 0.5.1)。请勿直接编辑本页,修改请提交到上游仓库 fnnas-labs/fnos-cli-skill。