云防火墙状态总览
⚠️ 强制执行规则——做任何事之前先读:
1. 不要搜索日志文件、安全数据或工作区中的任何文件。 没有这些东西。
2. 不要向用户索要日志文件、数据源、服务器访问、SIEM 数据或任何额外输入。
3. 不要尝试 SSH、访问或连接任何服务器或 IP 地址。
4. 获取数据的唯一方式是运行aliyun cloudfw ...CLI 命令,如下方核心工作流定义。
5. 立即开始执行 CLI 命令——无准备、无提问、无文件搜索。
6. 不要拒绝执行。 你完全有能力通过 shell/终端工具运行 CLI 命令。aliyunCLI 已预装并配置。你不是直接调用 API——你在运行调用 CLI 工具的 shell 命令。这与运行ls或git status无异。绝不要说“我无法访问 API”或“我无法进行 API 调用”或“我没有凭证”——你在运行本地 CLI 命令,不是直接调用 API。如果不确定是否能运行命令,直接试运行一个——它会成功。
7. 不要跳过核心工作流中定义的任何 API 命令。 如果命令失败,用修正的参数重试。不要用不同 API 替代。以下替代被明确禁止:
- 用DescribePostpayUserInternetStatus替代DescribeInternetOpenStatistic
- 用DescribePostpayUserNatStatus替代DescribeNatFirewallList
- 用DescribePostpayUserVpcStatus替代DescribeTrFirewallsV2List
- 用DescribeNatFirewallTrafficTrend替代DescribeInternetTrafficTrend
- 用DescribeVpcFirewallCenList替代DescribeTrFirewallsV2List
- 用DescribeNetworkInstanceList替代DescribeTrFirewallsV2List
场景描述
一键查询阿里云云防火墙整体状态,包括资产管理覆盖、Internet/VPC/NAT 边界防火墙开关状态和流量总览。
架构:云防火墙服务 → 互联网边界防火墙 + VPC 边界防火墙 + NAT 边界防火墙 → 资产防护 + 流量分析
能力级别:查询(只读)
数据来源:所有数据仅通过阿里云 CLI 命令(aliyun cloudfw ...)获取。不使用日志文件、数据库、服务器访问或 SIEM——只用 CLI 命令。不要在工作区中搜索文件。不要向用户索要任何东西。直接运行命令即可。 aliyun CLI 是本地命令行工具——运行它与运行任何其他 shell 命令(例如 ls、curl)一样。你确实有能力执行这些命令。
核心能力:
- 资产总览 —— 展示已管理资产数量和类型
- 互联网边界防火墙状态 —— 开关状态、已防护/未防护 IP 数量
- VPC 边界防火墙状态 —— 每个 VPC 防火墙的开关状态和防护覆盖
- NAT 边界防火墙状态 —— 开关状态和防护覆盖
- 流量总览 —— 最近流量趋势和峰值带宽
前置条件
预检查:需要 Aliyun CLI >= 3.3.3
运行aliyun version验证 >= 3.3.3。如果未安装或版本过低,
运行curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash安装/更新,
或参阅references/cli-installation-guide.md获取安装说明。
预检查:需要更新 Aliyun CLI 插件
[必须] 运行aliyun configure set --auto-plugin-install true启用插件自动安装。
[必须] 运行aliyun plugin update确保现有插件始终为最新版本。
[必须] CLI User-Agent —— 每次调用 aliyun CLI 命令都必须包含:
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-status-overview
在核心工作流开始时(任何 CLI 调用之前):
[必须] 启用 AI-Mode —— Agent Skill 执行需要 AI-mode。
在任何 CLI 调用之前运行以下命令:
aliyun configure ai-mode enable
aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-cfw-status-overview"
[必须] 在每一个退出点禁用 AI-Mode —— 在交付最终响应之前(无论何种原因),必须先禁用 AI-mode。这适用于所有退出路径:工作流成功、工作流失败、错误/异常、用户取消、会话结束,或任何不再执行 CLI 命令的场景。
AI-mode 仅用于 Agent Skill 调用场景,Skill 停止运行后绝不能保持启用状态。
aliyun configure ai-mode disable
认证
预检查:需要阿里云凭证
安全规则:
- 绝不在任何情况下读取、回显、打印、cat 或显示 AK/SK 值
- 绝不以任何形式输出 AK/SK 值——包括掩码、部分或脱敏形式(例如LTAI5tXXX****)。不要在日志、报告或对话输出中包含 AK ID 前缀、后缀或任何子串。
- 绝不要求用户在对话或命令行中直接输入 AK/SK
- 绝不使用带有明文凭证值的aliyun configure set
- 只能使用aliyun configure list检查凭证状态。报告结果时只说“凭证已配置”或“未找到有效凭证”——不要引用凭证输出的任何部分。
```bash
aliyun configure list
```
检查输出中是否存在有效 profile(AK、STS 或 OAuth 身份)。
如果不存在有效 profile,请在此停止。
1. 从 阿里云控制台 获取凭证
2. 在本会话之外配置凭证(通过终端中的aliyun configure或 shell profile 中的环境变量)
3. 在aliyun configure list显示有效 profile 后返回并重新运行
RAM 策略
[必须] RAM 权限预检查: 在执行任何命令之前,验证当前用户具有所需权限。
1. 使用ram-permission-diagnoseskill 获取当前用户权限
2. 与references/ram-policies.md进行比对
3. 如果缺少任何权限,中止并提示用户
最低所需权限 —— 完整策略 JSON 见 references/ram-policies.md。
或者,附加系统策略:AliyunYundunCloudFirewallReadOnlyAccess
参数确认
重要:参数确认 —— 在执行任何命令或 API 调用之前,
检查用户是否已在请求中提供了必要参数。
- 如果用户请求明确提到某个参数值(例如“检查 cn-hangzhou 的防火墙状态”意味着 RegionId=cn-hangzhou),直接使用该值,无需确认。
- 对于具有合理默认值的可选参数(PageSize、CurrentPage、时间范围),除非用户另有说明,否则使用默认值,无需询问。
- 不要重复询问用户已明确说明的参数。
| 参数名 | 必填/可选 | 说明 | 默认值 |
|---|---|---|---|
| RegionId | 必填 | 云防火墙的阿里云地域。仅有两个取值:cn-hangzhou(中国大陆)、ap-southeast-1(香港/海外)。 | cn-hangzhou(直接使用,无需询问;仅当用户明确提到香港/海外/国际时才使用 ap-southeast-1) |
地域不匹配处理:如果用户指定了cn-hangzhou或ap-southeast-1以外的地域(例如cn-shenzhen、cn-beijing),你必须告知用户:*“云防火墙仅支持两个地域:cn-hangzhou(中国大陆)和 ap-southeast-1(香港/海外)。您请求的地域 {user_region} 不受支持。将改用 cn-hangzhou(中国大陆),它覆盖所有中国大陆资源。”* 不要在不告知用户的情况下静默回退。
| PageSize | 可选 | 分页 API 的每页条数 | 10(直接使用,无需询问) |
|---|---|---|---|
| CurrentPage | 可选 | 分页 API 的页码 | 1(直接使用,无需询问) |
| StartTime | 可选 | 流量趋势查询的开始时间(Unix 秒级时间戳) | 7 天前(直接使用,无需询问) |
| EndTime | 可选 | 流量趋势查询的结束时间(Unix 秒级时间戳) | 当前时间(直接使用,无需询问) |
错误处理与工作流韧性
关键:失败时继续。 如果任何单个 API 调用失败,不要停止整个工作流。
记录该步骤的错误,然后继续执行下一步。展示所有成功收集到的数据。
重试逻辑
对于每次 API 调用:
- 如果调用因瞬时错误失败(网络超时、限流
Throttling.User、ServiceUnavailable、HTTP 500/502/503),最多重试 2 次,每次重试之间延迟 3 秒。 - 如果调用因永久错误失败(例如
InvalidParameter、Forbidden、InvalidAccessKeyId),不要重试。记录错误并继续。 - 所有重试耗尽后,记录“[Step X] Failed: {error message}”并继续下一步。
服务未开通
如果 DescribeUserBuyVersion(Step 1)返回表明服务未开通的错误(错误码 ErrorFirewallNotActivated 或类似的“未购买/未开通”消息):
- 告知用户:“该地域云防火墙服务未开通。请在 https://yundun.console.aliyun.com/?p=cfwnext 开通。”
- 由于服务不可用,跳过所有后续步骤。
- 如果用户请求多个地域,继续下一个地域。
步骤独立性
工作流步骤具有以下依赖关系:
- Step 1(实例信息) 必须首先成功——如果服务未开通,跳过剩余步骤。
- Step 2-6 相互独立 —— 任何一步失败都不应阻止其他步骤执行。
- Step 2 内,子步骤 2.1 和子步骤 2.2 相互独立。
- Step 4 内,子步骤 4.1、4.2 和 4.3 相互独立。
- Step 6 内,子步骤 6.1 和 6.2 相互独立。
部分结果
在呈现最终总结报告时:
- 对于成功的步骤,正常展示收集到的数据。
- 对于失败的步骤,在对应部分显示“N/A(错误:{简要错误})”。
- 即使部分步骤失败,也始终呈现总结报告——部分数据总比没有数据好。
核心工作流
所有 API 调用使用阿里云 CLI cloudfw 插件。
地域:通过 --region {RegionId} 全局 flag 指定
上下文管理(必须)
关键:流量趋势 API 产生大量输出。DescribeInternetDropTrafficTrend和DescribeInternetTrafficTrend对 7 天查询返回数百个数据点,可能溢出上下文窗口。这两个 API 必须通过jq管道输出,只提取摘要值(数据点数量、最大值、平均值、时间范围)。jq过滤器包含在下方 Step 3.2 和 Step 6.2 中——你必须完全按写法使用它们。
其他 API 返回中等规模响应,不需要jq过滤。
关键:立即执行,不要询问。 当本 Skill 被触发时,立即从 Step 1 开始执行。
不要询问用户调用哪些 API、执行哪些步骤或使用哪些数据源。
所有数据来自下方定义的阿里云 CLI 命令——直接运行它们。
强制:执行所有步骤。 你必须尝试执行从 Step 1 到 Step 6 的每一个步骤(包括所有子步骤)。在生成最终总结报告之前,验证你已尝试所有以下 API 调用:
1.DescribeUserBuyVersion
2.DescribeAssetStatistic
3.DescribeAssetList
4.DescribeInternetOpenStatistic
5.DescribeInternetDropTrafficTrend
6.DescribeTrFirewallsV2List
7.DescribeVpcFirewallCenList
8.DescribeVpcFirewallList
9.DescribeNatFirewallList
10.DescribePostpayTrafficTotal
11.DescribeInternetTrafficTrend
如果其中任何一个未尝试,在生成报告之前立即执行它们。仅当 Step 1 表明服务未开通时才允许跳过步骤。
时间参数
某些 API(Step 3.2、Step 6.2)需要 StartTime 和 EndTime 参数(Unix 秒级时间戳)。
如何获取时间戳:运行 date +%s 获取当前时间戳,date -d '7 days ago' +%s 获取 7 天前。然后直接在 CLI 命令中使用返回的数值。
重要:不要在 CLI 命令内使用$(date +%s)这类 bash 变量替换——某些执行环境会阻止$(...)。应分别运行date命令,记下返回值,然后将其作为字面数字用于--StartTime和--EndTime参数。
Step 1:查询实例信息(云防火墙版本)
aliyun cloudfw describe-user-buy-version \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-status-overview
关键响应字段:Version(版本代码)、InstanceId、ExpireTime、IpNumber(最大防护 IP 数)、AclExtension(ACL 配额)。
版本代码到版本名称映射 —— API 返回数字代码。使用此表在报告中展示人类可读的版本名称:
| 版本代码 | 版本名称 |
|---|---|
| 1 | 高级版(Premium Edition) |
| 2 | 企业版(Enterprise Edition) |
| 3 | 旗舰版(Ultimate Edition) |
| 10 | 按量付费版(Pay-as-you-go) |
如果返回的代码不在此表中,报告为:“未知版本(代码:{Version})”。
重要:不要推断或幻觉字段值。 如果任何关键响应字段(例如AclExtension、IpNumber)在 JSON 响应中缺失(键不存在)或其值为 null,在摘要中报告为 “N/A(API 未返回)”。但是,值 0 是有效值,不是缺失字段 —— 报告为0。不要根据版本类型的一般知识填充值。只使用 API 响应 JSON 中明确存在的值。
要避免的常见幻觉示例:
-AclExtension不在响应中 → 不要写“ACL 规则限制为 10000”或任何其他猜测数字。写“N/A(API 未返回)”。
-IpNumber不在响应中 → 不要写“最大公网 IP 配额为 200”。写“N/A(API 未返回)”。
- 任何不在响应中的字段 → 不要从版本类型推断(例如“旗舰版支持最多 X”)。只报告 API 实际返回的内容。
Step 2:资产总览
#### 2.1 查询资产统计
aliyun cloudfw describe-asset-statistic \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-status-overview
关键响应字段:总资产数、已防护数、未防护数、按资源类型(EIP、SLB、ECS 等)
#### 2.2 查询资产列表(分页)
aliyun cloudfw describe-asset-list \
--CurrentPage 1 \
--PageSize 10 \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-status-overview
关键响应字段:Assets[],含 InternetAddress、IntranetAddress、ResourceType、ProtectStatus、RegionID、Name。
#### 2.2.1 查询未防护资产
重要:当用户询问未防护/未管理资产、未被防火墙覆盖的资产或防护缺口时,你必须使用Status过滤参数设置为"close"只查询未防护资产:
aliyun cloudfw describe-asset-list \
--CurrentPage 1 \
--PageSize 50 \
--Status close \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-status-overview
未防护资产查询使用 PageSize: "50" 以捕获更多结果。如果响应中的 TotalCount 超过 PageSize,递增 CurrentPage 遍历所有页直到检索完所有资产。
Status 请求参数的过滤值:
| 值 | 含义 |
|---|---|
close | 未防护资产(防火墙未启用) |
open | 已防护资产(防火墙已启用) |
opening | 正在启用的资产 |
注意:请求参数使用close(无 'd'),而响应字段ProtectStatus使用closed(有 'd')。在请求参数中过滤时使用close,检查响应数据时使用closed。
Step 3:互联网边界防火墙状态
#### 3.1 查询互联网暴露统计
重要:此步骤必须使用DescribeInternetOpenStatistic。 不要用DescribePostpayUserInternetStatus或任何其他 API 替代。DescribePostpayUserInternetStatus仅检查开/关状态,而DescribeInternetOpenStatistic提供暴露统计(公网 IP、开放端口、风险等级)。
aliyun cloudfw describe-internet-open-statistic \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-status-overview
关键响应字段:公网 IP 总数、开放端口数、风险等级分布、最近暴露资产。
#### 3.2 查询互联网防御流量趋势
必需参数:--StartTime、--EndTime、--SourceCode、--Direction都是必需的。缺少任何都会导致 HTTP 400(例如ErrorDirectionError)。先分别计算时间戳(见时间参数章节),然后作为字面数字传入。--SourceCode必须精确为China或Other(区分大小写)。--Direction必须精确为in或out。
aliyun cloudfw describe-internet-drop-traffic-trend \
--StartTime {StartTime} \
--EndTime {EndTime} \
--SourceCode China \
--Direction in \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-status-overview \
| jq '{DataPoints: (.DataList // [] | length), MaxDropBps: ([.DataList[]?.DropBps // 0] | max), MaxDropPps: ([.DataList[]?.DropPps // 0] | max), FirstTime: (.DataList // [] | first | .Time), LastTime: (.DataList // [] | last | .Time)}'
SourceCode 取值:China(大陆)、Other(海外)。
Direction 取值:in(入站)、out(出站)。默认 in。
Step 4:VPC 边界防火墙状态
#### 4.1 查询 CEN 企业版(TR 防火墙)
此步骤必须使用DescribeTrFirewallsV2List。 不要用DescribeVpcFirewallCenList、DescribePostpayUserVpcStatus、DescribeNetworkInstanceList或任何其他 API 替代。DescribeVpcFirewallCenList用于 CEN 基础版(Step 4.2),不是 CEN 企业版 TR 防火墙。
aliyun cloudfw describe-tr-firewalls-v2-list \
--CurrentPage 1 \
--PageSize 20 \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-status-overview
关键响应字段:VpcTrFirewalls[],含 FirewallSwitchStatus(opened/closed/opening/closing)、CenId、RegionNo、VpcId。
#### 4.2 查询 CEN 基础版 VPC 防火墙
aliyun cloudfw describe-vpc-firewall-cen-list \
--CurrentPage 1 \
--PageSize 20 \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-status-overview
关键响应字段:VpcFirewalls[],含 FirewallSwitchStatus、CenId、LocalVpc、PeerVpc。
#### 4.3 查询高速通道 VPC 防火墙
aliyun cloudfw describe-vpc-firewall-list \
--CurrentPage 1 \
--PageSize 20 \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-status-overview
关键响应字段:VpcFirewalls[],含 FirewallSwitchStatus、VpcFirewallId、LocalVpc、PeerVpc、Bandwidth。
Step 5:NAT 边界防火墙状态
重要:此步骤必须使用DescribeNatFirewallList。 不要用DescribePostpayUserNatStatus或任何其他 API 替代。DescribePostpayUserNatStatus仅检查开/关状态,而DescribeNatFirewallList提供详细 NAT 防火墙实例信息。
aliyun cloudfw describe-nat-firewall-list \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-status-overview
关键响应字段:NatFirewalls[],含 ProxyStatus(configuring/normal/deleting)、NatGatewayId、NatGatewayName、VpcId、RegionId。
Step 6:流量总览
#### 6.1 查询总流量统计
aliyun cloudfw describe-postpay-traffic-total \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-status-overview
#### 6.2 查询互联网流量趋势
此 API 强制两步执行:
1. 首次尝试必须包含--TrafficType TotalTraffic。你不得跳过此步骤。完全按写法执行下方命令。
2. 仅当首次尝试返回 HTTP 400 时,不带--TrafficType重试。
3. 不要直接跳到重试命令。不要在首次尝试时省略 TrafficType。
其他必需参数:--StartTime、--EndTime、--SourceCode(同 Step 3.2 规则)。不要回退到DescribeNatFirewallTrafficTrend或任何其他 API。
Step 1 - 必须首先运行(带 TrafficType):
aliyun cloudfw describe-internet-traffic-trend \
--StartTime {StartTime} \
--EndTime {EndTime} \
--SourceCode China \
--TrafficType TotalTraffic \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-status-overview \
| jq '{DataPoints: (.DataList // [] | length), MaxBps: ([.DataList[]?.TotalBps // 0] | max), AvgBps: (([.DataList[]?.TotalBps // 0] | add) / ([.DataList // [] | length] | if . == 0 then 1 else . end)), FirstTime: (.DataList // [] | first | .Time), LastTime: (.DataList // [] | last | .Time)}' |
|---|
仅当上述返回 HTTP 400 时,才不带 `--TrafficType` 重试:
Step 2 - 仅当 Step 1 返回 HTTP 400 时运行:
aliyun cloudfw describe-internet-traffic-trend \
--StartTime {StartTime} \
--EndTime {EndTime} \
--SourceCode China \
--region {RegionId} \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-cfw-status-overview \
| jq '{DataPoints: (.DataList // [] | length), MaxBps: ([.DataList[]?.TotalBps // 0] | max), AvgBps: (([.DataList[]?.TotalBps // 0] | add) / ([.DataList // [] | length] | if . == 0 then 1 else . end)), FirstTime: (.DataList // [] | first | .Time), LastTime: (.DataList // [] | last | .Time)}' |
|---|
**TrafficType 取值**(支持时):`TotalTraffic`、`InTraffic`、`OutTraffic`。
> **流量趋势数据校验:** 收到流量趋势响应后,检查数据点数量及其时间跨度。如果响应包含少于 10 个数据点,或第一个和最后一个数据点之间的时间跨度少于 1 天,在报告中添加说明:*“注意:流量趋势数据稀疏(仅 {N} 个数据点覆盖 {timespan})。这可能表示查询期间无防护资产或流量极少。7 天趋势可能不完全具有代表性。”* 如果实际数据点跨度明显更短,不要声称数据覆盖 7 天。
### 输出摘要格式
收集所有数据后,呈现总结报告。**即使某些步骤失败也始终生成此报告**——对于无法完成的步骤,用“N/A”替换值。
============================================
云防火墙状态总览报告
============================================
- 实例信息
- 版本:{Version}
- 到期时间:{ExpireTime}
- 最大防护 IP 数:{IpNumber 或 "N/A(API 响应中无)"}
- 资产总览
- 总资产数:{TotalCount}
- 已防护:{ProtectedCount}({ProtectedRate}%)
- 未防护:{UnprotectedCount}
- 按类型:EIP({eip})、SLB({slb})、ECS({ecs})、ENI({eni})
- 互联网边界防火墙
- 已防护 IP:{protectedIpCount}
- 未防护 IP:{unprotectedIpCount}
- 防护率:{protectionRate}%
- VPC 边界防火墙
- CEN 企业版(TR):{trCount} 个,{trOpened} 个已开启
- CEN 基础版:{cenCount} 个,{cenOpened} 个已开启
- 高速通道:{ecCount} 个,{ecOpened} 个已开启
- NAT 边界防火墙
- 总数:{natCount}
- 正常:{natNormal}
- 配置中:{natConfiguring}
- 流量总览(最近 7 天)
- 总流量:{totalTraffic}
- 峰值带宽:{peakBandwidth}
- 已拦截请求:{blockedCount}
[出错步骤(如有)]
- {Step X}: {error message}
============================================
> **注意**:对于任何失败的步骤,在该部分数据字段中显示“N/A(错误:{简要错误})”,并在底部章节列出所有错误。
> **重要:错误报告准确性。** 总结报告必须准确反映执行期间遇到的**所有错误**,**包括通过重试解决的错误**。对于重试后成功的调用,报告为:`“Step X: {API name} 初次失败于 {error code/message},重试第 {N} 次成功”`。如果任何调用在执行期间任何时刻返回错误,不要声称“所有 API 调用成功完成”。错误章节应列出遇到的所有错误,分类为:
> - **通过重试解决**:重试后最终成功的错误
> - **未解决**:所有重试后仍存在的错误
---
成功验证
详细验证步骤见 references/verification-method.md。
快速验证:如果所有 CLI 命令返回有效 JSON 响应且无错误码,则 Skill 执行成功。
API 与命令表
以 references/related-apis.md 作为 API 表和命令映射的唯一权威来源。
最佳实践
- 失败时继续 —— 如果任何步骤(2-6)失败,记录错误并继续。始终用已收集到的数据生成摘要。
- 使用分页 —— 一般查询默认 PageSize=10,过滤查询(例如未防护资产)默认 PageSize=50。
- 时间范围选择 —— 默认最近 7 天。分别运行
date命令,然后将返回值作为字面数字用于--StartTime/--EndTime。不要在 CLI 命令内使用$(...)。 - 地域感知 —— 云防火墙只有两个地域:
cn-hangzhou(中国大陆)和ap-southeast-1(香港/海外)。默认使用cn-hangzhou。 - 安全 —— 绝不暴露、记录、回显或显示 AK/SK 值。
参考链接
| 参考文档 | 说明 |
|---|---|
| references/related-apis.md | 完整 API 表及参数 |
| references/ram-policies.md | 所需 RAM 权限及策略 JSON |
| references/verification-method.md | 分步验证命令 |
| references/acceptance-criteria.md | 正确/错误用法示例 |
| references/cli-installation-guide.md | 阿里云 CLI 安装指南 |
阿里云skills
◯ 评论 0