🎁 Get the FREE AI Skills Starter GuideSubscribe →
BytesAgainBytesAgain
🦀 ClawHub

Tencent Cloud COS

腾讯云对象存储(COS)和数据万象(CI)集成技能。覆盖文件存储管理、AI处理和知识库三大核心场景。 存储场景:上传文件到云端、下载云端文件、批量管理存储桶文件、获取文件签名链接分享、查看文件元信息。 图片处理场景:图片质量评估打分、AI超分辨率放大、AI智能裁剪、二维码/条形码识别、添加文字水印、获取图片EXI...

Downloads7,003
Installs126
Stars4
TERMINAL
clawhub install tencentcloud-cos-skill

📖 About This Skill


name: tencent-cloud-cos description: > 腾讯云对象存储(COS)和数据万象(CI)集成技能。覆盖文件存储管理、AI处理和知识库三大核心场景。 存储场景:上传文件到云端、下载云端文件、批量管理存储桶文件、获取文件签名链接分享、查看文件元信息。 图片处理场景:图片质量评估打分、AI超分辨率放大、AI智能裁剪、二维码/条形码识别、添加文字水印、获取图片EXIF信息、 缩放、裁剪、旋转、格式转换。 文档处理场景:Word/Excel/PPT等办公文档转PDF、文档预览。 媒体处理场景:视频智能封面提取、视频转码、视频截帧、获取媒体信息。 内容审核场景:图片/视频/音频/文本/文档内容审核,检测违规内容。 智能语音场景:语音识别(音频转文字)、语音合成(文字转语音)、音频降噪、人声分离。 文件处理场景:文件哈希计算、文件压缩打包、文件解压。 内容识别场景:图片标签识别、OCR文字识别。 知识库场景:一键创建知识库、上传文档到知识库、从知识库检索内容片段。 智能检索场景:MetaInsight以图搜图、以文搜图、人脸搜索、元数据检索、多模态文档检索。 当用户提到以下关键词或口语化表述时应触发此技能: 上传到COS、腾讯云存储、对象存储、云存储、存储桶、Bucket、 图片处理、图片压缩、图片放大、超分辨率、抠图、裁剪、二维码识别、水印、 文档转换、转PDF、视频封面、智能封面、以图搜图、图片搜索、MetaInsight、 COS上传、COS下载、签名URL、腾讯云文件、数据万象、CI处理、 内容审核、图片审核、视频审核、文本审核、语音识别、语音合成、降噪、人声分离、 OCR、文字识别、图片标签、 创建知识库、建一个知识库、上传到知识库、往知识库里加文件、查询知识库、 从知识库找、搜索知识库、知识库检索、文档检索、文档搜索。 即使用户没有明确提到COS或腾讯云,只要涉及"把文件传到云上"、"生成下载链接"、 "处理云端图片"、"帮我建个知识库"、"把文档放进知识库"、"从知识库里搜一下"、 "加密COS凭证"、"COS密钥不安全"、"加密一下COS密钥"、"保护COS密钥"等意图,也应该触发此技能。 description_zh: "腾讯云 COS 对象存储、数据万象数据智能处理、MetaInsight多模态检索、知识库搭建" description_en: "Tencent Cloud COS Object Storage, CI Data Intelligence Processing, MetaInsight Multi-modal Retrieval, Knowledge Base Setup" metadata: { "openclaw": { "emoji": "☁️", "requires": { "secrets": [ "SecretId", "SecretKey" ], "optionalSecrets": [ "Token" ], "config": [ "Region", "Bucket" ], "optionalConfig": [ "DatasetName", "Domain", "ServiceDomain", "Protocol" ], "envMapping": { "SecretId": "TENCENT_COS_SECRET_ID", "SecretKey": "TENCENT_COS_SECRET_KEY", "Token": "TENCENT_COS_TOKEN", "Region": "TENCENT_COS_REGION", "Bucket": "TENCENT_COS_BUCKET", "DatasetName": "TENCENT_COS_DATASET_NAME", "Domain": "TENCENT_COS_DOMAIN", "ServiceDomain": "TENCENT_COS_SERVICE_DOMAIN", "Protocol": "TENCENT_COS_PROTOCOL" }, "secretsDescription": { "SecretId": { "label": "腾讯云 API 密钥 ID", "type": "cloud-credential", "provider": "Tencent Cloud", "sensitivity": "critical", "scope": "COS object storage and CI data processing APIs" }, "SecretKey": { "label": "腾讯云 API 密钥 Key", "type": "cloud-credential", "provider": "Tencent Cloud", "sensitivity": "critical", "scope": "COS object storage and CI data processing APIs" }, "Token": { "label": "STS 临时安全令牌", "type": "session-token", "provider": "Tencent Cloud STS", "sensitivity": "high", "scope": "Time-limited access (default 1800s), auto-expires" } } }, "security": { "credentialStorage": { "default": "ephemeral", "ephemeral": { "description": "Credentials exist only in shell session environment variables; nothing written to disk", "persistsToDisk": false, "recommendation": "RECOMMENDED — use with STS temporary credentials" } }, "requirements": [ "MUST use sub-account keys with least-privilege COS-only policy; root account keys are FORBIDDEN", "STS temporary credentials are recommended; default behavior is ephemeral (no disk persistence)", "Credentials are NEVER echoed back to the user in chat" ] }, "install": [ { "id": "node-cos-sdk", "kind": "node", "package": "cos-nodejs-sdk-v5", "label": "Install COS Node.js SDK" } ] } }

