inspired-by-atmosphere/ops-troubleshooting-skills/cloud-dev-env-automation
Claude Code and agent skill by inspired-by-atmosphere/ops-troubleshooting-skills
Trust tier 3
- community
Source check pending
Checking that the SKILL.md file is still in the repository.
Use when automating a metered cloud dev environment. GPU/NPU 抢位、启停、跑流水线、用完关机。
Install
npx vskill@latest install inspired-by-atmosphere/ops-troubleshooting-skills/cloud-dev-env-automationSKILL.md
配额受限云开发环境的自动化(抢位 → 跑完 → 拉回 → 关机)
When to Use
- 要在按卡时/核时计费、资源稀缺要抢的厂商云开发环境上干活(昇腾 CANNLab、云 GPU/Notebook/DSW 类)。
- 需求形如「抢到就跑、跑完拉回、用完关机」「无人值守把这一轮实验跑完」。
- 要给这类环境配「抢位 cron / 长流水线 / 结果播报 / 变化盯梢」四件套。
不适用:自有服务器/家庭主机运维(走 selfhosted-server-ops、home-server-deployment);纯接口逆向手法(走 spa-api-recon)。平台专有接口与状态码记录见 references/。
铁律(比流程更重要)
- 「受理」≠「分到」。 创建/启动接口回
200+PENDING只代表任务进队列;平台随后才真正分配资源,分不到就异步落到错误态。唯一可信的成功判据 = 终态为「运行中」且资源标识字段非空(如status=RUNNING且npu_instance_id非 null)。只判 HTTP 码会把失败当成功,等到跑一半才发现根本没卡。 - 用「已关机」态探测可用性,不要反复建/删实例。 关机态通常不计费;启动请求本身就是最便宜的可用性探针:资源不足回业务错误(如
400 当前资源不足,请稍后重试),有空位才回 200。抢位循环 = 发这一个请求 → 验证终态 → 没分到就退回关机态等下一轮。 - 结果先落持久盘,本地校验通过才关机。 拉回后本地确认产物非空(文件数 + 至少一个 >1KB 的日志/CSV),才发关机请求;校验不过不关机,留待人工。「卡时烧了、结果没拉回」比多花一卡时严重得多。
- 长任务绝不挂在 cron 里。 定时器只做「触发」和「播报」两件短事;干活的长流程用脱离进程拉起(Windows
DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP,POSIX setsid/nohup),自己写日志与结果 JSON。 - 跑完即关。 平台的空闲自动关机(如 30 分钟无活动)是兜底、不是主力策略;开跑前先算清这一轮要花多少卡时。
流程
0. 先摸清接口(不要猜端点)
按 spa-api-recon 走:专用登录浏览器登录一次 + CDP 录网络 + grep 客户端/前端 JS。三条要点直接决定成败:
- 会话令牌直接从 cookie 里取出来当
Authorization: Bearer打同一网关(实测省掉整套 OAuth 授权流)。 - 网关回应用层错误(带业务
error_code)说明路径与鉴权都对,只差前置条件(如实例未运行)——此时继续猜路径是走错方向。 - 网页按钮只拉起深链(
vscode://厂商.插件/...)时,真接口在已装的客户端插件里,不在网页 JS 里。
1. 抢位脚本(cron 短任务,静默)
每 N 分钟一次,抢到才输出(no_agent 空 stdout = 不投递,天然防打扰):
- 只认终态(铁律 1)。
- 抢到后停止继续抢(状态位):否则平台空闲自动关机后脚本会反复重占、空烧卡时;要重新抢时用
--reset显式恢复。
2. 流水线(脱离进程,带锁)
固定顺序:取连接凭据 → 上传工程 → 远端跑(带分钟预算)→ 拉回 → 本地校验 → 关机 → 写结果 JSON。
- 锁文件防重入:cron 每 N 分钟还会再喊一次,有活在跑就直接退。
- 每步成败写进结果 JSON(
steps={"ssh":"ok","run":"fail",...}),播报时一并给出——失败能一眼定位卡在哪步。 - 远端编排脚本要自己带 deadline(收口分钟预算),别让它无限跑。
3. 结果播报(另一个 cron 短任务)
读结果 JSON + 指纹去重(同一个结果只播报一次),没有新结果就空 stdout。 分开的理由:长任务要跑几十分钟以上,定时器里等不起;短任务每 10 分钟看一眼结果文件即可。
4. 变化驱动的盯梢(只在数据变了才叫醒 agent)
盯榜/盯公告用 cron 的 monitor(变化探测),不要用定时摘要——否则天天发「没变化」。
- 探测脚本输出必须完全确定:不带时间戳、不带随机序、数值固定小数位。上线前连跑两次 diff 一遍;否则每次 tick 都被判「变了」,等于天天吵人。
- 只放真正要紧的几个数:别人的名次微动不该触发唤醒(粗粒度 = 低打扰)。
- 被唤醒之后才去查规则/公告/对手动态,并强制每条带可查来源。
Pitfalls
- 计费口径:错误态/关机态通常不计费(用「已用时长」字段对账),但开着就计费——跑完立刻关,别把「不计费」当成可以放任不管。
- 连接凭据类接口在非运行态回业务错误(如「开发环境实例未运行」)是预期,不是接口错——先把实例启起来再取。
- 实例标识一律用内部 key(存进状态文件复用);平台显示名可能变、可能重名。
- 抢到卡那一刻起开始计费:播报里必须写清这一点,并给出「多久不操作会被平台自动关机」。
- 创建接口往往要一整套 code(goods/spec/template/image)——从平台自己的「创建配置」接口取,别硬编。
支持文件
references/cannlab-huawei.md— 华为 CANNLab(昇腾 910B3)实测:控制面接口、鉴权、抢位/启停/连接凭据端点、状态码语义、计费口径、配套榜单接口。
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/cloud-dev-env-automation/SKILL.md
Popularity
- 7-day trend score
- 5
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/inspired-by-atmosphere/ops-troubleshooting-skills/cloud-dev-env-automation)