mcpField
H
huawei-cloud-flexus-l-server-hermes-deployment

huawei-cloud-flexus-l-server-hermes-deployment

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

关于 huawei-cloud-flexus-l-server-hermes-deployment

用于在华为云 Flexus L 实例上部署 Hermes AI Agent 平台的技能,也可配置 ModelArts 模型和机器人渠道,并支持交互式与脚本化操作。

主要功能

  1. 01创建 Flexus L 实例
  2. 02通过 COC 配置 ModelArts 模型
  3. 03配置飞书和 WeCom 渠道
  4. 04管理网关并查询状态
  5. 05交互式与非交互式操作

适用场景

  1. 01在华为云实例上部署 Hermes
  2. 02设置模型和机器人渠道
  3. 03重启已部署的网关
  4. 04检查 UniAgent 或执行状态

安装

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

$npx skills add https://github.com/huaweicloud/huaweicloud-skills --skill huawei-cloud-flexus-l-server-hermes-deployment

安装后在 Claude Code 中输入/huawei-cloud-flexus-l-server-hermes-deployment确认已加载。

包含的文件

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

references/
acceptance-criteria.md
cli-installation-guide.md
iam-policies.md
verification-method.md
scripts/
caller.py
channels.py
deploy.py
gateway.py
lib.py
models.py
pyproject.toml
smoke_test.py
uniagent.py
utils.py

详细介绍

⚠️ 安全执行规则(最高优先级):

  1. 所有脚本 MUST 通过 skill action=exec 执行,绝不能直接在 shell 中运行
  2. 绝不能在对话中打印脚本内容或包含 AK/SK/Token 的命令
  3. 绝不能创建临时脚本文件,优先使用内联执行(python -c)
  4. 执行失败时,只返回错误信息,不要重写脚本或打印完整命令
  5. AK/SK/Token MUST 通过环境变量传递,绝不能出现在对话中
  6. 绝不能以任何形式暴露、记录或打印 AK/SK/Token 值——这是关键安全要求
  7. 使用 skill action=exec 时,凭据会自动从环境变量(HW_ACCESS_KEY、HW_SECRET_KEY、HW_SECURITY_TOKEN)继承,无需将其作为命令行参数传递

Hermes 一键部署技能

概述

此技能支持将 Hermes AI Agent 平台一键部署到华为云 Flexus L 实例。它提供完整的工作流,包括:

  • 使用优化配置自动创建实例
  • 通过 COC(云运维中心)配置 ModelArts 大模型
  • 通过 COC 配置机器人渠道(飞书、企业微信、钉钉等)
  • 管理已部署实例的网关

此技能支持交互模式(逐步提示)和非交互模式(脚本化操作),适用于手动和自动化部署场景。

前提条件

账号要求
  • 拥有具备足够权限的有效华为云账号
  • 华为云凭据:长期 AK/SK 或临时 AK/SK + security_token
  • 所需权限:
    • 创建 Flexus L 实例
    • 访问 COC(云运维中心)服务

凭据获取方式:

此技能同时支持长期和临时华为云凭据:

  1. 长期 AK/SK:无需 security_token
  2. 临时 AK/SK:需要安全令牌

环境变量(可选):

  • HW_ACCESS_KEY:访问密钥 AK(长期或临时)
  • HW_SECRET_KEY:秘密密钥 SK(长期或临时)
  • HW_SECURITY_TOKEN:临时凭据的安全令牌(仅临时 AK/SK 需要)
架构图

此技能基于多项华为云服务构建,涉及以下云服务和组件:

User/Agent      ──────▶│   Flexus L Instance   │──────▶│   Hermes App         │──────▶│ Model Config     │ ──────▶│  Channel Config     │ 
(Skill caller)           (Target Host)                 (AI Agent Platform)             (ModelArts API)           (Feishu/Wecom)            

组件说明:

  • 用户/Agent:通过自然语言或 API 调用技能以触发 Hermes 部署操作
  • Flexus L 实例:华为云弹性云服务器,作为 Hermes 部署的目标主机
  • Hermes 应用:运行在 Flexus L 实例上的 AI Agent 平台
  • 模型配置:ModelArts 大模型配置(API_BASE、API_KEY、MODEL_NAME)
  • 渠道配置:机器人渠道配置(飞书、企业微信)

