360 Secure SkillHub
360 安全技能中心

Background Download

该 Skill 以后台进程方式异步下载文件,支持断点续传与可配置重试;任务状态写入 Ontology 知识图谱,提供启动、查询、列举、归档与僵尸任务清理命令,下载完成或失败后向原请求渠道发送通知。依赖 curl 或 wget,并要求预先安装并初始化 ontology 技能。

hansponddg
hansponddg
热度 35.88
最近更新 2026-05-18 11:35:36
分类:自动化依赖:代码执行 / 读写文件 / 第三方 API应用场景:自动化脚本 / 工作流

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add background-download
Metadata
name
background-download
description
Asynchronous background download with retry, status tracking via Ontology, notifications to original channel. Supports resume on broken connections.
author
hp
author_email
hansponddg@139.com
license
MIT
ontology
{"reads":["DownloadTask"],"writes":["DownloadTask"],"preconditions":["DownloadTask.url must exist","DownloadTask.path must exist"],"postconditions":["Created DownloadTask has status=pending"]}

Background Download Skill

中文:后台异步下载技能

  • 非阻塞下载,不占用主会话
  • 支持断点续传,自动重试
  • 通过 Ontology 跟踪状态
  • 结果通知到原请求渠道

Asynchronous background file download with:

  • Non-blocking: returns immediately to user, downloads in background
  • Resumeable: uses curl/wget built-in continue (-c)
  • Retry: configurable max retries (default 3)
  • Status tracking: all tasks stored in Ontology knowledge graph
  • Notification: sends completion/failure notification to original channel
  • Housekeeping: heartbeat cleans up zombie tasks, archives old completed tasks

Commands

start - Start a new background download

python3 scripts/download.py start --title "Title" --url "https://example.com/file.zip" --path "/path/to/save/file.zip" --channel "feishu:direct:user_id" [--max-retries 3]

status - Check download status by task id

python3 scripts/download.py status --id down_xxxxxxx

list - List all download tasks filtered by status

python3 scripts/download.py list [--status pending|downloading|completed|failed|archived]

archive - Archive old completed tasks

python3 scripts/download.py archive --days 7

cleanup-zombies - Mark stale downloading tasks as failed

python3 scripts/download.py cleanup-zombies --hours 2

Architecture

User requests download
  ↓
Create DownloadTask in Ontology (status=pending)
  ↓
Fork background download process, exit immediately (non-blocking)
  ↓
Background:
  Update status → downloading
  Loop:
    Download with curl -C - (resume)
    If success:
      Update status → completed
      Send notification to original channel
      Done
    If fail:
      retry_count += 1
      If retry_count < max_retries: wait 30s → retry
      Else:
        Update status → failed
        Send failure notification to original channel
        Done

Heartbeat daily:
  cleanup-zombies --hours 2
  archive --days 7

Ontology Schema

See references/schema.json for DownloadTask definition.

Required properties:

  • title: Human-readable download name
  • url: Download URL
  • path: Local path to save file
  • status: pending|downloading|completed|failed|archived
  • retry_count: Current number of retries
  • max_retries: Maximum retries (usually 3)
  • created_by_channel: Original channel identifier (channel_type:channel_id:user_id) for notification

Usage Example

# From another skill
from scripts.download import start_download
start_download(
    title="Obsidian Windows",
    url="https://github.com/obsidianmd/obsidian-releases/releases/download/v1.12.4/Obsidian-1.12.4.exe",
    path="/home/user/files/Obsidian.exe",
    channel="feishu:direct:ou_xxxxxxx",
    max_retries=3
)

Notification

Completion/failure notifications are sent via openclaw message send to the original channel recorded in created_by_channel.

Requirements

  • ontology skill must be installed and initialized
  • curl or wget available on system