用 CodeArts Agent 自动化完成华为云开发者成长任务:发布 Skill 与提 Issue 实战
【摘要】 > 本文记录一次用华为云 CodeArts Agent(GLM-5.2 驱动)自动化完成华为云开发者成长计划(grow)任务的真实实践:从在开发者作品展览馆发布一个 Skill 作品,到给 GitCode 开源仓库提交一个建设性 Issue,全程在 Agent 会话中完成。文末附踩坑经验(ag CLI scope 限制、GitCode API 认证方式等),希望能帮到同样在刷 grow 任务...
> 本文记录一次用华为云 CodeArts Agent(GLM-5.2 驱动)自动化完成华为云开发者成长计划(grow)任务的真实实践:从在开发者作品展览馆发布一个 Skill 作品,到给 GitCode 开源仓库提交一个建设性 Issue,全程在 Agent 会话中完成。文末附踩坑经验(ag CLI scope 限制、GitCode API 认证方式等),希望能帮到同样在刷 grow 任务的同学。
## 一、背景:华为云开发者成长计划任务体系
华为云开发者成长计划(https://developer.huaweicloud.cn/grow )会定期放出参与性任务,常见的几类:
- **福利号软件任务**:门槛低,建议都做;
- **普通号每周实验**:建议选 Docker 任务,跟随系统指引完成;
- **参与性任务**:给指定代码仓 star / 提 Issue、在开发者作品展览馆发布作品、在开发者社区发博客等。
其中"发布作品"和"提 Issue"这类任务,传统做法是在网页端一步步点。但既然手边有 CodeArts Agent,不妨让它直接干——下面就是两个任务的自动化实录。
## 二、任务一:在开发者作品展览馆发布 Skill 作品
### 1. 准备作品
展览馆要的是 Skill 作品(一个含 `SKILL.md` 的目录,frontmatter 带 `name` 和 `description`)。我让 Agent 生成一个实用的 Skill:**git-commit-lint**——检查 Git 提交信息是否符合 Conventional Commits 1.0.0 规范并给出修复建议。
目录结构很简单:
```
git-commit-lint/
└── SKILL.md # frontmatter(name, description) + 规范定义/校验规则/工作流/CI示例
```
`SKILL.md` 的 frontmatter:
```yaml
---
name: git-commit-lint
description: 检查 Git 提交信息是否符合 Conventional Commits 1.0.0 规范,自动识别不合规的 commit message 并给出精准修复建议与改写示例……
---
```
正文写了 Conventional Commits 的 type 合法取值表、8 条校验规则(header 正则、type 小写、subject 不结尾句号、空行分隔、breaking 标记一致性等)、scope/type 自动推断规则和 CI 集成示例。
### 2. 一行调用发布
CodeArts Agent 内置了 `uploadUserSkillToHuawei` 工具,直接把目录传上去,会自动打包成 zip 并上传到技能市场(OBS 预签 URL):
```
uploadUserSkillToHuawei(
skillZip = "/workspace/.codeartsdoer/skills/git-commit-lint", # 目录,自动打包
skillName = "git-commit-lint",
scene = "通用场景",
category = "开发工具" # 通用场景可选:效率工具/内容创作/学习成长/生活方式/开发工具
)
```
第一次我误填了 `category = "代码开发"`,工具直接回错并给出合法分类列表——改成"开发工具"后一次成功:
```json
{ "success": true, "skills": [{
"skill_name": "git-commit-lint", "category": "development",
"version": "1.0.0", "submit_id": 823, "display_allowed": true
}]}
```
### 3. 验证
用 `queryUserSkillList` 查一下,`total: 1`,作品已在 https://skills.huaweicloud.cn/community 上架。
> **踩坑提醒**:grow 任务中心的"发布作品"任务要打勾,需从任务页面指定的网页端 Agent 入口完成发布,任务系统才会记录。在本地 Agent 会话直接上传虽然作品上架了,但任务不一定打勾——这是任务入口关联问题,不是发布失败。
## 三、任务二:给 GitCode 开源仓库提 Issue
### 1. 仓库调研
任务指定的仓库是 `https://gitcode.com/agent-best-practices/ai-campus-event-planner`(AI 校园活动策划天团,基于 jiuwenSwarm 多智能体框架,Star 280,Issues 65)。
让 Agent 用 webfetch 读仓库主页,搞清定位:这是一个**事前策划**系统——输入活动基本信息,并行生成方案/预算/风险/宣传,输出 HTML + 预算 Excel + 风险 Excel + 宣传 PPTX。
### 2. 找到一个有价值的切入点
仓库覆盖了"策划 → 执行",但缺"事后复盘"环节。于是 Issue 主题定为:**新增「活动效果复盘 Agent」,支持事后数据回填与经验沉淀**——补全"策划 → 执行 → 复盘"闭环,复盘产出的经验卡片写入现有自定义知识库,让系统越用越准。这种带 PR 意向的建设性建议,比"文档有个错别字"有价值得多,也更容易被维护者接受。
### 3. 认证踩坑:ag CLI 的 scope 限制
环境里装了 AtomGit CLI `ag`(v0.7.2),本想 `ag auth login --with-token` 登录后 `ag issue create` 一把梭。结果登录就被挡:
```
$ printf '%s' "$TOKEN" | ag auth login --with-token
token validation failed: user endpoint 403 Forbidden:
{"error_message":"no scopes:read_user"}
```
原因:`ag auth login` 登录时会调用 user API 校验令牌,**强制要求令牌含 `read_user` scope**,而我给的 PAT 只勾了 issue 权限。重新建令牌可以解决,但我不想再跑一趟设置页。
### 4. 绕过登录,直接打 API
用 curl 探了一下 GitCode API,发现两件事:
| 认证方式 | 结果 |
|----------|------|
| `Authorization: token <PAT>` | 401 token not found ❌ |
| `PRIVATE-TOKEN: <PAT>` | 200,正常返回 issues 列表 ✅ |
也就是说 GitCode 的 `/api/v5/repos/{owner}/{repo}/issues` 端点用 `PRIVATE-TOKEN` header 认证,且我的令牌有 issue 读写权限(只是缺 `read_user` 而已)。于是直接 POST 创建 Issue:
```bash
curl -sL -X POST \
"https://gitcode.com/api/v5/repos/agent-best-practices/ai-campus-event-planner/issues" \
-H "PRIVATE-TOKEN: <YOUR_PAT>" \
--data-urlencode "title=[Feature] 新增「活动效果复盘 Agent」,支持事后数据回填与经验沉淀" \
--data-urlencode "body@issue-body.md"
```
返回 `{"number":"184","state":"open","html_url":".../issues/184"}`——**Issue #184 提交成功**。
> `--data-urlencode "body@file"` 会读取文件内容并 URL 编码作为表单字段,比手拼 JSON 安全,中文/特殊字符都不会出问题。
## 四、经验总结
把这次实践里值得记住的点整理成一张表:
| 环节 | 要点 |
|------|------|
| 发布 Skill | `uploadUserSkillToHuawei` 直接传目录会自动打包;`category` 必须选 scene 对应的合法分类,填错会回错并给列表 |
| grow 任务打勾 | 需从 grow 任务页指定的网页端 Agent 入口完成,本地会话上传作品不一定被任务系统记录 |
| ag CLI 登录 | 强制要求 PAT 含 `read_user` scope,否则 `auth login` 失败 |
| GitCode API | 认证用 `PRIVATE-TOKEN` header(不是 `Authorization: token`),端点 `/api/v5/repos/{owner}/{repo}/issues` |
| 提 Issue 正文 | 用 `curl --data-urlencode "body@file"` 从文件读正文,避免中文/特殊字符的编码坑 |
| Issue 质量 | 先读仓库定位再找切入点,提带 PR 意向的建设性建议,比凑数 issue 更易被接受 |
## 五、结语
这次用 CodeArts Agent 连续完成了"发布 Skill 作品"和"给开源仓库提 Issue"两个 grow 任务,真正动手的部分其实就几行工具调用和一条 curl。几个感受:
1. **Agent + 内置工具的组合很顺手**:发布 Skill 有专门工具,提 Issue 没有专门工具但能 curl API,Agent 能自己探认证方式、自己排坑。
2. **任务入口关联是坑点**:grow 任务打勾依赖任务页指定的入口,作品/Issue 本身做完了不代表任务系统记录了,这一步目前还得在网页端走一遍。
3. **Issue 质量比数量重要**:读完仓库再提一个贴合架构、带 PR 意向的建议,维护者更愿意理你,也对得起开源社区。
如果你也在刷华为云开发者成长任务,不妨把手边 Agent 用起来——把重复的点击交给工具,把思考留给找切入点。祝大家任务都打勾、积分拿到手软。
---
*本文由作者基于真实操作记录整理,相关命令已脱敏。*
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)