tcloud-unify

SKILL.md

支持的云厂商

完整的默认配置(地域、规格族、操作系统、计费方式)见 assets/defaults.json

云厂商 代码
阿里云 aliyun
腾讯云 tencent
金山云 ksyun
AWS aws
火山引擎 volcengine
谷歌云 gcp
Azure azure

场景路由

根据用户意图,选择对应的脚本或文档:

用户意图 执行方式
创建云主机 / 购买服务器 / 新建 ECS references/workflow_host.md + scripts/create-host.js
查询工作流 / 工作流状态 / 重跑步骤 node scripts/workflow.js status/list/rerun
管理云账号 / 创建云账号 / 同步子账号 node scripts/mutate.js account-add/edit/del/sync-sub
搜索 IP / 搜索域名 / 搜索资源 ID node scripts/query.js search-ip/search-domain/search-resource-id
查询标签关系 / 自动打标 / 批量打标 node scripts/query.js tag-relations/tag-arn-template + node scripts/mutate.js tag-auto/tag-batch
CDN 流量统计 / CDN 域名 / 同步 CDN 数据 node scripts/query.js cdn-domain/cdn-stat/cdn-cost + node scripts/mutate.js cdn-sync
查询 DNS Zone / DNS 记录 node scripts/query.js dns-zone/dns-record
查询负载均衡 node scripts/query.js loadbalancer/loadbalancer-detail
CMDB 工具 / EasyOps 代理 / 堡垒机同步 node scripts/mutate.js cmdb-*/easyops-*
FIMP 项目查询 / 创建 node scripts/query.js project + node scripts/mutate.js fimp-project-add
查询云资源(通用) node scripts/query.js <resource> 见下方「常见查询场景」

常见查询场景

用户意图 脚本命令
查某台主机信息 node scripts/query.js host --cloudUid=xxx --keyword=实例名或ID
查某个 IP 属于哪台机器 node scripts/query.js search-ip --ip=目标IP
查某个域名解析到哪里 node scripts/query.js search-domain --domain=目标域名
查某个资源 ID 的详情 node scripts/query.js search-resource-id --resource_id=资源ID
查某个 VPC 下有哪些子网 node scripts/query.js subnet --vpcId=目标VPC
查某个 VPC 下有哪些安全组 node scripts/query.js security-group --cloudUid=xxx --regionId=xxx --vpcId=xxx
查某个域名的 DNS 记录 node scripts/query.js dns-zone → 获取 zone_id → node scripts/query.js dns-record --zone_id=xxx
查某个 IP 的完整资源关系链 node scripts/query.js tag-relations --query=IP地址
查各云账号资源数量统计 node scripts/query.js resource-counts [--cloud_uid=xxx]
查某个负载均衡详情 node scripts/query.js loadbalancer-detail --load_balancer_id=xxx --cloud_uid=xxx
查 CDN 域名流量 node scripts/query.js cdn-stat --cloud_uid=xxx --domain=xxx --start_time=xxx --end_time=xxx
查工作流执行状态 node scripts/workflow.js status <runId>

查询组合技巧

  1. 从 IP 反查完整信息node scripts/query.js search-ip → resource_id → node scripts/query.js tag-relations 获取关联资源树
  2. 从域名追踪到主机node scripts/query.js search-domain → IP → node scripts/query.js search-ip → 主机信息
  3. 查某地域所有资源node scripts/query.js host/vpc/security-group/loadbalancer 等传入 --cloudUid --regionId

错误处理

完整的错误分类和 HTTP 状态码处理策略见 references/common.md「常见错误」。

关键原则:

  • 所有写操作失败后禁止自动重试,必须告知用户错误信息
  • Token 过期(401)→ 提示用户重新提供,不要重试
  • 限流(429)→ 等待 3-5 秒后重试,最多 2 次

脚本工具

所有 API 调用必须通过脚本执行,禁止直接使用 curl 或 HTTP 请求。脚本零依赖,仅使用 Node.js 内置模块。

脚本 用途 用法示例
scripts/lib.js 公共模块(配置加载、HTTP、参数解析) 被其他脚本 require('./lib') 引用
scripts/query.js 所有 GET 查询(52 种资源) node scripts/query.js account --cloudType=aliyun
scripts/mutate.js 所有写操作(账号/标签/CDN/CMDB等) node scripts/mutate.js account-add --json='{...}'
scripts/create-host.js 创建主机流程 node scripts/create-host.js --step=defaults --cloud=aliyun
scripts/workflow.js 工作流管理 node scripts/workflow.js status 12345

配置优先级

脚本通过 lib.js 统一加载配置,优先级从高到低:

  1. 环境变量 TCLOUD_API_URL / IDSAAS_API_KEY
  2. assets/config.json 中的 apiUrl / apiKey
  3. SKILL.md 解析(兜底)

query.js 支持的资源类型

--参数 为必填,[--参数] 为可选。所有列表接口均支持 [--page] [--pageSize]

云账号:
  account              [--cloudType] [--cloudUid]
  account-detail       --cloudUid

地域/可用区:
  region               [--cloudType]
  zone                 --cloudUid --regionId

主机/规格:
  host                 --cloudUid [--keyword] [--regionId]
  instance-type        --cloudUid --regionId --zoneId [--instanceChargeType] [--instanceTypeFamily]