核心命令

部署命令
# Deploy using long-term AK/SK
python scripts/caller.py deploy --ak <AK> --sk <SK> --name hermes-{timestamp} --region cn-north-4

# Deploy using temporary AK/SK (requires security-token)
python scripts/caller.py deploy --ak <temp_ak> --sk <temp_sk> --security-token <security_token> --name hermes-{timestamp} --region cn-north-4

# Deploy in interactive mode (if not specified, auto-generates timestamp format: hermes-20260605143022)
python scripts/caller.py deploy

实例名称说明:

  • 可通过 --name 参数自定义实例名称(例如 hermes-prod-01、hermes-dev 等)
  • 如果未指定名称,则自动生成时间戳格式:hermes-YYYYMMDDHHMMSS(例如 hermes-20260605143022)
模型配置命令
# Configure model using long-term AK/SK
python scripts/caller.py maas --ak <AK> --sk <SK> --resource-id <instance_id> --region-id cn-north-4 --api-key <api_key> --model-name deepseek-v3.2

# Configure model using temporary AK/SK
python scripts/caller.py maas --ak <temp_ak> --sk <temp_sk> --security-token <security_token> --resource-id <instance_id> --region-id cn-north-4 --api-key <api_key> --model-name deepseek-v3.2

# Configure model in interactive mode
python scripts/caller.py maas
渠道配置命令
# Configure Feishu channel using long-term AK/SK
python scripts/caller.py channel --ak <AK> --sk <SK> --resource-id <instance_id> --region-id cn-north-4 --bot-platform feishu --feishu-app-id <app_id> --feishu-app-secret <app_secret>

# Configure Feishu channel using temporary AK/SK
python scripts/caller.py channel --ak <temp_ak> --sk <temp_sk> --security-token <security_token> --resource-id <instance_id> --region-id cn-north-4 --bot-platform feishu --feishu-app-id <app_id> --feishu-app-secret <app_secret>

# Configure WeCom channel using long-term AK/SK
python scripts/caller.py channel --ak <AK> --sk <SK> --resource-id <instance_id> --region-id cn-north-4 --bot-platform wecom --wecom-bot-id <bot_id> --wecom-secret <secret>

# Configure WeCom channel using temporary AK/SK
python scripts/caller.py channel --ak <temp_ak> --sk <temp_sk> --security-token <security_token> --resource-id <instance_id> --region-id cn-north-4 --bot-platform wecom --wecom-bot-id <bot_id> --wecom-secret <secret>

# Configure channel in interactive mode
python scripts/caller.py channel
网关管理命令
# Restart gateway using long-term AK/SK
python scripts/caller.py gateway --ak <AK> --sk <SK> --resource-id <instance_id> --region-id cn-north-4

# Restart gateway using temporary AK/SK
python scripts/caller.py gateway --ak <temp_ak> --sk <temp_sk> --security-token <security_token> --resource-id <instance_id> --region-id cn-north-4

# Restart gateway in interactive mode
python scripts/caller.py gateway
查询执行结果命令
# Query execution result using long-term AK/SK
python scripts/caller.py query --ak <AK> --sk <SK> --execute-uuid SCT2023083109562601af694bf

# Query execution result using temporary AK/SK
python scripts/caller.py query --ak <temp_ak> --sk <temp_sk> --security-token <security_token> --execute-uuid SCT2023083109562601af694bf

参数:

  • --execute-uuid:脚本执行 UUID,格式如 SCTxxxxxxxxxxxxxxxbf

状态说明:

  • FINISHED:执行成功
  • ABNORMAL:执行失败
  • RUNNING:正在执行
UniAgent 状态查询命令
# Query UniAgent status using long-term AK/SK
python scripts/caller.py uniagent --ak <AK> --sk <SK> --resource-id <instance_id>

# Query UniAgent status using temporary AK/SK
python scripts/caller.py uniagent --ak <temp_ak> --sk <temp_sk> --security-token <security_token> --resource-id <instance_id>

# Query UniAgent status in interactive mode
python scripts/caller.py uniagent

