使用 OOS 模板生成 Skill,在 OpenClaw、Cursor 等 AI 智能体平台中通过自然语言对话,即可根据运维需求自动生成、验证 OOS 自动化运维模板。
功能概述
OOS 模板生成 Skill 基于阿里云系统运维管理(CloudOps Orchestration Service, OOS),通过 AI 智能体平台将自然语言运维需求转化为标准的 OOS 自动化模板。该 Skill 提供以下能力:
需求分析与模板生成:根据自然语言描述的运维需求,自动提取操作类型、目标资源和参数,生成符合 OOS 规范的 YAML 格式模板。
动作查询与匹配:通过阿里云 CLI 查询 OOS 可用的云产品动作(Action),自动匹配最合适的动作并获取属性定义。
模板语法验证:调用 OOS ValidateTemplateContent API 对生成的模板进行语法和语义校验,确保模板可直接使用。
迭代修复:验证失败时自动分析错误原因,修复模板并重新验证,直到通过为止。
适用范围
控制端(运行 AI 智能体平台的环境):
AI 智能体平台已就绪:已安装并配置支持 Skill 协议的 AI 智能体平台(如 OpenClaw、Cursor、Claude 等)。
阿里云 CLI 版本:需要阿里云 CLI 3.3.3 及以上版本。运行
aliyun version查看当前版本,版本过低请安装/更新 CLI。阿里云账号凭证:已配置与管理身份凭证。运行
aliyun configure list确认凭证状态。RAM 权限:使用 OOS 模板生成 Skill,阿里云账号或 RAM 用户需要授予以下权限。具体操作,请参见管理RAM用户的权限。
API | 权限 | 用途 |
ListActions |
| 查询可用的 OOS 动作列表 |
ValidateTemplateContent |
| 验证模板语法和语义 |
添加 Skill
OOS 模板生成 Skill 已发布至阿里云 Skill 平台和 GitHub,支持以下添加方式:
对话添加(推荐)
在 AI 智能体平台的 Agent 模式对话界面中发送以下提示词,即可自动完成 Skill 添加和配置:
Install the skill "alibabacloud-oos-template-generation" from GitHub repo aliyun/alibabacloud-aiops-skills. Skill path: skills/migrationom/oos/alibabacloud-oos-template-generation. After install, inspect the skill metadata and help me finish setup.手动添加
从 GitHub 仓库下载 Skill 定义文件,按照 AI 智能体平台的文档将 Skill 文件添加到项目中。
使用场景
Skill 支持以下使用场景。在 AI 智能体平台的对话界面中,使用自然语言描述需求即可触发模板生成流程。
生成基础运维模板
根据运维需求生成对应的 OOS 自动化模板。Skill 自动完成需求分析、动作查询、模板生成和语法验证。
示例对话:
"帮我生成一个重启 ECS 实例的 OOS 模板"
"写一个自动化模板,在指定实例上执行命令"
"创建一个定时停止 ECS 实例的运维编排模板"
Skill 从对话中提取操作类型、目标资源和地域信息,通过 CLI 查询合适的 OOS 动作,生成包含 FormatVersion、Description、Parameters 和 Tasks 的完整模板,最终调用 ValidateTemplateContent API 完成语法验证后输出。
生成批量操作模板
生成针对多个资源执行批量操作的模板。Skill 使用 OOS 的 Loop 机制实现批量逻辑。
示例对话:
"帮我写一个批量重启多个 ECS 实例的模板"
"生成一个模板,先查询所有实例,再逐个停止"
对于批量操作,Skill 通过 Task 的 Loop 属性和 {{ ACS::TaskLoopItem }} 循环变量实现遍历逻辑,并在前置 Task 中定义 Outputs 以供后续 Task 引用。
生成多步骤编排模板
生成包含多个步骤的复杂编排模板,支持步骤间的输出传递和条件分支。
示例对话:
"生成一个模板:先创建快照,等快照完成后再重启实例"
"帮我编排一个自动化任务,根据实例状态决定是否执行重启"
Skill 将需求拆解为多个 Task,通过 {{ taskName.outputField }} 格式传递步骤间的输出数据,并使用 ACS::Choice 动作实现条件分支逻辑。
模板生成流程
Skill 按照以下流程生成 OOS 模板:
需求分析:从对话中提取操作类型、目标资源、地域(默认
cn-hangzhou)等参数。不确定的参数提取为模板的 Parameters,无需反复询问用户。动作查询:通过阿里云 CLI 查询可用的 OOS 动作,匹配最合适的动作并获取属性定义。动作分为两类:
原子动作(内置):如
ACS::ExecuteAPI、ACS::WaitFor、ACS::Choice等,可直接使用。云产品动作(需查询):格式为
ACS::<Product>::<Name>,如ACS::ECS::RebootInstance。通过aliyun oos list-actions命令查询。
模板生成:生成包含 FormatVersion、中英文 Description、Parameters 和 Tasks 的完整 OOS 模板(YAML 格式)。
语法验证:调用
aliyun oos validate-template-content命令验证模板。验证通过后输出最终模板;验证失败则自动分析错误、修复并重新验证,直到通过为止。
模板示例
以下为 Skill 生成的重启 ECS 实例模板示例:
FormatVersion: OOS-2019-06-01
Description:
en: 'Reboot an ECS instance'
zh-cn: '重启一台ECS实例'
Parameters:
regionId:
Type: String
Description: '地域ID'
Default: 'cn-hangzhou'
instanceId:
Type: String
Description: '实例ID'
Tasks:
- Name: rebootInstance
Action: ACS::ECS::RebootInstance
Description: '重启ECS实例'
Properties:
regionId: '{{ regionId }}'
instanceId: '{{ instanceId }}'模板中的参数使用 {{ paramName }} 格式引用(双花括号加空格)。创建 OOS 执行时填入实际参数值即可运行。
常见问题
模板验证失败如何处理?
Skill 在验证失败时会自动分析错误并修复。常见的错误类型包括:
无效动作:使用了不存在的动作名称。Skill 通过 CLI 重新查询正确的动作名称后修复。
属性名大小写不匹配:动作属性名的大小写必须与 API 定义完全一致。Skill 根据查询到的属性定义自动修正。
YAML 格式错误:缩进或引号不正确。Skill 自动修正格式后重新验证。
缺少必填字段:如 FormatVersion、Description 或 Tasks。Skill 自动补充后重新验证。
CLI 版本过低如何处理?
OOS 模板生成 Skill 需要阿里云 CLI 3.3.3 及以上版本。运行以下命令安装或更新:
curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash安装后运行 aliyun version 确认版本号。
常见的动作使用误区
以下动作在 OOS 中不存在,Skill 会自动使用替代方案:
不存在的动作 | 替代方案 |
| 使用 Task 的 Loop 属性 |
| 使用 Loop 或 |
| 使用 |
| 使用 |
如何在模板中引用其他 Task 的输出?
引用其他 Task 输出前,该 Task 必须先定义 Outputs 块。引用格式为 {{ taskName.outputField }}。
例如,先通过 ACS::ExecuteAPI 查询实例列表并定义输出,再在后续 Task 中通过 Loop 遍历查询结果:
Tasks:
- Name: listInstances
Action: ACS::ExecuteAPI
Properties:
Service: ecs
API: DescribeInstances
Parameters:
RegionId: '{{ regionId }}'
Outputs:
instanceIds:
Type: List
ValueSelector: 'Instances.Instance[].InstanceId'
- Name: rebootInstances
Action: ACS::ECS::RebootInstance
Properties:
regionId: '{{ regionId }}'
instanceId: '{{ ACS::TaskLoopItem }}'
Loop:
Items: '{{ listInstances.instanceIds }}'权限不足如何处理?
执行 CLI 命令时如果遇到权限错误,Skill 会提示所需的 RAM 权限。请联系管理员为当前账号授予 oos:ListActions 和 oos:ValidateTemplateContent 权限后重试。