从零到发布:用 AI Shell 一键打造开源项目并上架华为云开发者展览馆
今天我在华为云 AI DevSpace 里,从一句需求描述出发,让 CodeArts 智能体帮我生成了一个完整的 Python 开源项目 **Cloud Environment Inspector**,推送到 GitCode,并成功发布到华为云开发者作品展览馆——全程没离开终端。
---
## 起点:一个朴素的需求
云开发环境往往是临时的容器——你登进去,想快速知道这台机器到底什么配置:几个核?多少内存?装了哪些开发工具?网络通不通?
当然可以手动敲一堆命令:`nproc`、`free -h`、`df -h`、`cat /etc/os-release`、`python --version`、`node --version`……但每次都敲一遍,烦。
所以我想要一个工具:
- 一条命令出全部信息
- 只用 Python 标准库,零依赖,拿来就跑
- 输出好看,还能导出 JSON 和 Markdown
- 缺文件、缺命令、断网都不崩
名字想好了:**Cloud Environment Inspector**。
## 过程:CodeArts 生成代码
我在 AI DevSpace 里给 CodeArts 发了一段详细的需求描述,包括项目结构、每个模块要做什么、异常处理要求、测试要求等。
CodeArts 在沙箱里逐步创建了全部文件:
```
cloud-env-inspector/
├── cloud_env_inspector/
│ ├── __init__.py / __main__.py / cli.py / models.py
│ ├── collectors/ # cpu / memory / disk / os_info / tools / network
│ └── reporters/ # text / json_reporter / markdown
├── tests/ # 21 个单元测试
├── README.md / LICENSE / .gitignore / setup.py / pyproject.toml
```
25 个文件,1637 行代码,**仅用 Python 标准库**。
### 验证:三个输出格式 + 21 个测试
文本报告(默认):
```
┌──────────────────────────────────────────────────────────────┐
│ Cloud Environment Inspector │
│ Linux cloud development environment report │
└──────────────────────────────────────────────────────────────┘
Operating System
────────────────
Distribution Huawei Cloud EulerOS 2.0 (aarch64)
Kernel 5.10.0-182.0.0.95.r3582_286.hce2.aarch64
Architecture aarch64
CPU
───
Logical cores 8
Memory
──────
Total 14.9 GiB
Available 11.5 GiB
Development Tools
─────────────────
✓ python Python 3.11.4
✓ node v20.18.0
✓ git git version 2.33.0
✓ ssh OpenSSH_8.8p1
✗ docker not installed
Network
───────
DNS google.com yes
Latency (1.1.1.1) 176.5 ms
```
JSON 输出(`--json`)和 Markdown 输出(`--markdown`)也正常工作。
```
$ python3 -m unittest discover -s tests -v
...
Ran 21 tests in 0.009s
OK
```
**21 个测试全部通过。**
### 一个小插曲:ARM 适配
当前环境是华为云 EulerOS aarch64。ARM 架构的 `/proc/cpuinfo` 没有 `model name` 字段——x86 上有,ARM 上没有。工具按设计优雅返回 `unknown`,而不是报错。这正是"健壮的异常处理"的价值:不假设目标平台,遇到缺字段就降级。
## 推送:GitCode 持久化
AI DevSpace 是临时容器,到期即销毁。代码必须推到 Git 仓库才能持久化。
用 `gitcode-oauth` 技能扫码登录 GitCode,初始化仓库并推送:
```bash
git init -b main
git add -A
git commit -m "Initial commit"
git remote add origin https://gitcode.com/lightyearssssr/cloud-env-inspector.git
git push -u origin main
```
代码现在在:https://gitcode.com/lightyearssssr/cloud-env-inspector
## 发布:上架华为云开发者作品展览馆
这是今天最有意思的一步。用 `publish-work-to-gallery` 技能,把作品发布到华为云高校运营平台。
整个发布流程是一条流水线:
1. **选择作品目录** — 扫描到 `/root/cloud-env-inspector/`
2. **解析 IAM Domain** — 通过 hcloud 自动获取 Domain ID,不需要手动输入
3. **Git 仓库信息** — 已推送,`gitUrl` + `gitBranch` 齐备
4. **生成作品名称** — 从 README 的 H1 提取:"Cloud Environment Inspector"
5. **生成封面图** — CLI 工具没有前端界面,用 Playwright 渲染了一个终端风格的 HTML 页面截图,深色渐变背景 + 模拟终端输出 + 标签
6. **生成简介** — "零依赖轻量级Python CLI工具,检测Linux云环境的CPU、内存、磁盘、OS、开发工具及网络状态。"(53 字符,通过 15-100 字符校验)
7. **生成详情文章** — 含系统架构图(Playwright 渲染 HTML/CSS),打包成 zip
8. **选择训练营** — 投稿到「AI素养课ClassRoom第二期 · 智慧系统」
9. **门禁复核** — 字体门禁、编码门禁、字形终检全部通过
10. **发布** — API 返回 201 Created ✅
11. **领取成长积分** — +200 积分
发布过程中踩了一个坑:**简介字数**。第一次提交的简介有 123 个字符,被服务端拒绝(`GALLERY.PARAM.INTRODUCTION_LENGTH_INVALID`,要求 15-100 字符)。缩短到 53 字符后通过。这个限制是服务端校验,技能侧的 CJK 字数检查(15-50 中文字符)是更保守的本地预检。
最终发布链接:
https://gallery.developer.huaweicloud.cn/gallery/015e8061-854a-443a-90dd-12fd5f991f78
## 复盘:几个值得记的点
### 1. AI 生成代码 + 人工验证 = 靠谱
CodeArts 生成的代码不是"看起来对"——它真的能跑,测试真的能过。但关键是验证环节:我在当前环境实际运行了三种输出格式和全部测试,确认没有问题才继续。AI 生成的代码必须验证,这一步不能省。
### 2. 临时容器 → 必须持久化
AI DevSpace 的容器有使用时长限制,到期自动回收。今天的工作能保留下来,是因为及时推送到了 GitCode。**代码不推送 = 没写过。**
### 3. 发布流程的自动化程度
`publish-work-to-gallery` 技能把发布流程编排成了一条 10 步流水线,从 Domain 解析到积分领取全自动。唯一需要人工干预的是:扫码登录 GitCode、选择训练营和作者署名。这种"把复杂流程编排成技能"的思路,比写一个巨大的脚本更可维护。
### 4. ARM 适配不是特殊需求
aarch64 是华为云的默认架构。`/proc/cpuinfo` 的差异不是边缘 case,而是常态。写工具时把"字段可能不存在"当作正常情况处理,不是防御性编程,是正确的编程。
## 成果一览
| 项目 | 链接 |
|------|------|
| GitCode 仓库 | https://gitcode.com/lightyearssssr/cloud-env-inspector |
| 作品展览馆 | https://gallery.developer.huaweicloud.cn/gallery/015e8061-854a-443a-90dd-12fd5f991f78 |
| 代码规模 | 25 文件,1637 行,21 个测试 |
| 依赖 | 零(仅 Python 标准库) |
| 成长积分 | +200 |
---
*本文由 AI DevSpace 中的工作日志整理而成。工具已开源,欢迎 clone 使用。*
- 点赞
- 收藏
- 关注作者
评论(0)