UniAgent 状态说明:

  • ONLINE:UniAgent 正常运行,可以执行 COC 脚本
  • OFFLINE:UniAgent 未运行,无法执行 COC 脚本
  • UNKNOWN:无法确定状态

使用场景:

  • 配置模型或渠道前,确保 UniAgent 处于 ONLINE 状态
  • 排查 COC 脚本执行失败的问题
  • 部署后验证实例的运行状态
  • 实例创建命令成功发出后(状态码为 "200"、"201" 或 "202"),自动检查前置条件(网关和 UniAgent 的状态)是否满足。如果满足,即可立即继续后续步骤!

参数参考

全局参数
参数说明必填默认值
--ak华为云 Access Key AK(支持长期和临时密钥)否提示输入
--sk华为云 Access Key SK(支持长期和临时密钥)否提示输入
--security-token临时凭证的安全令牌(可选,仅临时 AK/SK 需要)否提示输入
--non-interactive以非交互模式运行否false
部署命令参数
参数说明必填默认值
--name实例名称否自动生成
--region目标区域(也接受 --cli-region)否cn-north-4
MaaS 命令参数
参数说明必填默认值
--resource-idL 实例资源 ID是-
--region-idCOC 服务区域(也接受 --cli-region)否cn-north-4
--api-keyModelArts API Key是-
--model-name模型名称是-
--api-base-urlAPI 基础 URL否https://api.modelarts-maas.com/v2
--timeout执行超时时间(秒)否600
--execute-user执行用户否root
渠道命令参数
参数说明必填默认值
--resource-idL 实例资源 ID是-
--region-idCOC 服务区域(也接受 --cli-region)否cn-north-4
--bot-platformBot 平台:feishu 或 wecom是-
--feishu-app-idFeishu App ID条件必填-
--feishu-app-secretFeishu App Secret条件必填-
--wecom-bot-idWeCom Bot ID条件必填-
--wecom-secretWeCom Secret条件必填-
--timeout执行超时时间(秒)否600
--execute-user执行用户否root
网关命令参数
参数说明必填默认值
--resource-idL 实例资源 ID是-
--region-idCOC 服务区域(也接受 --cli-region)否cn-north-4
--timeout执行超时时间(秒)否120
--execute-user执行用户否root
UniAgent 命令参数
参数说明必填默认值
--resource-idL 实例资源 ID是-

工作流

该技能遵循以下工作流步骤:

  1. 部署 Hermes:创建并配置搭载 Hermes AI Agent 平台的 Flexus L 实例
  2. 配置模型:通过 COC(云运维中心)设置 ModelArts 大模型
  3. 配置渠道:通过 COC 设置机器人渠道(Feishu、WeCom)
  4. 管理网关:按需重启网关服务
交互模式(菜单)

运行主入口以打开交互菜单:

python scripts/caller.py

这将显示一个用于选择操作的菜单。

输出格式

部署命令输出
{
  "status": "success",
  "instance_id": "abc12345-6789-0abc-def1-23456789abc0",
  "instance_name": "my-hermes",
  "region": "cn-north-4",
  "spec": "hf.small.1.linux",
  "created_at": "2024-01-15T10:30:00Z"
}
MaaS 命令输出
{
  "status": "success",
  "resource_id": "abc12345-6789-0abc-def1-23456789abc0",
  "model_name": "deepseek-v3.2",
  "api_base_url": "https://api.modelarts-maas.com/v2",
  "executed_at": "2024-01-15T10:35:00Z"
}
通道命令输出
{
  "status": "success",
  "resource_id": "abc12345-6789-0abc-def1-23456789abc0",
  "bot_platform": "feishu",
  "channel_id": "channel_123",
  "executed_at": "2024-01-15T10:40:00Z"
}
网关命令输出
{
  "status": "success",
  "resource_id": "abc12345-6789-0abc-def1-23456789abc0",
  "action": "restart",
  "message": "Hermes gateway restarted successfully"
}

验证方法

