SuperAPI AI 工具集

s3-upload

智能体与模型

查看项目

更新于 10-15 20:04

技能介绍

用途:通过 scripts/s3-cli.js 操作 S3 兼容对象存储(七牛 Kodo、MinIO、AWS S3、阿里云 OSS 等),用于上传文件、浏览对象、按名称查找、下载、删除及获取公网 URL。配置来自环境变量,与仓库内 s3-storage.ts 及 .env-template 一致。

主要能力:config 验证配置(密钥脱敏);upload 上传(--key/--prefix/--content-type/--acl/--no-acl);list 按 --prefix 列出(--max 限条数);find 按 key 子串或 * ? 通配查找;head 检查对象是否存在及元数据;download 下载(--output);delete 删除(需 --yes);url 输出公网 URL。全局支持 --json 与 -h/--help。

使用方式:从仓库根目录执行,依赖根目录 node_modules 中的 @aws-sdk/client-s3。先跑 config 检查配置,未配置时提示用户补全 .env,不要猜测密钥。示例:node --env-file-if-exists=.env .cursor/skills/s3-upload/scripts/s3-cli.js upload ./local.png --prefix assets/demo/。需要解析结果时加 --json。删除必须加 --yes 并先向用户确认。

环境变量:S3_BUCKET_NAME、S3_ACCESS_KEY_ID、S3_SECRET_ACCESS_KEY、S3_ENDPOINT 为必填;S3_REGION、S3_CDN、S3_PROVIDER 可选。CLI 自动读取仓库根目录 .env,不覆盖已有 process.env。禁止把密钥写入 skill、脚本或提交到 git。

错误处理:CLI 失败时 exit code = 1,加 --json 时 stdout 为含 code、error、hint 的结构化 JSON,需解析后再回复用户。常见 code 包括 CONFIG_MISSING、INVALID_CREDENTIALS、ACCESS_DENIED、ACL_NOT_SUPPORTED、BUCKET_NOT_FOUND、OBJECT_NOT_FOUND、LOCAL_FILE_NOT_FOUND、DELETE_REQUIRES_CONFIRM、USAGE_ERROR、NETWORK_ERROR、DEPENDENCY_MISSING、S3_ERROR。ACCESS_DENIED 且 hint 提到 --no-acl 时可自动重试一次;ACL_NOT_SUPPORTED 用 --no-acl 重试。不要忽略 exit code、把 stderr 当成功、未验证就回复公网 URL 或展示完整 Secret Key。

适用场景:上传截图或构建产物并分享链接、查询某前缀下文件、用 CDN URL 反查 key 是否存在、配置报错排查。

限制:应用内功能应继续使用 s3-storage.ts 或现有 OSS 管道,不要混用 CLI;Agent 运维或一次性上传才用本 CLI,不要在对话里重写 SDK 逻辑。阿里云 OSS 下新版桶通常禁用 Object ACL,CLI 默认不上传 ACL,若仍报错显式加 --no-acl;配置 S3_CDN 时公网 URL 为 CDN 域名拼接 objectKey,需确保 CDN 已绑定该桶并开启回源。.env 中勿重复定义 S3_* 变量,后出现的会覆盖先前的。