AI 程式設計教學中文版
官方教學中文版整合與自動化

自動化指令碼

Gemini CLI 自動化指令碼:管道輸入、批次生成文件、JSON 提取和 smart commit 這類 shell 封裝。

📖 本篇術語速查表
英文 / 縮寫中文一句話解釋
自動化指令碼automation用指令碼批次調 Gemini CLI。
可重複repeatable指令碼冪等、可復跑。
安全safety自動化守許可權邊界。

不想讀完?把下面這段提示詞丟給 AI 幫你跑完——幫你設計可靠的 Gemini CLI 自動化指令碼(冪等、安全)。

你是 Gemini CLI 自動化指令碼顧問。

【角色】
Gemini CLI 自動化指令碼顧問,按最小夠用、安全合規優先的原則給可落地方案,每條結論都落到能照做的步驟或示例,不停留在空泛建議。

【輸入】
- 要自動化的流程:___
- 執行頻率和觸發:___
- 是否會改程式碼 / 資料:___
- 輸出對接什麼:___
- 經驗水平:___

【工作流程】
1. 判斷適不適合指令碼自動化
2. 設計冪等可復跑的指令碼
3. 按最小給許可權
4. 設計輸出和失敗兜底
5. 給驗證

【輸出規範】
▌一、是否適合自動化
▌二、冪等指令碼設計
▌三、許可權最小化
▌四、兜底 + 驗證

【硬約束】
- 指令碼冪等、可復跑,不破壞現有
- 會改的限定範圍 + 審查
- 憑據走環境變數,失敗有兜底
- 不要替我臆測情況或編造不存在的設定,資訊不全先問清
- 不確定的設定或介面一律以官方文件為準,禁止照搬過時寫法

自動化指令碼的核心是把 Gemini CLI 當成 Unix pipeline 裡的一個處理器:從 stdin 讀上下文,從 stdout 輸出結果。

管道輸入

常見寫法是把記錄、diff 或命令輸出透過管道交給 Gemini CLI,例如 cat error.log | gemini -p "Explain why this failed",或 git diff | gemini -p "Write a concise commit message"

這種方式適合把已有命令輸出交給模型解釋、壓縮、分類或改寫。

不適合把未過濾的全量目錄直接 pipe 給模型。批次指令碼前要明確輸入白名單,例如只處理 .log.md.ts,並排除 .env、構建產物和大檔案。

輸入列表應先列印出來。dry run 階段先輸出將處理的檔案、預計輸出路徑和跳過原因,不要第一輪就呼叫模型。

批次生成文件

批次任務可以遍歷檔案,把每個檔案用 @file 注入上下文,再把 Gemini CLI 輸出重定向到對應 Markdown。生產指令碼要額外處理空輸出、失敗退出碼和配額重試。

落地時要加三件事:

  • 對輸入檔案做過濾,避免誤讀大檔案或敏感檔案。
  • 對輸出做格式檢查,避免空檔案或非預期文本。
  • 批次任務之間加間隔或重試,避免配額錯誤。
  • 寫正式檔案前先寫臨時檔案,確認非空且格式正確後再替換。

結構化 JSON

需要結構化結果時,使用 --output-format json,再用 jq -r '.response' 提取模型最終回答。

讓模型“返回 JSON”不等於結果一定可被解析。生產指令碼要加 jq 校驗和失敗分支。

Smart commit

Smart commit 的思路是讀取 git diff --staged,讓 Gemini CLI 輸出一條 Conventional Commit message,再交給人確認後提交。

更穩的版本應先人工確認 message,再提交。

自動化動作是否可自動寫入控制方式
總結記錄 / diff可以寫報告校驗非空和格式
生成 commit message不直接提交人工確認 message
批次生成文件可寫臨時檔案校驗後再替換
修改原始碼謹慎先計劃、diff、測試
釋出 / push不預設自動獨立審批

生產指令碼骨架

自動化指令碼至少包含這些防線:

set -euo pipefail

out="$(mktemp)"
if gemini --output-format json -p "Summarize @README.md" > "$out"; then
  jq -e '.response | length > 0' "$out" >/dev/null
else
  echo "gemini failed" >&2
  exit 1
fi

這段不是完整業務指令碼,但展示了生產思路:嚴格 shell、臨時輸出、退出碼檢查、JSON 校驗。不要把 gemini ... > final.md 作為批次生成的唯一保護。

驗收方式

自動化指令碼要跑 dry run。檢查輸入檔案列表、輸出檔案數量、空輸出、失敗記錄、重試策略和是否讀取了敏感路徑。Smart commit 這類會執行 Git 動作的封裝,必須保留人工確認,不要預設直接提交。

dry run 記錄應能復現輸入範圍。 便於複核。

生產指令碼還要能斷點續跑。批次任務中途失敗時,應該知道哪些檔案已完成、哪些失敗、哪些未開始,不能靠重新跑全量覆蓋結果。

輸出落地

批次寫檔案時,推薦輸出到臨時目錄,全部校驗透過後再移動到正式目錄。校驗至少包括非空、副檔名、frontmatter 或 JSON schema、重複檔名和敏感詞掃描。自動化越長,越不能只看最後一條命令的 exit code。

失敗要能重試,成功要可複核。

接下來去哪

官方來源

本頁目錄