作品展览馆发布不走 AI 对话:终端直发的完整路径与四个坑
上周把一个小工具发布到华为云开发者作品展览馆,领到了当月的 +200 积分。官方推荐的是"三步 AI 对话"流程:在 DevSpace 里新建会话、装 Skill、发发布口令。但这个流程有个软肋——AI 对话面板偶发起不来,「新建会话」点了没反应。这次我干脆绕开对话面板,把发布 Skill 的脚本直接在终端里跑了一遍,全程可控、可复现,把踩到的坑一并记录。
发布本质上是几个脚本
展览馆的发布 Skill(gitcode 上的 huawei-cloud-publish-work-to-gallery)拆开看就是一组 Node/Python 脚本:解析域名 ID、生成 STS 临时凭证、检查仓库门禁、合成封面、打包详情、调发布 API。AI 对话只是帮你串起这些调用。前提只有三个:一个能跑命令的终端(DevSpace 持久化版)、一个平台能拉到的公开 Git 仓库(实测 GitHub 服务端拉不到,必须 GitCode 或 Gitee)、一个能打开的作品页面。
坑一:CRLF 行尾让脚本秒挂
克隆完 Skill 仓库跑 preflight.sh(装 CJK 字体,约 2 分钟),直接报 line 14: $'\r': command not found 和 set: pipefail——仓库里的脚本带 Windows 换行符,bash 一行都跑不动。修法一行:
sed -i 's/\r$//' $SKILL_DIR/scripts/*.sh $SKILL_DIR/scripts/*.mjs $SKILL_DIR/scripts/*.py
转完再跑就正常了。mjs 和 py 本身对 CRLF 宽容,但顺手全转了避免后面踩。
坑二:命令替换被终端包装层吃掉
查 IAM 委托时用 --domain_id=$(cat /tmp/account-id),报了一个莫名其妙的 invalid control character in URL。换成字面量直接传就好了——AI Shell 的命令包装层对 $() 命令替换的处理有问题。同理,自己定义的 shell 函数里也别依赖命令替换,账号 ID 这类参数直接写死。
坑三:school 为空的活动不一定能投
选投稿活动时按"不限学校"筛出了「华为云AI产品实践」,发布却返回 400 GALLERY.CAMP.UNAVAILABLE 训练营不可投稿。列表里筛选只是第一步,能不能投要发了才知道。换成「闯关活动」重发,立即通过——幂等键不用换,被拒的请求没有产生任何副作用。
坑四:关机按钮没有文字
发布完该关机省核时(持久化版按使用扣赠送的 8000 核时额度)。顶栏只有三个图标按钮,DOM 里看 title 才分得清:title=删除 是销毁环境(点了数据就没了),title=关机 才是省核时的那个,旁边还有个「关机策略设置」。靠图标形状猜是猜不出来的,建议悬停看一眼再点。
成功信号长什么样
发布脚本的输出里四行齐备就是终态:
#status=201
workId=0077058c51c00000
workUrl=https://gallery.developer.huaweicloud.com/gallery/0077058c51c00000
reward=success value=200 msg=成功
最后清理凭证文件、杀掉静态服务、给环境关机。积分到账有延迟,任务卡翻转慢半拍,但 reward=success value=200 这行出来就可以收工了。
- 点赞
- 收藏
- 关注作者
评论(0)