'腾讯云对象存储(COS)和数据万象(CI)集成技能。覆盖文件存储管理、AI处理和知识库三大核心场景。 存储场景:上传文件到云端、下载云端文件、批量管理存储桶文件、获取文件签名链接分享、查看文件元信息。 图片处理场景:图片质量评估打分、AI超分辨率放大、AI智能裁剪、二维码/条形码识别、添加文字水印、获取图片EXIF信息、 缩放、裁剪、旋转、格式转换。 文档处理场景:Word/Excel/PPT等办公文档转PDF、文档预览。
Scanned 9/8/2026
Install to Claude Code
npx -y skills add infometa/workbuddyskills --skill tencentcloud-cos --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Tencentcloud Cos?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/infometa-tencentcloud-cos)More formats (shields.io, HTML) on the badges page.
---
name: tencentcloud-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
version: 1.1.5
metadata:
clawdbot:
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:检查当前状态
```bash
{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:设置环境变量并运行安装
```bash
export TENCENT_COS_SECRET_ID="<SecretId>"
export TENCENT_COS_SECRET_KEY="<SecretKey>"
export TENCENT_COS_TOKEN="<Token>" # STS 临时凭证才需要
export TENCENT_COS_REGION="<Region>"
export TENCENT_COS_BUCKET="<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),并自动添加到 `.gitignore`。
`cos_node.mjs` 启动时会自动读取 `.env`(环境变量优先于 `.env` 文件)。清理凭证:`rm -f .env`。
---
## 操作指南
所有操作通过单一脚本 `scripts/cos_node.mjs` 完成,输出 JSON 格式。
```
node {baseDir}/scripts/cos_node.mjs <action> [--option value ...]
```
**全局可选参数**(所有 action 均支持,用于覆盖环境变量中的默认值):
- `--bucket <BucketName>` — 指定操作的存储桶(覆盖 `TENCENT_COS_BUCKET`)
- `--region <Region>` — 指定地域(覆盖 `TENCENT_COS_REGION`)
- `--dataset-name <Name>` — 指定数据集名称(覆盖 `TENCENT_COS_DATASET_NAME`)
> 初始配置的 Region、Bucket、DatasetName 只是默认值,每次调用都可以通过参数自由指定。
### COS 存储操作
```bash
# 上传文件
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 存储桶管理
> ⚠️ **安全限制**:本技能禁止删除存储桶和清空存储桶操作。
```bash
# 列出所有存储桶
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 图片基础处理
```bash
# 获取图片元信息
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 图片处理
```bash
# 图片质量评估
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 内容识别
```bash
# 图片标签识别
recognize-image --key images/photo.jpg
# OCR 文字识别
ocr-general --key images/document.jpg
```
### CI 文档处理
```bash
# 文档转 PDF(自动轮询等待结果)
create-doc-to-pdf-job --key docs/report.docx
# 查询文档处理任务
describe-doc-job --job-id <jobId>
# 文档预览(转图片)
doc-preview --key docs/report.docx --page 1 --format jpg
# 获取文档在线预览 HTML 链接
doc-preview-html-url --key docs/report.docx
```
### CI 媒体处理
```bash
# 视频智能封面(自动轮询等待结果)
create-media-smart-cover-job --key videos/demo.mp4
# 查询媒体处理任务
describe-media-job --job-id <jobId>
# 视频转码
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 内容审核
```bash
# 图片同步审核
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 <jobId> --type image
```
### CI 智能语音
```bash
# 语音识别
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 文件处理
```bash
# 文件哈希计算(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 <jobId>
```
### CI MetaInsight
#### 数据集管理
```bash
# 列出所有数据集
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
```
#### 索引管理
```bash
# 创建文件元数据索引
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` 参数覆盖。
```bash
# 以图搜图(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. 执行创建:
```bash
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. 确定知识库后,执行上传:
```bash
upload --file <用户的文件路径> --key <文件名> --bucket <知识库桶名> --region <知识库地域>
```
4. 告诉用户:
> ✅ 文件已上传到知识库「<名称>」,索引建立中,稍后即可检索。
#### 流程 3:查询知识库
当用户说"查询知识库"/"从知识库找XX"/"搜索知识库"/"知识库里有没有关于XX的"/"从知识库里搜一下"时:
**判断使用哪个知识库:**
1. 如果本次对话中已创建/使用过知识库 → 直接使用该知识库的数据集
2. 如果不确定 → 执行 `list-datasets` 列出所有数据集,筛选 TemplateId 为 `Official:DocSearch` 的数据集:
- 只有 1 个 DocSearch 数据集 → 直接使用它
- 有多个 DocSearch 数据集 → 列出让用户选择(展示名称和文件数)
- 没有 DocSearch 数据集 → 告诉用户"你还没有知识库,要帮你创建一个吗?"
3. 确定知识库后,执行检索:
```bash
hybrid-search --text "<用户的查询内容>" --dataset <知识库数据集名> --templates DocSearch
```
4. **结果呈现**(不要直接输出 JSON,用友好格式):
- 按相关度排序展示检索结果
- 每条结果展示:**相关度分数** + **来源文件名** + **匹配内容摘要**
- 如果没有匹配结果 → 告诉用户"知识库中没有找到相关内容,你可以上传更多文档试试"
### CI 通用请求(扩展入口)
用于调用尚未封装为独立 action 的 CI 能力:
```bash
ci-request --method POST --path "image/auditing" --body '<xml>...</xml>'
ci-request --method GET --path "jobs/<jobId>"
```
---
## 功能对照表
| 分类 | 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` 即可加密凭证:
```bash
# 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`
可进一步限制到具体存储桶:
```json
{
"statement": [{
"effect": "allow",
"action": ["cos:*"],
"resource": ["qcs::cos:<Region>::uid/<APPID>:<BucketName>/*"]
}]
}
```
### 安装包说明
本技能通过 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`
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!