SuperAPI AI 工具集

cloud-upload-backup

办公与效率

查看项目

更新于 10-16 08:24

技能介绍

用途

cloud-upload-backup 是一个云文件上传与备份工具,将本地文件上传至腾讯 SMH 云存储,上传后可在 QClaw 小程序中查看。使用 @tencent/smh-js-sdk 官方 SDK。QClaw 在需要将文件上传到云端的任何场景中使用此技能。

主要能力

  • 单文件上传:通过 upload 接口指定本地文件路径上传。
  • 批量上传:通过 batch-upload 接口一次上传多个文件(最多 20 个),服务端按顺序处理(不并行)并返回单条汇总 message。
  • 文件信息查询:通过 info 接口获取云端已有文件的链接、预览和元数据。
  • 云目录列表:通过 list 接口列出云目录中的文件,dirPath 默认为 backup,limit 默认 50。
  • 同名冲突处理:提供 ask(默认,返回错误让用户选择)、rename(自动重命名,如 file(1).pdf)、overwrite(静默覆盖)三种策略。
  • 文件大小支持:没有文件大小限制。小文件(≤ 50 MB)读入内存快速上传;大文件(> 50 MB)使用分盘懒读取,SDK 以 5 MB 分片进行多部分上传,10 GB+ 文件也可顺利上传。
  • 短链生成:上传后脚本自动将 COS 文件地址通过 JPRX 短链服务(data/4096/forward)转换为短链,格式为 https://jsonproxy.3g.qq.com/urlmapper/xxx。手机端点击短链拉起 QClaw 小程序(文件保留 30 天),PC 端点击短链打开 H5 扫码页,用户微信扫码后跳转小程序查看文件。

使用方式

设置:无需额外安装依赖。文件上传通过本地 HTTP 接口 /proxy/qclaw-cos 完成,SMH 凭证由主进程自动管理,无需手动配置。

完整流程:

  1. 识别本地文件路径。
  2. 通过 upload 命令上传(批量时循环调用)。
  3. 原样输出 JSON 响应中的 message 字段。

单文件上传示例: curl -s -X POST http://localhost:PORT/proxy/qclaw-cos/upload -H 'Content-Type: application/json' -d '{"localPath":"/path/to/file.pdf","conflictStrategy":"ask"}'

上传到指定目录: -d '{"localPath":"/path/to/photo.jpg","remotePath":"photos/photo.jpg","conflictStrategy":"ask"}'

用户明确要求覆盖:conflictStrategy: "overwrite";用户明确要求重命名:conflictStrategy: "rename"。

批量上传示例: curl -s -X POST http://localhost:PORT/proxy/qclaw-cos/batch-upload -H 'Content-Type: application/json' -d '{"files":[{"localPath":"/path/to/file1.pdf","conflictStrategy":"ask"},{"localPath":"/path/to/file2.docx","conflictStrategy":"ask"},{"localPath":"/path/to/file3.jpg","conflictStrategy":"ask"}]}'

查询文件信息: curl -s -X POST http://localhost:PORT/proxy/qclaw-cos/info -H 'Content-Type: application/json' -d '{"remotePath":"report.pdf"}'

列出云目录: curl -s -X POST http://localhost:PORT/proxy/qclaw-cos/list -H 'Content-Type: application/json' -d '{"dirPath":"/"}',可加 "limit":20。

PORT 获取:所有 HTTP 请求中的 PORT 从环境变量 AUTH_GATEWAY_PORT 获取,该变量由 Electron 主进程在启动 Auth Gateway 时自动设置,子进程自动继承,未设置时回退到默认端口 19000。

父进程 ID 获取:执行 curl 前,获取当前进程父进程 ID 并打印到控制台,格式为 [QClaw] Parent PID: <ppid>。

命令与结果对应:

  • 上传单个文件 → upload → 原样输出 message 字段。
  • 上传多个文件(2 个及以上)→ batch-upload → 原样输出 message 字段。
  • "这个云文件还在吗"/"查看文件信息" → info → 向用户展示文件元数据。
  • "云上有哪些文件"/"列出备份文件" → list → 向用户展示文件列表。

冲突处理:使用 conflictStrategy: "ask"(默认)时,若同名文件已存在,上传失败并返回错误,QClaw 询问用户如何处理:覆盖、重命名或取消,然后用用户选择的策略重新上传。

适用场景

  • 用户说"上传文件"、"上传某个文件"等需要上传文件的场景。
  • 用户要求上传 2 个及以上文件时使用 batch-upload。
  • 需要查看云端文件信息或列出备份文件时使用 info / list。

限制与注意

  • 用户说"上传文件"但未指定路径时,需追问文件路径或文件名。
  • 默认必须使用 conflictStrategy: "ask",用户未明确表态时不得使用 rename 或 overwrite。
  • 文件默认上传到云空间根目录,可通过 remotePath 指定目标路径。
  • message 字段由服务端预渲染,包含文件名、大小、文件链接和标准提示,必须原样输出,不得自行拼接或改写。
  • 401 / token 过期时提示用户联系管理员刷新;网络错误重试 2 次、间隔 3s,仍失败则输出 message。
  • 不得在 success: false 时展示文件链接,不得硬编码或暴露 SMH 凭证,不得未经用户主动要求上传其本地个人文件。
  • 短链在手机端和小程序端行为不同,文件保留 30 天;链接过期时用 info 获取新链接并重新生成短链。
  • 收费、价格信息暂未提供。