gcloud Skill:爲 AI Agent 約束 GCP 命令行操作

前言

讓 Agent 直接拼 gcloud 子命令、猜 flag,很容易寫出語法錯誤或誤刪資源;即便命令正確,無限制的 list 輸出也會佔滿上下文。常見做法是讓人工複覈每一條命令,或改用客戶端庫與 REST API,但運維與排障場景裏 CLI 仍是最直接的入口。

下面介紹 Google 在 google/skills 倉庫中維護的 gcloud Skill(metadata 版本 1.0.0,分類 CloudInfrastructureAndServices)。它面向 AI Agent,在規劃、生成、描述或執行 gcloud 相關任務時,提供語法校驗流程、執行護欄與數據精簡規則;官方說明明確:不要在編寫 Google Cloud 客戶端庫代碼或原始 REST/gRPC 請求時使用本 Skill。

這是什麼

gcloud 是一份 Agent Skill 文檔(SKILL.md),不是 Cloud SDK 安裝包。它規定 Agent 與 Google Cloud SDK(gcloud CLI)交互時的強制步驟與禁止項,目標是減少命令幻覺、避免破壞性自動執行、並控制返回數據量。

維護方與源碼路徑:https://github.com/google/skills/tree/main/skills/cloud/gcloud。

核心功能

葉子級語法校驗(強制前置)

Skill 要求:Agent 對 gcloud 命令、flag、取值與位置參數的先驗知識視爲易過時且易幻覺,在提出參數、執行命令或寫分步計劃之前,必須先對葉子子命令做校驗:

gcloud help compute instances create

要點如下:

  1. 父級 help(例如 gcloud help compute)不能替代葉子命令的校驗。
  2. 制定計劃時,Step 1 必須是 gcloud help <leaf_command>,再談 flag 或執行。
  3. 禁止用網頁搜索或外部文檔查 CLI 語法;gcloud help <leaf_command> 是語法方面的唯一權威來源。
  4. 用戶已給出的 flag(含 --project=<project_id>)在中間步驟中必須保留。

生成計劃時須使用官方規定的四步結構:

  • Step 1:gcloud help <leaf_command> 做語法校驗
  • Step 2:覈對必填/可選 flag,並確認是否支持 --dry-run 或 --validate-only
  • Step 3:若支持 dry-run,必須先給出帶 --dry-run 或 --validate-only 的調用
  • Step 4:提出正式命令;若命中「禁止自主執行」列表,須說明禁止自動執行並明確要求用戶授權

兩種執行方式

Agent 可通過兩種方式操作 GCP 資源:

  • 直接 CLI:在本地或自動化 shell 中執行 gcloud(安裝、認證與配置見 Skill 內 references/cli-usage.md)。
  • MCP:通過 Cloud CLI remote MCP 服務器的結構化工具 run_gcloud_command(見 references/mcp-usage.md)。

數據精簡(Mandatory)

任何 list 命令都必須帶上至少一種縮減手段:--limit、--filter 或 --format。

  • 投影:--format="json(key1, key2, ...)";進階語法可查 gcloud topic projections、gcloud topic formats。
  • 條數上限:--limit=N。
  • 過濾:--filter 在服務端收窄結果;模式匹配優先用 :,冒號右側不要加引號。
  • Schema 發現:不確定 JSON 字段路徑時,先拉一條樣本:
gcloud <GROUP> <RESOURCE> list --limit=1 --format=json

再根據結構構造 --format 或 --filter,避免無約束的大列表灌滿上下文。

執行約束

  • 每次只執行一條 gcloud 命令,不鏈式拼接。
  • 不使用命令替換、管道、重定向,便於人工審閱。
  • 所有執行類命令應帶 --quiet / -q,避免無 TTY 環境下卡在確認提示。
  • 禁止「裸」list(無 --limit、--filter、--format)。