1. 部署验证
# Check instance status
python scripts/caller.py deploy --ak <ak> --sk <sk> --name my-hermes --region cn-north-4 --non-interactive
# Expected output: "Instance created successfully" with instance_id
2. 模型配置验证
# Check model configuration
python scripts/caller.py maas --ak <ak> --sk <sk> --resource-id <instance_id> --region-id cn-north-4 --api-key <key> --model-name deepseek-v3.2 --non-interactive
# Expected output: "Model configuration updated successfully"
3. 通道配置验证
# Check channel configuration
python scripts/caller.py channel --ak <ak> --sk <sk> --resource-id <instance_id> --region-id cn-north-4 --bot-platform feishu --feishu-app-id <id> --feishu-app-secret <secret> --non-interactive
# Expected output: "Channel configuration updated successfully"
4. 网关验证
# Check gateway restart
python scripts/caller.py gateway --ak <ak> --sk <sk> --resource-id <instance_id> --region-id cn-north-4 --non-interactive
# Expected output: "Hermes gateway restarted successfully"

最佳实践

1. 凭证管理
  • 临时凭证:使用临时 AK/SK + security_token 进行身份验证,以提高安全性
    • 临时凭证由 STS 服务签发,并设有过期时间限制
    • 使用 --security-token 参数传递安全令牌
    • 支持环境变量、命令行参数和交互式输入
  • 在生产环境中使用权限最小化的 IAM 角色
  • 根据安全策略定期轮换凭证
2. 区域选择
  • 选择距离用户最近的区域,以获得更好的性能
  • 部署时考虑区域合规性要求
  • 在中国大陆部署时,默认使用 cn-north-4
  • Hermes 部署仅支持:cn-north-4、cn-east-3、cn-south-1、cn-southwest-2
3. 实例管理
  • 通过 Huawei Cloud 控制台监控实例运行状况
  • 设置自动伸缩策略,以实现高可用性
  • 配置备份策略,以持久化数据
4. 模型配置
  • 在生产环境使用前,先在预发布环境中测试模型
  • 配置备用模型,以应对故障切换场景
  • 初次部署后,默认模型配置不可用。使用 Hermes 前必须配置模型。
5. 通道配置
  • 在生产环境中使用专用机器人账号
  • 监控通道消息吞吐量
  • 配置速率限制,防止滥用
  • 目前仅支持 飞书 和 企业微信 机器人平台。每种平台类型仅支持一个机器人。

注意事项

常规注意事项
  1. 实例创建时间:实例完全配置就绪可能需要 5-10 分钟
  2. COC 脚本执行:模型和通道配置通过 Huawei Cloud COC(云运维中心)远程执行
  3. 安全组:如果需要外部访问,请在 Huawei Cloud 控制台中配置安全组规则
  4. 费用:使用 Huawei Cloud 资源会产生费用。请确保账户余额充足。
  5. 后续步骤:继续执行后续步骤(配置模型、通道)时,无需等待实例创建完成。系统会自动处理实例状态。
区域注意事项
  • 固定端点:创建 Hermes L 实例时,请求会发送到固定端点 hcss.cn-north-4.myhuaweicloud.com。区域参数仅用于选择实例规格。
  • 贵阳区域(cn-southwest-2)使用规格 ahf.small.1.linux
  • 其他区域(北京/上海/广州)使用规格 hf.small.1.linux
  • 状态码:200、201 和 202 均表示成功
COC 区域概念

COC 涉及两个不同的区域概念:

1. COC 服务区域(--region-id):COC API 服务所在的区域(cn-north-4、ap-southeast-3、eu-west-101)

2. 目标实例区域:L 实例所在的区域(可以是全球任意 Huawei Cloud 区域)

二者可以不同——例如,位于 cn-north-4 的 COC 服务可以在 ap-southeast-1(香港)的实例上执行脚本。

故障排除
  • 凭证问题:确保提供 --ak 和 --sk 参数,或使用交互模式
  • 区域不受支持:使用受支持的区域 ID,或在交互模式下使用中文名称
  • 实例创建失败:检查账户余额、实例类型有效性和网络连接

参考文档

  • scripts/caller.py - CLI 主入口
  • scripts/deploy.py - Hermes 部署模块
  • scripts/models.py - ModelArts 模型配置
  • scripts/channels.py - 机器人渠道配置
  • scripts/lib.py - 核心业务逻辑(实例创建、模型/渠道安装)
  • scripts/utils.py - 实用函数(凭据设置、输入提示)

评论

支持 Markdown