自動化指令碼
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。
失敗要能重試,成功要可複核。
接下來去哪
GitHub Action
準備接儲存庫自動化時,繼續看 run-gemini-cli Action。
Headless mode
自動化指令碼的基礎仍然是 headless、退出碼和 JSON 解析。
Policy engine
指令碼里的工具許可權要用 policy 約束,不靠 prompt 口頭提醒。