項目與位置作用域

  • 資源查詢與變更命令應顯式帶上 --project=<PROJECT_ID>,不依賴當前默認配置。
  • 需要 region/zone/location 的命令必須顯式傳參,否則會觸發交互式選擇,與無交互運行衝突。
  • 位置未知時可先發現(並注意配合數據縮減),例如:
gcloud compute regions list --project=<PROJECT_ID>
gcloud compute zones list --project=<PROJECT_ID>
gcloud locations list --project=<PROJECT_ID>

安全護欄與禁止自主執行列表

破壞性操作(delete、update、remove 等)必須經用戶明確授權;Skill 列出不得自主執行的類別,包括但不限於:

  • IAM 策略、角色、綁定變更
  • 主動啓用 API(須用戶批准,避免意外計費)
  • gcloud * delete、gcloud billing *、gcloud organizations *、gcloud kms *
  • gcloud infra-manager deployments apply

若 help 中支持 --dry-run 或 --validate-only,必須先用於預覽變更。長耗時操作在支持時可考慮 --async,並按需輪詢 operation 狀態。

安裝與啓用

gcloud Skill 隨 google/skills 倉庫分發。官方安裝方式爲:

npx skills add google/skills

按提示選擇具體 Skill(可只選 gcloud)、目標 Agent 以及安裝範圍(項目或全局)。環境若無 npx,需先安裝 Node.js(含 npm/npx)。更新已安裝 Skill:

npx skills update

倉庫 README 未單獨列出 Cursor、Codex CLI、Claude Code 的差異步驟;統一通過 skills.sh 流程安裝。Skill 本體爲 Markdown 規則與引用文檔,Agent 側需已安裝並認證 Google Cloud SDK,CLI 路徑與 MCP 配置見 Skill 目錄下 references/。

典型用法

不熟悉服務時的發現流程

  1. 對目標葉子命令執行 gcloud help <leaf_command>。
  2. 若不知命令名,從 gcloud help 或 gcloud help <group> 遍歷命令樹。
  3. 用 --limit=1 --format=json 做 schema 發現。
  4. 後續 list/query 一律帶數據縮減 flag。

計劃模板示例(邏輯順序)

以創建 Compute Engine 實例爲例,Agent 應先校驗語法,再談參數與 dry-run(具體 flag 以 help 爲準):

gcloud help compute instances create

確認支持 dry-run 後,再提出帶 --dry-run 與 --quiet、--project、區域/zone 等用戶指定參數的預覽命令,最後才進入 Step 4 的正式提案或執行(且不在 denylist 上)。

速查表(來自官方 Skill)

任務 命令模板
發現 Schema gcloud <GROUP> <RESOURCE> list --limit=1 --format=json
過濾列表 gcloud <GROUP> <RESOURCE> list --filter="status:RUNNING"
指定列 gcloud <GROUP> <RESOURCE> list --format="json(name, id)"
學習 filter 語法 gcloud topic filters

自動化腳本方面,Skill 指向 gcloud CLI Scripting Guide。

適用場景與注意

適合:由 Agent 規劃或執行 GCP 運維、排障、資源查詢;需要統一「先 help、再 dry-run、再執行」流程的團隊;通過 MCP run_gcloud_command 做結構化調用的環境。

不適合:編寫 Cloud 客戶端庫、直接拼 REST/gRPC(應使用對應開發 Skill 或文檔)。

注意:規則偏嚴(單命令、無管道、禁止用搜索補語法),是爲了可審閱與安全;denylist 上的操作即使用戶意圖明確,Skill 仍要求顯式授權。列表與發現命令務必帶 --project 與數據縮減,否則易錯項目或撐爆上下文。

結尾

gcloud Skill 把「葉子 help 校驗、四步計劃、數據縮減、項目/位置顯式作用域、denylist 與 dry-run」寫成 Agent 可遵循的同一套規範,適合作爲讓 Agent 安全調用 GCP CLI 時的官方一手約束來源。源碼與完整規則見:https://github.com/google/skills/tree/main/skills/cloud/gcloud。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