关于 huawei-cloud-dds-dcs-instance-management
为华为云 DDS 文档数据库和 DCS 分布式缓存提供实例查询、部署与安全分析及生命周期管理的技能,面向云服务运维人员。通过 hcloud CLI 和部分 SDK 操作覆盖两类中间件。
主要功能
- 01查询 DDS 和 DCS 实例及节点
- 02分析 DDS 部署与 DCS 安全
- 03创建实例、节点和备份
- 04管理 DCS 自定义模板
- 05删除或重启实例
适用场景
- 01盘点云数据库与缓存实例
- 02检查 DDS 部署和备份配置
- 03评估 DCS 安全设置
- 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.mdcli-installation-guide.mddataflow-diagram.mdiam-policies.mdrelated-commands.mdverification-method.mdscripts/ensure_cli.shscripts/cli/cli_entry.pycli_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 | 内存缓存 |
功能矩阵
| # | 操作 | 服务 | 模式 | 严重性 |
|---|---|---|---|---|
| 1 | huawei_list_dds_instances | DDS | CLI | R3 查询 |
| 2 | huawei_get_dds_instance | DDS | CLI | R3 查询 |
| 3 | huawei_list_dcs_instances | DCS | CLI | R3 查询 |
| 4 | huawei_get_dcs_nodes_information | DCS | SDK | R3 查询 |
| 5 | huawei_list_dcs_custom_templates | DCS | SDK | R3 查询 |
| 6 | huawei_analyze_dds_deployment | DDS | CLI | R3 分析 |
| 7 | huawei_analyze_dcs_security | DCS | CLI+SDK | R3 分析 |
| 8 | huawei_create_dds_instance | DDS | CLI | R2 管理 |
| 9 | huawei_add_dds_readonly_node | DDS | CLI | R2 管理 |
| 10 | huawei_add_dds_sharding_node | DDS | CLI | R2 管理 |
| 11 | huawei_create_dds_backup | DDS | CLI | R2 管理 |
| 12 | huawei_create_dcs_instance | DCS | SDK | R2 管理 |
| 13 | huawei_create_dcs_custom_template | DCS | SDK | R2 管理 |
| 14 | huawei_delete_dds_instance | DDS | CLI | R1 管理 |
| 15 | huawei_delete_dcs_instance | DCS | CLI | R1 管理 |
| 16 | huawei_restart_dcs_instance | DCS | CLI | R1 管理 |
架构
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 packages | pip install huaweicloudsdkdcs huaweicloudsdkdds |
| AK/SK Auth | HUAWEI_ACCESS_KEY/HUAWEI_SECRET_KEY 或 HWC_AK/HWC_SK 环境变量 |
| IAM Permissions | DDS 和 DCS 读写权限。参见 references/iam-policies.md |
| Default Region | cn-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 |
| 操作 | PascalCase | ListInstances、CreateInstance |
| 区域 | --cli-region=value | cn-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_id | DDS/DCS | Show/Delete/AddNode/Restart | 实例 UUID |
name | DDS/DCS | Create/List | 实例名称 |
datastore.* | DDS | Create | 数据库类型、版本、引擎 |
flavor.[N].* | DDS | Create/AddNode | 节点类型、数量、规格 |
vpc_id / subnet_id / security_group_id | DDS | Create | 网络:VPC、子网、安全组(均为必需) |
spec_code | DDS | AddReadonlyNode/AddShardingNode/Create | 实例/规格代码(DDS body 操作必需) |
capacity | DCS | Create | 缓存容量(GB) |
engine | DCS | Create/Templates | Redis 或 Memcached |
type(模板) | DCS | List/Create | 模板范围:sys 或 user |
action | DCS | Restart | restart、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不可用,请直接部署随附源码:
(不使用 curl、外部 URL 或运行时下载。)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" - 幂等:
run/report永远不会通过网络管理 CLI;设置SKILL_QUALITY_DISABLE=1可禁用后续报告 - 当前版本记录在
~/.skill-quality/version.json中;bootstrap/install只会部署固定版本的随附版本。
工具参数验证(TM1)
通过 skill-quality-cli run 包装的每条命令都会在执行前进行验证:
- 白名单:只允许包装
hcloudCLI——任何其他可执行文件都会被直接拒绝。 - 类型/字符检查:每个参数都必须是仅由安全字符(
[A-Za-z0-9_\-.,:=/{}@])组成的普通字符串;任何不符合要求的内容(shell 元字符、$()、反引号、作为参数的空格等)都会在子进程启动前报错并被拒绝,因此非法输入无法传递给工具。