mcpField
A
alibabacloud-openclaw-ecs-dingtalk

alibabacloud-openclaw-ecs-dingtalk

github.com/aliyun云与 DevOps281154 次安装1 天前更新
代码仓库

关于 alibabacloud-openclaw-ecs-dingtalk

此技能通过 aliyun CLI 在 Alibaba Cloud ECS 上部署 OpenClaw,配置 Bailian LLM,并连接 DingTalk 群机器人。适用于需要在钉钉群中使用 AI 对话的部署流程。

主要功能

  1. 01创建并启动 ECS 实例
  2. 02自动获取或创建 Bailian API Key
  3. 03通过 Cloud Assistant 安装 OpenClaw
  4. 04配置 DingTalk 连接器与网关
  5. 05验证部署并提供资源清理步骤

适用场景

  1. 01在 Alibaba Cloud 上部署 OpenClaw
  2. 02将 OpenClaw 接入 DingTalk 群聊
  3. 03配置 Bailian 模型用于群聊回复
  4. 04检查网关及 DingTalk 机器人运行状态

安装

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

$npx skills add https://github.com/aliyun/alibabacloud-aiops-skills --skill alibabacloud-openclaw-ecs-dingtalk

安装后在 Claude Code 中输入/alibabacloud-openclaw-ecs-dingtalk确认已加载。

包含的文件

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

references/
bailian-api-key-guide.md
dingtalk-setup-guide.md
ram-policies.md

详细介绍

在 ECS 上部署 OpenClaw 并集成 DingTalk

一键在 Alibaba Cloud ECS 实例上部署 OpenClaw AI Agent 平台,配置 Alibaba Cloud Bailian 大模型,并通过 DingTalk 机器人连接到 DingTalk 群组,让用户可以直接在 DingTalk 中与 AI 聊天。

来源:此 Skill 基于 Alibaba Cloud 官方文档和 OpenClaw 开源项目文档。请参阅末尾的参考链接。

版本:此 Skill 面向 OpenClaw 2026 年 3 月版本和 @dingtalk-real-ai/dingtalk-connector 插件编写,并于 2026-03-11 完成验证。

参数收集

执行前,请在一条消息中提示用户提供所有必需参数。收到并确认所有必需参数后,方可继续。

输入验证

