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

自動化指令碼

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

自動化指令碼的核心是把 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。

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

接下來去哪

官方來源

本頁目錄