镜像/磁盘/快照:
  image                --cloudType --regionId [--imageType] [--platform] [--cloudUid]
                       imageType=system(默认)不需要cloudUid; imageType=customized需要cloudUid; gcp不需要regionId
  disk                 --cloud_uid [--region_id]
  disk-quota           --cloudUid --regionId --zoneId --instanceType [--chargeType]
  snapshot             --cloud_uid [--region_id]
  snapshot-policy      --cloud_uid [--region_id]

网络:
  vpc                  --cloudUid --regionId
  subnet               --vpcId [--cloudUid] [--regionId]
  vpc-network          --cloud_uid
  vpc-peerconnect      --cloud_uid [--region_id]
  security-group       --cloudUid --regionId [--vpcId]
  security-group-rule  --cloudUid --securityGroupId
  nic                  --cloud_uid [--region_id]
  route-table          --cloud_uid [--region_id]
  route                --cloud_uid [--route_table_id]
  vpn-gateway          --cloud_uid [--region_id]
  vpn-connection       --cloud_uid [--region_id]
  vpn-client           --cloud_uid [--region_id]
  nat-gateway          --cloud_uid [--region_id]
  directconnect        --cloud_uid [--region_id]

负载均衡:
  loadbalancer         --cloud_uid [--region_id] [--load_balancer_type]
  loadbalancer-detail  --load_balancer_id --cloud_uid

DNS/CDN:
  dns-zone             --cloud_uid [--zone_name]
  dns-record           --cloud_uid --zone_id
  cdn-domain           --cloud_uid [--domain]
  cdn-stat             --cloud_uid --domain --start_time --end_time
  cdn-cost             --cloud_uid --start_time --end_time

容器:
  k8s                  --cloud_uid [--region_id]
  ecs                  --cloud_uid [--region_id]

其他:
  elasticsearch        --cloud_uid [--region_id]
  api-gateway          --cloudUid [--regionId]
  function             --cloud_uid [--region_id]
  bucket               --cloudUid [--regionId]
  log-service          --cloud_uid [--region_id]
  nas                  --cloud_uid [--region_id]
  waf                  --cloud_uid [--region_id]
  pai-dsw              --cloud_uid [--region_id]
  pai-quota            --cloud_uid [--region_id]

搜索/统计:
  search-ip            --ip
  search-domain        --domain
  search-resource-id   --resource_id
  resource-counts      [--cloud_uid]

标签:
  tag-relations        --query [--max_depth] [--cloud_uid]
  tag-arn-template     --cloud_type --product_type

项目/工作流:
  project              [--search]
  workflow-dependency  --workflowDefId

配置:
  defaults             [--cloud=aliyun]

create-host.js 步骤

步骤 说明
--step=defaults --cloud=<云厂商> 输出默认配置模板(含 {{占位符}}
--step=submit --config=<file> 提交创建请求
--step=price --config=<file> 查询价格

mutate.js 支持的命令

写操作接受 --json='...'--config=<file> 传入 JSON body,简单参数可通过 --key=value 直接传入。

云账号:
  account-add          --cloudUid --cloudName --cloudType --accessKeyId --accessKeySecret [--parentUid]
  account-edit         --cloudUid [--cloudName] [--accessKeyId] [--accessKeySecret]
  account-del          --cloudUids(逗号分隔)
  account-sync-sub     --cloudUids(逗号分隔)

标签:
  tag-auto             [--cloud_uid] [--cloud_type] [--product_type] [--resource_id] [--dry_run]
  tag-batch            --table_name [--cloud_type] [--cloud_name] [--dry_run]

CDN:
  cdn-sync             --cloud_uid [--start_time] [--end_time] [--granularity]

主机:
  host-price           --json='...' 或 --config=<file>(完整创建配置)

FIMP:
  fimp-project-add     --id --name [--alias] [--budgetDepartment] [--devUser] [--level]

CMDB:
  cmdb-tool            --json='...' 或 --config=<file>
  cmdb-tool-status     --exec_id
  cmdb-sync-jumpserver --json='...' 或 --config=<file>
  cmdb-check-easyagent --ips(逗号分隔)
  cmdb-install-node-exporter  --ips(逗号分隔)
  cmdb-init-system     --ips(逗号分隔)
  cmdb-sync-consul     --json='...' 或 --config=<file>
  cmdb-install-hids    --ips(逗号分隔)[--region]

EasyOps:
  easyops-agent-proxy  --name --proxy --region --regionEn --uid --url

workflow.js 命令

命令 说明
status <runId> 查询工作流详情和步骤状态
list [--type=host] 查询工作流运行列表
step <stepRunId> 查询步骤日志
poll <runId> [--interval=5] 轮询工作流直到完成
rerun <stepRunId> 重跑指定步骤
dependency <workflowDefId> 查询工作流步骤依赖

资产文件

文件 内容
assets/config.json API 地址和 Key 配置(可通过环境变量覆盖)
assets/defaults.json 云厂商默认配置(地域/规格族/OS/镜像/计费/标签别名/表单默认值)

参考文档

文件 内容
references/workflow_host.md 创建主机完整流程(步骤依赖链、智能引导规则)
references/common.md 通用数据结构、参数命名约定、枚举值、错误处理策略
Installs
3
First Seen
Mar 23, 2026