《从一句话到公网上线:我用 CodeArts Agent 20 分钟完成 2048 小游戏的生成与华为云 ECS 部署》

举报
yd_277536311 发表于 2026/10/21 20:59:01 2026/10/21
【摘要】 # 从一句话到公网上线:我用 CodeArts Agent 20 分钟完成 2048 小游戏的生成与华为云 ECS 部署## 前言最近参加了华为云"开放能力闯关挑战"活动,体验了一把 CodeArts Agent(码道代码智能体)的完整工作流:从一句话需求,到生成单文件 HTML 小游戏,再到按量付费 ECS 云上部署、公网访问验证、活动提交,全程约 20 分钟。本文完整复盘这条链路,希望给...
# 从一句话到公网上线:我用 CodeArts Agent 20 分钟完成 2048 小游戏的生成与华为云 ECS 部署

## 前言

最近参加了华为云"开放能力闯关挑战"活动,体验了一把 CodeArts Agent(码道代码智能体)的完整工作流:从一句话需求,到生成单文件 HTML 小游戏,再到按量付费 ECS 云上部署、公网访问验证、活动提交,全程约 20 分钟。本文完整复盘这条链路,希望给想体验 AI 辅助开发 + 华为云部署的开发者一个参考。

## 需求与产物

我给 Agent 的原始需求只有一句话:

> 生成一个 2048 小游戏,纯单文件 HTML(CSS/JS 全部内联,不依赖 npm、Vite 或任何构建工具),4x4 网格、方向键操作、合并得分、游戏结束判定,适配 PC 和移动端。

最终产物是一个 9.9KB 的 `index.html`:

- CSS/JS 全部内联,零外部依赖,零构建工具
- 4x4 网格经典玩法,相同数字合并得分
- 三套操作:方向键、WASD、移动端触摸滑动
- 撤销一步、最高分 localStorage 持久化
- 胜利(达成 2048)与游戏结束双判定
- 响应式布局,PC 与手机自适应

## 单文件实现的技术要点

### 数据模型

游戏状态就是一个 4x4 二维数组:

```javascript
board = [
  [2, 0, 0, 0],
  [0, 4, 0, 2],
  ...
];
```

### 四方向移动的统一算法

不写四份方向逻辑,而是用"旋转-滑动-旋转"的技巧:把任意方向的移动都转换成"向左滑动"处理:

```javascript
function move(dir) {
  let b = clone(board);
  let rotations = { left: 0, up: 1, right: 2, down: 3 }[dir];
  for (let i = 0; i < rotations; i++) b = rotateCW(b);   // 旋转到统一方向
  for (let r = 0; r < 4; r++) b[r] = slide(b[r]).row;    // 统一向左滑
  for (let i = 0; i < rotations; i++) b = rotateCCW(b);  // 旋转回去
}
```

滑动合并时注意"一次移动中每行每对只合并一次",用过滤零值后相邻比较实现。

### 渲染层

瓷砖用绝对定位 + `transform: translate()` 定位到网格坐标,新块和合并块分别加 `pop` / `merge` CSS 动画。相比重排 DOM,性能和视觉效果都更好。

### 移动端适配

触摸事件监听 `touchstart` / `touchend`,计算起止点位移的横纵分量绝对值,取大的方向判定滑动方向(阈值 24px 防误触)。整个棋盘容器 `touch-action: none` 阻止页面滚动。

## 华为云 ECS 部署:cloud-init 一次性完成全部配置

这是本次体验中我认为最值得分享的部分。Agent 创建 ECS 时通过 cloud-init `user_data` 传递了一段 shell 脚本,机器开机后自动完成全部配置,无需人工 SSH 登录:

```bash
#!/bin/bash
echo "root:xxxx" | chpasswd                  # 设置 root 密码
dnf install -y nginx                         # 安装 Nginx
mkdir -p /usr/share/nginx/html/hc-activity
echo "<base64>" | base64 -d > /usr/share/nginx/html/hc-activity/index.html
systemctl enable --now nginx                 # 启动并设开机自启
```

index.html 以 base64 内嵌在 user_data 里,ECS 创建成功即等于部署完成。

### 资源清单

| 资源 | 规格 | 说明 |
|---|---|---|
| ECS | s6.medium.2(1核2G)| cn-north-4a,按量付费 |
| 镜像 | Rocky Linux 9.8 | dnf 系,与 cloud-init 脚本匹配 |
| 磁盘 | GPSSD 40G | SATA 常售罄,GPSSD 更稳 |
| EIP | 5_bgp,5M 按流量 | 创建时随 ECS 一并绑定 |
| 安全组 | 仅 HTTP 80 放通 0.0.0.0/0 | SSH 22 只放通调试出口 IP |

### 部署参数的传递技巧

ECS CreateServers 的参数较多,尤其 user_data 的 base64 长达 18KB。直接命令行传参容易出错,KooCLI 提供了 `--cli-jsonInput` 方式,把参数写进 JSON 文件:

```bash
hcloud ECS CreateServers --cli-region=cn-north-4 --cli-jsonInput=ecs_create.json
```

注意 JSON 结构要按参数在 request 中的位置组织(`path` / `body` 分层),这与 API Explorer 页面的结构一致。

### 验证

ECS ACTIVE 后轮询 cloud-init 完成标志(HTTP 返回 200 即 nginx 已就绪):

```bash
$ curl -sI http://{EIP}/hc-activity/index.html
HTTP/1.1 200 OK
Server: nginx/1.20.1
Content-Length: 9955
```

从创建到公网可访问,全程约 4 分钟(含系统安装和 dnf 装 nginx 的时间)。

## 资源清理

按量付费资源用完记得删,否则会持续计费。删除 ECS 时注意两个参数,避免资源泄漏:

```bash
hcloud ECS DeleteServers \
  --servers.1.id=<id> \
  --delete_publicip=true \
  --delete_volume=true
```

`delete_publicip` 和 `delete_volume` 默认都是 false——不显式设置 true 的话,EIP 和磁盘会残留下来继续计费。

## 体验小结

这次完整链路体验下来,几个印象深刻的点:

1. **单文件 HTML 是 AI 生成代码的最佳载体之一**:无依赖、无构建、可直接验证,生成即可用
2. **cloud-init 让"开机即部署"成为现实**:基础设施代码化,从装 nginx 到上线全自动
3. **按量付费 + 用完即删**:整个验证过程花费不到 1 元,适合做临时验证和活动任务
4. **CLI 优先的工作流**:从创建到删除全程命令行,可复现、可自动化

作品已归档在 GitCode:https://gitcode.com/Code-Arts/2048-game

## 参考

- 华为云 CodeArts Agent(码道代码智能体)
- KooCLI 命令行工具:https://support.huaweicloud.com/hcli/
- ECS cloud-init 用户数据:https://support.huaweicloud.com/ecs/

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。