使用前验证所有用户输入,以防止命令注入。拒绝包含 Shell 特殊字符(;、|、&、$、\、'、"、反引号、圆括号、方括号、换行符)的输入。参数必须符合预期格式:

  • region:cn-[a-z]+、ap-[a-z]+、us-[a-z]+ 等。
  • instance_type:ecs.[a-z0-9]+.[a-z0-9]+
  • vpc_id/vswitch_id/security_group_id:vpc-/vsw-/sg-[a-z0-9]+
  • dingtalk_client_id:ding[a-z0-9]+
  • dingtalk_client_secret:16-64 个字母数字字符

向 Cloud Assistant RunCommand 传递参数时,对敏感值使用 base64 编码。

ECS 实例参数
参数必需描述示例
region是部署区域cn-hangzhou
instance_type否ECS 实例类型(默认:ecs.c6.large,2 vCPU、4 GB)ecs.c6.large
image_id否OS 镜像(默认:Ubuntu 22.04)自动选择
vpc_id否现有 VPC ID(未提供时自动创建)vpc-xxx
vswitch_id否现有 VSwitch ID(未提供时自动创建)vsw-xxx
security_group_id否现有安全组 ID(未提供时自动创建)sg-xxx
OpenClaw 和 Bailian 参数

Bailian API Key(bailian_api_key)会在部署期间通过 CLI 自动获取(见步骤 2),无需手动操作控制台。此 Skill 使用 aliyun modelstudio 命令(ListWorkspaces + CreateApiKey)以编程方式获取或创建 API Key。

前提条件:用户的 Alibaba Cloud 账号必须已开通 Bailian(Model Studio)服务。若尚未开通,请引导用户访问 Bailian 控制台 并先行开通。

DingTalk 集成参数
参数必需描述示例
dingtalk_client_id是DingTalk 应用客户端 IDdingxxxxxx
dingtalk_client_secret是DingTalk 应用客户端密钥xxxxxxxxxxxxx

如果用户尚未创建 DingTalk 应用,请引导其参阅 DingTalk 应用设置指南,创建应用、配置机器人、添加权限、发布应用并获取凭证。

执行约束

  • 敏感信息脱敏:隐藏密码、密钥、令牌、IP、实例 ID 的中间部分(例如:ak****3d、i-bp1****7f2z)
  • 输入验证:拒绝 Shell 特殊字符(;、|、&、$、反引号等)。使用参数化 API 调用
  • 防止命令注入:使用 base64 编码敏感值,再传入 Cloud Assistant RunCommand
  • 网络超时:所有 curl/wget 操作都必须包含 --connect-timeout 和 --max-time 参数
  • 按顺序执行各步骤;每步完成后验证是否成功,并告知用户当前步骤
  • 如果任何步骤失败,继续之前先征求用户确认
  • Cloud Assistant RunCommand 结果:每隔 15 秒或更久轮询一次 DescribeInvocations
  • 破坏性操作:删除前征求用户确认并验证资源状态

步骤 1:创建 ECS 实例

1.1 验证 Alibaba Cloud 账号

aliyun sts GetCallerIdentity \
  --user-agent AlibabaCloud-Agent-Skills

1.2 检查可用区库存

查询目标实例类型在哪些可用区有库存,避免在无库存的可用区创建资源:

aliyun ecs DescribeAvailableResource \
  --RegionId ${region} \
  --DestinationResource InstanceType \
  --InstanceChargeType PostPaid \
  --InstanceType ${instance_type} \
  --user-agent AlibabaCloud-Agent-Skills

从结果中选择 StatusCategory 为 WithStock 的可用区,并记录为 ${zone_id}。

1.3 创建 VPC 和 VSwitch(如果用户未提供)

# Create VPC
aliyun vpc CreateVpc \
  --RegionId ${region} \
  --VpcName openclaw-vpc \
  --CidrBlock 172.16.0.0/16 \
  --user-agent AlibabaCloud-Agent-Skills

# Create VSwitch (use the zone with stock found in the previous step)
aliyun vpc CreateVSwitch \
  --RegionId ${region} \
  --VpcId ${vpc_id} \
  --VSwitchName openclaw-vswitch \
  --CidrBlock 172.16.0.0/24 \
  --ZoneId ${zone_id} \
  --user-agent AlibabaCloud-Agent-Skills

1.4 创建安全组并配置规则

# Create security group
aliyun ecs CreateSecurityGroup \
  --RegionId ${region} \
  --VpcId ${vpc_id} \
  --SecurityGroupName openclaw-sg \
  --Description "Security group for OpenClaw" \
  --user-agent AlibabaCloud-Agent-Skills

# Allow SSH (port 22)
aliyun ecs AuthorizeSecurityGroup \
  --RegionId ${region} \
  --SecurityGroupId ${security_group_id} \
  --IpProtocol tcp \
  --PortRange 22/22 \
  --SourceCidrIp 0.0.0.0/0 \
  --user-agent AlibabaCloud-Agent-Skills

# Allow HTTP (port 80) and HTTPS (port 443)
aliyun ecs AuthorizeSecurityGroup \
  --RegionId ${region} \
  --SecurityGroupId ${security_group_id} \
  --IpProtocol tcp \
  --PortRange 80/80 \
  --SourceCidrIp 0.0.0.0/0 \
  --user-agent AlibabaCloud-Agent-Skills

aliyun ecs AuthorizeSecurityGroup \
  --RegionId ${region} \
  --SecurityGroupId ${security_group_id} \
  --IpProtocol tcp \
  --PortRange 443/443 \
  --SourceCidrIp 0.0.0.0/0 \
  --user-agent AlibabaCloud-Agent-Skills

1.5 创建 ECS 实例

首先,查询目标地域中最新的 Ubuntu 22.04 系统镜像 ID:

aliyun ecs DescribeImages \
  --RegionId ${region} \
  --OSType linux \
  --ImageOwnerAlias system \
  --ImageName "ubuntu_22_04*" \
  --Status Available \
  --PageSize 1 \
  --user-agent AlibabaCloud-Agent-Skills

从结果中获取最新的 ImageId,然后创建实例(注意:不要设置 InternetMaxBandwidthOut;稍后将通过 EIP 配置公网访问):

aliyun ecs RunInstances \
  --RegionId ${region} \
  --InstanceType ${instance_type} \
  --ImageId ${image_id} \
  --SecurityGroupId ${security_group_id} \
  --VSwitchId ${vswitch_id} \
  --SystemDisk.Category cloud_essd \
  --SystemDisk.Size 40 \
  --InstanceChargeType PostPaid \
  --InstanceName openclaw-server \
  --Amount 1 \
  --user-agent AlibabaCloud-Agent-Skills

1.6 配置公网访问(EIP)

创建一个弹性公网 IP,并将其绑定到 ECS 实例,带宽设为 100 Mbps(安装 OpenClaw 需要下载许多 npm 包):

# Create EIP (100 Mbps bandwidth)
aliyun vpc AllocateEipAddress \
  --RegionId ${region} \
  --Bandwidth 100 \
  --InternetChargeType PayByTraffic \
  --user-agent AlibabaCloud-Agent-Skills

# Bind EIP to ECS instance
aliyun vpc AssociateEipAddress \
  --RegionId ${region} \
  --AllocationId ${eip_allocation_id} \
  --InstanceId ${instance_id} \
  --InstanceType EcsInstance \
  --user-agent AlibabaCloud-Agent-Skills

记录 EIP 地址,以便后续进行 SSH 连接和通过云助手执行命令。

1.7 启动实例并等待其进入运行状态

# Start instance
aliyun ecs StartInstance \
  --InstanceId ${instance_id} \
  --user-agent AlibabaCloud-Agent-Skills

# Query instance status, confirm it is Running
aliyun ecs DescribeInstances \
  --RegionId ${region} \
  --InstanceIds '["${instance_id}"]' \
  --user-agent AlibabaCloud-Agent-Skills

第 2 步:通过 CLI 获取百炼 API Key

使用 aliyun modelstudio CLI 插件自动获取或创建百炼 API Key,无需手动操作控制台。

2.1 安装 Model Studio CLI 插件

aliyun modelstudio 命令需要 aliyun-cli-modelstudio 插件:

aliyun plugin install --names aliyun-cli-modelstudio \
  --user-agent AlibabaCloud-Agent-Skills

2.2 列出工作空间(必须先执行)

CreateApiKey 的必填参数是 workspace-id,因此必须先通过 ListWorkspaces 获取该参数。每个已开通百炼的阿里云账号都有一个默认工作空间:

aliyun modelstudio list-workspaces \
  --user-agent AlibabaCloud-Agent-Skills

将结果中的 WorkspaceId 记录为 ${workspace_id}。如果结果为空(没有工作空间),则用户尚未开通百炼服务——引导用户前往百炼控制台开通。

2.3 创建 API Key

使用 ${workspace_id} 创建新的 API Key:

aliyun modelstudio create-api-key \
  --workspace-id ${workspace_id} \
  --description "OpenClaw deployment API Key" \
  --user-agent AlibabaCloud-Agent-Skills

将响应中的 ApiKeyValue(格式为 sk-xxx)记录为 ${bailian_api_key}。

重要提示:完整的 API Key 值仅在创建时返回。list-api-keys 始终返回脱敏后的值(sk-***),无法用于获取可用密钥。请务必在此处记录完整密钥。如果密钥丢失,请删除旧密钥并创建新密钥。


第 3 步:通过云助手安装基础环境

使用阿里云云助手在 ECS 实例上远程执行命令,无需手动建立 SSH 连接。

将 Git 安装、Node.js 22.x 安装和 npm 中国镜像配置合并为一条命令,以减少等待时间:

aliyun ecs RunCommand \
  --RegionId ${region} \
  --Type RunShellScript \
  --CommandContent "apt-get update -y && apt-get install -y git curl wget && curl -fsSL --connect-timeout 30 --max-time 300 https://deb.nodesource.com/setup_22.x | bash - && apt-get install -y nodejs && npm config set registry https://registry.npmmirror.com && node -v && npm -v" \
  --InstanceId.1 ${instance_id} \
  --Timeout 600 \
  --user-agent AlibabaCloud-Agent-Skills

使用 DescribeInvocations 查询命令执行结果并确认成功:

aliyun ecs DescribeInvocations \
  --RegionId ${region} \
  --InvokeId ${invoke_id} \
  --user-agent AlibabaCloud-Agent-Skills

确认输出中的 Node.js 版本为 v22.x.x。

轮询提示:此命令通常需要 2–5 分钟才能完成。查询 DescribeInvocations 时,每隔 15–30 秒轮询一次,避免过于频繁地轮询。当 InvocationStatus 从 Running 变为 Success 或 Failed 时,表示命令已完成。


第 4 步:一键安装 OpenClaw

使用安装脚本完成 OpenClaw 配置、百炼 API 配置和钉钉插件安装。

安全性:敏感参数通过 Base64 编码传递,以防止命令注入。

# Encode sensitive parameters
BAILIAN_KEY_B64=$(echo -n "${bailian_api_key}" | base64)
DINGTALK_ID_B64=$(echo -n "${dingtalk_client_id}" | base64)
DINGTALK_SECRET_B64=$(echo -n "${dingtalk_client_secret}" | base64)

aliyun ecs RunCommand \
  --RegionId ${region} \
  --Type RunShellScript \
  --CommandContent "curl -fsSL --connect-timeout 30 --max-time 300 https://openclaw-install-scripts.oss-cn-hangzhou.aliyuncs.com/install.sh -o /tmp/openclaw-install.sh && BAILIAN_API_KEY=\$(echo '${BAILIAN_KEY_B64}' | base64 -d) DINGTALK_CLIENT_ID=\$(echo '${DINGTALK_ID_B64}' | base64 -d) DINGTALK_CLIENT_SECRET=\$(echo '${DINGTALK_SECRET_B64}' | base64 -d) bash /tmp/openclaw-install.sh --api-key \"\$BAILIAN_API_KEY\" --api-region '${region}' --dingtalk-client-id \"\$DINGTALK_CLIENT_ID\" --dingtalk-client-secret \"\$DINGTALK_CLIENT_SECRET\"" \
  --InstanceId.1 ${instance_id} \
  --Timeout 600 \
  --user-agent AlibabaCloud-Agent-Skills

脚本将自动完成:安装 OpenClaw npm 包、配置百炼 API、安装钉钉插件并启动网关。查询 DescribeInvocations,确认出现 Gateway started(每隔 30 秒轮询一次,耗时 3–8 分钟)。


第 5 步:验收测试

5.1 验证网关状态

aliyun ecs RunCommand \
  --RegionId ${region} \
  --Type RunShellScript \
  --CommandContent "openclaw gateway status" \
  --InstanceId.1 ${instance_id} \
  --Timeout 60 \
  --user-agent AlibabaCloud-Agent-Skills

确认网关状态为 running,且钉钉渠道插件已加载。

5.2 在 DingTalk 中测试

指导用户:

  1. 确认已根据 DingTalk 应用设置指南 完成应用创建、权限配置、发布,并将机器人添加到群组
  2. 在添加了机器人的 DingTalk 群组中,@提及机器人并发送消息(例如:“你好,请介绍一下自己”)
  3. 等待机器人回复

验收标准:机器人在 DingTalk 群组中正常回复,且回复内容由 Bailian 大模型生成。此结果表明部署成功。

5.3 部署完成报告

确认所有组件均正常运行后,向用户提供部署摘要:

  • ECS 实例 ID 和 EIP 公网 IP
  • OpenClaw 版本和服务状态
  • Bailian 模型配置(模型名称、API 端点)
  • DingTalk 应用名称和机器人状态
  • 费用信息

资源清理

警告:删除资源不可逆。执行前务必征得用户确认。

删除前检查

删除前,提示用户:“以下资源将被永久删除:${instance_id}、${eip_allocation_id}、${security_group_id}、${vswitch_id}、${vpc_id}。此操作不可逆。输入 ‘yes’ 确认继续。”

仅在收到明确的 “yes” 确认后继续。

删除顺序

按依赖顺序删除(实例 → EIP → 安全组 → VSwitch → VPC):

# 1. Stop instance if running, then delete
aliyun ecs StopInstance --InstanceId ${instance_id} --user-agent AlibabaCloud-Agent-Skills
# Poll DescribeInstances until Status='Stopped'
aliyun ecs DeleteInstance --InstanceId ${instance_id} --user-agent AlibabaCloud-Agent-Skills

# 2. Release EIP (after confirming unassociated)
aliyun vpc ReleaseEipAddress --RegionId ${region} --AllocationId ${eip_allocation_id} --user-agent AlibabaCloud-Agent-Skills

# 3. Delete security group (after confirming no instances)
aliyun ecs DeleteSecurityGroup --RegionId ${region} --SecurityGroupId ${security_group_id} --user-agent AlibabaCloud-Agent-Skills

# 4. Delete VSwitch then VPC (after confirming empty)
aliyun vpc DeleteVSwitch --VSwitchId ${vswitch_id} --user-agent AlibabaCloud-Agent-Skills
aliyun vpc DeleteVpc --VpcId ${vpc_id} --user-agent AlibabaCloud-Agent-Skills

费用影响

  • ECS 实例:2 vCPU、4 GB(ecs.c6.large)按量付费,约 0.3-0.5 CNY/小时(以控制台实际价格为准)
  • EIP 带宽:100 Mbps 按流量计费
  • Bailian 模型调用:新用户享有免费额度;超出额度后按 Token 用量收费

注意:以上费用仅供参考。请以 Alibaba Cloud 控制台显示的实际价格和账单为准。

常见故障排查

现象可能原因解决方案
DingTalk 机器人无响应Gateway 未运行通过云助手执行 openclaw gateway status 检查状态
回复“0 characters”空消息Bailian 模型配置丢失检查 ~/.openclaw/openclaw.json 中的 models.providers 是否包含 alibaba-cloud
401 错误Gateway Token 不匹配检查 gateway.auth.token 是否与 channels.dingtalk-connector.gatewayToken 匹配
AI 卡片未显示缺少卡片权限在 DingTalk 开放平台添加 Card.Streaming.Write 和 Card.Instance.Write 权限
npm 安装超时网络问题确认已配置 npm 中国镜像;确认 EIP 带宽充足

参考链接

资源链接
Bailian API Key 指南references/bailian-api-key-guide.md
DingTalk 应用设置指南references/dingtalk-setup-guide.md
Alibaba Cloud 部署 OpenClawhttps://help.aliyun.com/zh/simple-application-server/use-cases/quickly-deploy-and-use-openclaw
DingTalk 开放平台 ECS 部署https://open.dingtalk.com/document/dingstart/deployment-alibaba-cloud-ecs-server
OpenClaw 官方网站https://openclaw.ai/
Bailian 控制台https://bailian.console.aliyun.com/
DingTalk 开放平台https://open.dingtalk.com/

评论

支持 Markdown