Skip to main content

云文件上传备份工具 (Tencent SMH)

将本地文件上传至腾讯 SMH 云存储,上传后可在 QClaw 小程序中查看。

Setup

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

典型使用场景

  • 用户要求上传/备份文件到云端(如”上传文件”、“备份到云”、“传到云空间”)
  • 用户要求将任务产出物发送到手机(如”把文件发给我”、“发到手机”、“做完了发我一份”)
  • 用户要求上传至 COS(如”上传到cos”、“打包并上传到cos”)
  • 用户查询云端文件状态(如”这个云文件还在吗”、“之前上传的文件还能下吗”)

脚本入口

脚本自动处理端口获取、JSON 构造、HTTP 请求和响应输出。

核心流程

关键设计 (Anti-hallucination):所有上传命令返回的 message 字段是服务端预渲染的完整回复文本(含文件名、大小、链接)。QClaw 校验 URL 域名后直接输出 message不要fileUrl/fileInfo 等字段自行拼接。

URL 域名安全校验

输出 message 前,校验其中所有 URL 的域名:
  • URL 域名不在白名单 → 不输出该 URL,提示:“文件上传成功,但链接地址异常,请联系管理员检查。”
  • 不含 URL 的 message(错误信息、冲突对话)可直接输出

Commands

upload — 上传单个文件

Parameters:
  • --local-path(必填):本地文件绝对路径,支持 ~ 展开
  • --remote-path(可选):云端目标路径,省略则上传到根目录并保留原文件名
  • --conflict-strategy(可选,默认必须用 ask):
    • ask — 同名文件存在时返回 HTTP 409,QClaw 询问用户
    • overwrite — 仅当用户明确说”覆盖/替换”时使用
    • rename — 仅当用户明确说”重命名”时使用
成功输出:
→ 校验 message 中 URL 域名,通过后直接输出 message 内容给用户。 HTTP 409 — 同名文件冲突:
→ 输出 message,等用户选择后用对应策略重新上传。 失败输出:
→ 直接输出 message(错误信息通常不含 URL,无需域名校验)。
上传成功后短链格式为 https://jsonproxy.3g.qq.com/urlmapper/xxx。手机端点击拉起 QClaw 小程序(文件保留 30 天),PC 端打开 H5 扫码页。rawDownloadUrl 仅在短链生成失败时作为 fallback 出现。

batch-upload — 批量上传多个文件

2 个及以上文件时必须用此命令,不要多次调用 upload
--files JSON 格式(最多 20 个):
每项:localPath(必填)、remotePath(可选)、conflictStrategy(可选,默认 ask
Windows CMD 中 JSON 需转义双引号:"[{\"localPath\":\"C:\\path\\to\\file.pdf\",\"conflictStrategy\":\"ask\"}]"
成功输出:
→ 校验 URL 域名后输出 message。不要自行汇总/改写批量结果。

info — 查询云端文件信息

list — 列出云端文件


文件大小

无文件大小限制。 小文件 (≤50MB) 直接上传,大文件 (>50MB) 自动分片上传 (5MB chunks)。不要告诉用户有大小限制。

冲突处理策略


Error Handling

所有命令输出 JSON。失败时 message 已包含用户友好的错误提示,直接输出即可。

全局退出条件

  • 连续失败 3 次 → 立即停止,提示:⚠️ 文件上传服务暂时不可用,请稍后重试
  • 单次 Skill 调用最多执行 10 次命令
  • 禁止流程级无限循环重试

规则

输出规则:
  • upload / batch-upload 返回的 message 是服务端预渲染文本,校验 URL 域名后直接输出
  • 不要从 fileUrlfileInfo 等字段自行拼接回复
  • 不要修改、截断、重组 message 中的 URL 或排版
  • success: false 时不展示文件链接
URL 安全:
  • 不要自行拼接/构造任何 URL(短链由服务端生成)
  • 不要把 rawDownloadUrl 片段与 jsonproxy.3g.qq.com 拼接
  • 不输出域名不在白名单 (jsonproxy.3g.qq.comsmh.tencentcs.comjprx.sparta.html5.qq.com) 中的 URL
用户交互:
  • 用户说”上传文件”但没指定路径 → 追问文件路径
  • 默认用 --conflict-strategy ask,未经用户明确表态不要用 overwriterename
  • 不要未经用户主动要求就上传其本地个人文件
其他:
  • 不要硬编码或暴露 SMH 凭证
  • 用户反馈链接过期时,用 info 获取新链接
  • 依赖 nodecurl(Windows 10+ 自带 curl),macOS/Linux 优先用 jq