腾讯云 COS 技能

一站式管理腾讯云对象存储(COS)和数据万象(CI),通过统一的 Node.js SDK 脚本提供以下能力:

  • 文件存储:上传、下载、列出、删除文件,获取签名下载链接,批量操作,复制
  • 存储桶管理:列出/创建存储桶,ACL、跨域、标签、版本控制、生命周期管理
  • 图片处理:缩放、裁剪、旋转、格式转换、文字水印、质量评估、超分辨率、智能裁剪、二维码识别
  • 内容识别:图片标签识别、OCR 文字识别
  • 文档处理:办公文档转 PDF、文档预览(图片/HTML)
  • 媒体处理:视频智能封面、转码、截帧、媒体信息
  • 内容审核:图片/视频/音频/文本/文档违规检测
  • 智能语音:语音识别、语音合成、音频降噪、人声分离
  • 文件处理:哈希计算、压缩、解压
  • 智能检索 MetaInsight:数据集管理、索引管理、以图搜图、文本搜图、人脸搜索、元数据检索、多模态文档检索
  • 🚀 知识库:一键创建知识库(自动创建桶+数据集+绑定),上传文档到知识库,语义检索知识库内容
  • 所有操作通过 scripts/cos_node.mjs 单一脚本完成,输出 JSON 格式。

    首次使用 — 自动设置

    当用户首次要求操作 COS 时,按以下流程操作:

    步骤 1:检查当前状态

    {baseDir}/scripts/setup.sh --check-only
    

    如果 Node.js 和 cos-nodejs-sdk-v5 已安装、环境变量已配置,跳到「操作指南」。

    步骤 2:如果未配置,引导用户提供凭证

    告诉用户: > 我需要你的腾讯云凭证来连接 COS 存储服务。请放心,你的密钥会受到以下保护: > > #### 🛡️ 凭证安全保障 > - 默认不落盘:凭证仅存于当前终端会话内存中,关闭终端即消失 > - 可选持久化:如需保存,凭证写入项目本地 .env 文件(仅当前用户可读,权限 600) > - 支持 AES-256 加密:持久化后可一键加密为 .env.enc,明文自动删除,密钥绑定本机+本用户,拷贝到其他环境无法解密 > - 自动防误提交.env / .env.enc 自动添加到 .gitignore,不会进入版本控制 > - 永远不会在对话中回显你的密钥 > > #### 🔒 推荐方案:STS 临时凭证(最安全,自带有效期) > 1. SecretId — TmpSecretId > 2. SecretKey — TmpSecretKey > 3. Token — SecurityToken > 4. Region — 存储桶区域(如 ap-guangzhou) > 5. Bucket — 存储桶名称(格式 name-appid) > > #### ⚠️ 降级方案:永久密钥(必须使用子账号最小权限密钥) > 1. SecretId / SecretKey / Region / Bucket > > #### 可选配置 > - DatasetName — 数据万象数据集名称(仅 MetaInsight 检索需要) > - Domain / ServiceDomain / Protocol — 自定义域名配置

    步骤 3:设置环境变量并运行安装

    export TENCENT_COS_SECRET_ID=""
    export TENCENT_COS_SECRET_KEY=""
    export TENCENT_COS_TOKEN=""  # STS 临时凭证才需要
    export TENCENT_COS_REGION=""
    export TENCENT_COS_BUCKET=""

    默认模式:凭证仅存于当前 session,关闭终端后需重新 export

    {baseDir}/scripts/setup.sh --from-env

    持久化模式:凭证写入项目本地 .env 文件,下次自动读取

    {baseDir}/scripts/setup.sh --from-env --persist

    脚本会自动安装 cos-nodejs-sdk-v5 到项目本地 node_modules/ 并验证连接。

    持久化说明--persist 会将凭证写入项目目录下的 .env 文件(权限 600),并自动添加到 .gitignorecos_node.mjs 启动时会自动读取 .env(环境变量优先于 .env 文件)。清理凭证:rm -f .env


    操作指南

    所有操作通过单一脚本 scripts/cos_node.mjs 完成,输出 JSON 格式。

    node {baseDir}/scripts/cos_node.mjs  [--option value ...]
    

    全局可选参数(所有 action 均支持,用于覆盖环境变量中的默认值):

  • --bucket — 指定操作的存储桶(覆盖 TENCENT_COS_BUCKET
  • --region — 指定地域(覆盖 TENCENT_COS_REGION
  • --dataset-name — 指定数据集名称(覆盖 TENCENT_COS_DATASET_NAME
  • > 初始配置的 Region、Bucket、DatasetName 只是默认值,每次调用都可以通过参数自由指定。

    COS 存储操作

    # 上传文件
    upload --file /path/to/file.jpg --key remote/path/file.jpg

    上传字符串

    put-string --content "文本内容" --key remote/file.txt --content-type "text/plain"

    下载文件

    download --key remote/path/file.jpg --output /path/to/save/file.jpg

    列出文件

    list --prefix "images/" --max-keys 100

    获取签名 URL

    sign-url --key remote/path/file.jpg --expires 3600

    查看文件信息

    head --key remote/path/file.jpg

    删除文件

    delete --key remote/path/file.jpg

    批量删除

    delete-multiple --keys '["file1.txt","file2.txt"]'

    复制对象

    copy-object --source bucket.cos.region.myqcloud.com/source.jpg --key dest.jpg

    COS 存储桶管理

    > ⚠️ 安全限制:本技能禁止删除存储桶和清空存储桶操作。

    # 列出所有存储桶
    list-buckets

    创建存储桶

    create-bucket --bucket mybucket-1250000000 --region ap-guangzhou

    检查存储桶是否存在

    head-bucket --bucket mybucket-1250000000

    获取/设置存储桶 ACL

    get-bucket-acl put-bucket-acl --acl private

    获取/设置跨域配置

    get-bucket-cors put-bucket-cors --origin "*" --methods "GET,POST,PUT"

    获取/设置标签

    get-bucket-tagging put-bucket-tagging --tags '[{"Key":"env","Value":"prod"}]'

    查询版本控制/生命周期/地域

    get-bucket-versioning get-bucket-lifecycle get-bucket-location

    CI 图片基础处理

    # 获取图片元信息
    image-info --key images/photo.jpg

    图片缩放

    image-thumbnail --key images/photo.jpg --width 200 --height 200

    图片裁剪

    image-crop --key images/photo.jpg --width 300 --height 300 --gravity center

    图片旋转

    image-rotate --key images/photo.jpg --degree 90

    格式转换(webp/png/jpg/avif/heif/tpg)

    image-format --key images/photo.jpg --format webp

    添加文字水印(支持中文)

    watermark-font --key images/photo.jpg --text "版权所有"

    CI AI 图片处理

    # 图片质量评估
    assess-quality --key images/photo.jpg

    AI 超分辨率

    ai-super-resolution --key images/photo.jpg

    AI 智能裁剪

    ai-pic-matting --key images/photo.jpg --width 200 --height 200

    二维码识别

    ai-qrcode --key images/qrcode.jpg

    CI 内容识别

    # 图片标签识别
    recognize-image --key images/photo.jpg

    OCR 文字识别

    ocr-general --key images/document.jpg

    CI 文档处理

    # 文档转 PDF(自动轮询等待结果)
    create-doc-to-pdf-job --key docs/report.docx

    查询文档处理任务

    describe-doc-job --job-id

    文档预览(转图片)

    doc-preview --key docs/report.docx --page 1 --format jpg

    获取文档在线预览 HTML 链接

    doc-preview-html-url --key docs/report.docx

    CI 媒体处理

    # 视频智能封面(自动轮询等待结果)
    create-media-smart-cover-job --key videos/demo.mp4

    查询媒体处理任务

    describe-media-job --job-id

    视频转码

    media-transcode-job --key videos/demo.mp4 --format mp4

    视频截帧

    media-snapshot --key videos/demo.mp4 --time 5 --format jpg

    获取媒体文件信息

    media-info --key videos/demo.mp4

    CI 内容审核

    # 图片同步审核
    audit-image --key images/photo.jpg

    图片异步审核任务

    audit-image-job --key images/photo.jpg

    视频审核任务

    audit-video-job --key videos/demo.mp4

    音频审核任务

    audit-audio-job --key audio/song.mp3

    文本审核任务

    audit-text-job --content "待审核的文本内容"

    文档审核任务

    audit-document-job --key docs/report.docx

    查询审核任务结果(--type 可选 image/video/audio/text/document)

    describe-audit-job --job-id --type image

    CI 智能语音

    # 语音识别
    speech-recognition-job --key audio/meeting.mp3 --engine 16k_zh_video

    语音合成(文字转语音)

    tts-job --text "你好,欢迎使用腾讯云"

    音频降噪

    noise-reduction-job --key audio/noisy.mp3

    人声分离

    voice-separate-job --key audio/song.mp3

    CI 文件处理

    # 文件哈希计算(md5/sha1/sha256)
    file-hash --key docs/report.docx --type md5

    文件压缩

    file-compress-job --prefix "images/" --format zip

    文件解压

    file-uncompress-job --key archive.zip --prefix "output/"

    查询文件处理任务

    describe-file-job --job-id

    CI MetaInsight

    #### 数据集管理

    # 列出所有数据集
    list-datasets

    创建数据集(模板:Official:COSBasicMeta / Official:ImageSearch / Official:FaceSearch)

    create-dataset --name my-dataset --template "Official:ImageSearch" --description "图片搜索"

    查询数据集详情

    describe-dataset --name my-dataset

    绑定存储桶到数据集(默认 Mode=1 存量索引,自动索引桶内已有文件)

    create-dataset-binding --name my-dataset create-dataset-binding --name my-dataset --uri "cos://other-bucket-1250000000"

    仅增量索引(Mode=0,只索引绑定后新上传的文件)

    create-dataset-binding --name my-dataset --mode 0

    查询数据集的绑定关系

    describe-dataset-bindings --name my-dataset

    #### 索引管理

    # 创建文件元数据索引
    create-file-meta-index --name my-dataset --uri "cos://bucket/images/photo.jpg" --media-type image

    查询文件元数据索引

    describe-file-meta-index --name my-dataset --uri "cos://bucket/images/photo.jpg"

    删除文件元数据索引

    delete-file-meta-index --name my-dataset --uri "cos://bucket/images/photo.jpg"

    #### 检索(需预建数据集)

    三种检索需要不同模板的数据集,通过环境变量或 --dataset 参数分别指定:

    | 检索类型 | 所需数据集模板 | 环境变量 | |---------|---------------|----------| | 图片检索(以图搜图/文本搜图) | Official:ImageSearch | TENCENT_COS_DATASET_IMAGE_SEARCH | | 人脸搜索 | Official:FaceSearch | TENCENT_COS_DATASET_FACE_SEARCH | | 元数据检索 | Official:COSBasicMeta | TENCENT_COS_DATASET_META |

    > TENCENT_COS_DATASET_NAME 作为图片检索的兜底值。所有 action 都支持 --dataset 参数覆盖。

    # 以图搜图(ImageSearch 数据集)
    image-search-pic --uri "https://example.com/query.jpg"

    文本搜图(ImageSearch 数据集)

    image-search-text --text "蓝天白云"

    人脸搜索(FaceSearch 数据集)

    face-search --uri "cos://bucket/photo.jpg" --max-face-num 1 --limit 10 --threshold 80

    元数据检索 — 简单查询(任意数据集)

    dataset-simple-query --dataset my-dataset --sort CustomId --order desc --max-results 50 dataset-simple-query --dataset my-dataset --query '{"Operation":"eq","Field":"ContentType","Value":"image/jpeg"}'

    多模态检索 — 文档检索(DocSearch 数据集)

    hybrid-search --text "包含一颗大树的文档" --dataset docsearch --templates DocSearch --limit 10 hybrid-search --text "关键词" --dataset docsearch --filter '{"$and":[{"MediaType":{"$in":["image","document"]}},{"Size":{"$gt":123}}]}'

    🚀 知识库(快捷功能)

    > 重要:这是一组面向用户口语化描述的快捷流程。用户不需要知道底层命令,只需用自然语言描述意图。

    #### 用户意图识别

    | 用户可能的说法 | 对应操作 | |---------------|----------| | "帮我创建一个知识库" "建一个知识库" "我想做个文档库" | → 执行 create-knowledge-base | | "上传到知识库" "把文件放进知识库" "往知识库里加文档" | → 执行 upload(指向知识库对应的桶) | | "查询知识库" "从知识库找" "搜索知识库" "知识库里有没有关于XX的内容" | → 执行 hybrid-search(指向知识库对应的数据集) |

    #### 流程 1:创建知识库

    当用户说"创建知识库"/"建一个知识库"/"我想做个文档库"时:

    1. 如果用户没指定名称 → 询问用户想给知识库起什么名字 2. 执行创建:

    create-knowledge-base --name <用户指定的名称>
    

    3. 自动完成三步:创建存储桶 → 创建 DocSearch 数据集 → 绑定 4. 记住本次创建的知识库信息(桶名、地域、数据集名),后续上传/查询时直接使用 5. 告诉用户:

    > ✅ 知识库「<名称>」已创建! > - 你可以把文档(PDF、Word、Excel、PPT、TXT 等)上传到这个知识库 > - 上传后系统会自动建立索引(需要几秒到几分钟) > - 之后你可以直接说"从知识库里搜一下XXX"来查询内容

    #### 流程 2:上传到知识库

    当用户说"上传到知识库"/"把文件放进知识库"/"往知识库里加文档"时:

    判断使用哪个知识库:

    1. 如果本次对话中已创建/使用过知识库 → 直接使用该知识库的桶和地域 2. 如果不确定 → 执行 list-datasets 列出所有数据集,筛选 TemplateId 为 Official:DocSearch 的数据集: - 只有 1 个 DocSearch 数据集 → 直接使用它,通过数据集绑定关系推断对应的桶 - 有多个 DocSearch 数据集 → 列出让用户选择 - 没有 DocSearch 数据集 → 告诉用户"你还没有知识库,要帮你创建一个吗?" 3. 确定知识库后,执行上传:

    upload --file <用户的文件路径> --key <文件名> --bucket <知识库桶名> --region <知识库地域>
    

    4. 告诉用户:

    > ✅ 文件已上传到知识库「<名称>」,索引建立中,稍后即可检索。

    #### 流程 3:查询知识库

    当用户说"查询知识库"/"从知识库找XX"/"搜索知识库"/"知识库里有没有关于XX的"/"从知识库里搜一下"时:

    判断使用哪个知识库:

    1. 如果本次对话中已创建/使用过知识库 → 直接使用该知识库的数据集 2. 如果不确定 → 执行 list-datasets 列出所有数据集,筛选 TemplateId 为 Official:DocSearch 的数据集: - 只有 1 个 DocSearch 数据集 → 直接使用它 - 有多个 DocSearch 数据集 → 列出让用户选择(展示名称和文件数) - 没有 DocSearch 数据集 → 告诉用户"你还没有知识库,要帮你创建一个吗?" 3. 确定知识库后,执行检索:

    hybrid-search --text "<用户的查询内容>" --dataset <知识库数据集名> --templates DocSearch
    

    4. 结果呈现(不要直接输出 JSON,用友好格式): - 按相关度排序展示检索结果 - 每条结果展示:相关度分数 + 来源文件名 + 匹配内容摘要 - 如果没有匹配结果 → 告诉用户"知识库中没有找到相关内容,你可以上传更多文档试试"

    CI 通用请求(扩展入口)

    用于调用尚未封装为独立 action 的 CI 能力:

    ci-request --method POST --path "image/auditing" --body '...'
    ci-request --method GET --path "jobs/"
    


    功能对照表

    | 分类 | action | 说明 | |------|--------|------| | 存储 | upload | 上传文件 | | | put-string | 上传字符串 | | | download | 下载文件 | | | list | 列出文件 | | | sign-url | 获取签名链接 | | | delete | 删除文件 | | | delete-multiple | 批量删除 | | | head | 文件元信息 | | | copy-object | 复制对象 | | 存储桶管理 | list-buckets | 列出所有存储桶 | | | create-bucket | 创建存储桶 | | | head-bucket | 检查存储桶是否存在 | | | get-bucket-acl / put-bucket-acl | ACL 权限管理 | | | get-bucket-cors / put-bucket-cors | 跨域配置 | | | get-bucket-tagging / put-bucket-tagging | 标签管理 | | | get-bucket-versioning | 查询版本控制 | | | get-bucket-lifecycle | 查询生命周期 | | | get-bucket-location | 查询存储桶地域 | | 图片基础 | image-info | 图片元信息 | | | image-thumbnail | 缩放 | | | image-crop | 裁剪 | | | image-rotate | 旋转 | | | image-format | 格式转换 | | | watermark-font | 文字水印 | | AI图片 | assess-quality | 质量评估 | | | ai-super-resolution | 超分辨率 | | | ai-pic-matting | 智能裁剪 | | | ai-qrcode | 二维码识别 | | 内容识别 | recognize-image | 图片标签识别 | | | ocr-general | OCR 文字识别 | | 文档处理 | create-doc-to-pdf-job | 文档转 PDF | | | describe-doc-job | 查询文档任务 | | | doc-preview | 文档预览(转图片) | | | doc-preview-html-url | 文档在线预览链接 | | 媒体处理 | create-media-smart-cover-job | 智能封面 | | | describe-media-job | 查询媒体任务 | | | media-transcode-job | 视频转码 | | | media-snapshot | 视频截帧 | | | media-info | 媒体文件信息 | | 内容审核 | audit-image | 图片同步审核 | | | audit-image-job | 图片异步审核 | | | audit-video-job | 视频审核 | | | audit-audio-job | 音频审核 | | | audit-text-job | 文本审核 | | | audit-document-job | 文档审核 | | | describe-audit-job | 查询审核结果 | | 智能语音 | speech-recognition-job | 语音识别 | | | tts-job | 语音合成 | | | noise-reduction-job | 音频降噪 | | | voice-separate-job | 人声分离 | | 文件处理 | file-hash | 哈希计算 | | | file-compress-job | 文件压缩 | | | file-uncompress-job | 文件解压 | | | describe-file-job | 查询文件任务 | | MetaInsight 管理 | list-datasets | 列出数据集 | | | create-dataset | 创建数据集 | | | describe-dataset | 查询数据集详情 | | | create-dataset-binding | 绑定存储桶 | | | describe-dataset-bindings | 查询绑定关系 | | MetaInsight 索引 | create-file-meta-index | 创建文件索引 | | | describe-file-meta-index | 查询文件索引 | | | delete-file-meta-index | 删除文件索引 | | MetaInsight 检索 | image-search-pic | 以图搜图 | | | image-search-text | 文本搜图 | | | face-search | 人脸搜索 | | | dataset-simple-query | 元数据检索 | | | hybrid-search | 多模态检索(文档检索) | | 通用 | ci-request | 调用任意 CI API | | 🚀 知识库 | create-knowledge-base | "创建知识库" → 一键创建桶+数据集+绑定 | | | upload → 指向知识库桶 | "上传到知识库" → 上传文档 | | | hybrid-search → 指向知识库数据集 | "查询知识库" → 语义检索文档内容 | | 🚫 禁止 | ~~deleteBucket~~ | 不允许删除/清空存储桶 | | 🔐 凭证管理 | encrypt-env | 加密 .env → .env.enc 并删除明文 | | | decrypt-env | 解密 .env.enc → .env 还原明文 |

    安全注意事项

    凭证处理

    凭证存储有三种模式,安全性递增:

    | 模式 | 存储位置 | 安全性 | 用法 | |------|---------|--------|------| | 默认模式 | shell session 环境变量 | ⭐⭐⭐ 最安全(关闭终端即消失) | setup.sh --from-env | | 持久化模式 | 项目 .env 文件(权限 600) | ⭐⭐ 便捷但明文 | setup.sh --from-env --persist | | 加密持久化 | 项目 .env.enc(AES-256-GCM) | ⭐⭐⭐ 推荐 | 先 --persist,再 encrypt-env |

    #### 加密存储(推荐)

    持久化后执行 encrypt-env 即可加密凭证:

    # 1. 先持久化
    setup.sh --from-env --persist

    2. 加密(自动删除明文 .env,生成 .env.enc)

    node scripts/cos_node.mjs encrypt-env

    3. 之后脚本自动从 .env.enc 解密读取,所有功能正常使用

    node scripts/cos_node.mjs list

    加密原理

  • 算法:AES-256-GCM(认证加密,防篡改)
  • 密钥派生:SHA-256(hostname + username + 项目绝对路径)
  • 加密文件绑定当前机器和用户,拷贝到其他机器/用户无法解密
  • 如需还原明文:node scripts/cos_node.mjs decrypt-env
  • 清理凭证:rm -f .env .env.enc
  • 其他安全要求

  • 永远不要在对话中回显 SecretId/SecretKey
  • 推荐使用 STS 临时凭证(自带有效期,过期自动失效)
  • 最小权限与子账号密钥

    > ⚠️ 永远不要使用主账号密钥

    推荐创建专用子账号并授予最小权限策略:

  • QcloudCOSDataReadOnlyAccess — 仅读取
  • QcloudCOSDataFullControl — COS 数据读写
  • 如需数据万象功能,额外添加 QcloudCIFullAccess
  • 可进一步限制到具体存储桶:

    {
      "statement": [{
        "effect": "allow",
        "action": ["cos:*"],
        "resource": ["qcs::cos:::uid/:/*"]
      }]
    }
    

    安装包说明

    本技能通过 npm 安装 cos-nodejs-sdk-v5(腾讯云 COS 官方 Node.js SDK),安装到项目本地 node_modules/,不执行全局安装。

    使用规范

    1. 首次使用先运行 {baseDir}/scripts/setup.sh --check-only 检查环境 2. 所有文件路径--key)为存储桶内的相对路径,如 images/photo.jpg 3. 异步任务(文档转换、视频封面)脚本会自动轮询结果,也可通过 --job-id 手动查询 4. 上传后主动获取链接:上传完成后调用 sign-url 返回访问链接 5. 错误处理:调用失败时先用 setup.sh --check-only 诊断环境问题 6. 扩展 CI 能力:通过 ci-request action 可调用任意 CI API(内容审核、文件处理等) 7. 脚本源码scripts/cos_node.mjs 8. 命令参考references/api_reference.md