Hub Google AI CLI 教學

第 5 篇 大師 · 第 15 章

成本、quota、token caching 與模型路由

AI agent 的成本不是只有「一次回答多少錢」。在 Gemini CLI、Gemini API 或 Vertex AI 上,真正要管理的是輸入、輸出、thinking tokens、context caching、rate limit、重試、批次延遲、企業帳務與人為濫用。本章建立一套不依賴固定價格的治理框架。

先確認你符合的是哪一種身分

Google 在 2026-05-19 的官方公告中說明,自 2026-06-18 起,開源版 Gemini CLI 將對「免費層、Google AI Pro、Google AI Ultra、個人版 Gemini Code Assist、透過 Gemini Code Assist for GitHub 的組織使用者」停止 serving requests,並轉往新的閉源 Antigravity CLI;本文未逐一驗證各帳號的實際當前可用性,第 0 章有完整的判斷流程。本章談的配額數字與治理方法,鎖定的是官方公告裡仍可繼續使用開源 Gemini CLI 的身分:Gemini Code Assist Standard/Enterprise 企業授權透過 Google Cloud 的 Gemini Code Assist for GitHub,以及自己接付費 Gemini API key 或 Gemini Enterprise Agent Platform API key 的使用者(企業 Vertex AI 路線另見第 3 章 3.5 節與本章 15.7 節)。如果你屬於公告所列的轉移對象,本章多數配額數字未必適用;請先核對目前的官方說明與自身 route,再參考第 0 章與附錄 B。

不要把價格與限制寫死

Gemini API、Vertex AI、Gemini Enterprise、CLI/Antigravity 的模型、價格、quota、rate limit 與可用功能都會變。建立預算或文件時,請連到官方 pricing、rate-limit、caching 與產品文件,發布前再查一次目前頁面。

15.0 先回答:更新到 Gemini 3.6 後,使用方法有沒有改變?

答案不是一句「有」或「沒有」,而是看你站在哪個入口。Gemini 3.6 Flash 在 2026-07-21 發布,API 文件截至 2026-07-23 已標為 GA/可投入 production;但模型升級、產品入口換線與 API schema 遷移是三件不同的事。下面的判斷以 2026-07-26 查證結果為準,固定價格也只代表該日期。

你用的入口3.6 現況要不要改操作
Gemini App官方發布文確認 3.6 已提供給 Gemini App;精確 UI 標籤、方案 rollout 與全域預設未在官方文件確認。官方一般聊天不用改。照原本的對話方式使用;不要把 App 的模型名稱當成 API model ID。
Google Antigravity 2.0(standalone app)官方發布文確認 3.6 可用;standalone app 是否把 3.6 當預設,查到的官方資料沒有明說。通常不用改,但要鎖定版本就用 model selector。這裡的選模器不是 Gemini API 的 request body。
Antigravity CLI(agyAntigravity 共享 models 頁的 CLI 入口列出 Gemini 3.6 Flash 的 Low/Medium/High;CLI-specific availability、default 與全帳號 rollout 仍為 UNVERIFIED通常不用改;若目前版本提供 /model--model,再用它明確鎖定。不要把 API 的取樣欄位直接貼進 CLI;CLI 也不等於開源 gemini
Antigravity managed agent官方 Gemini API 文件明載 antigravity-preview-05-2026 的預設模型是 gemini-3.6-flash;建立 agent 時可用 agent_config.model 改選。使用預設不用改。若需要固定 3.5 或 Flash-Lite,才改 agent 設定;這不是桌面 Antigravity 的 model selector。
開源 Gemini CLI(google-gemini/gemini-cli官方 model 文件仍列 Auto/Manual 的 3.x Preview/2.5 選擇方式;截至 2026-07-26 沒有找到正式 3.6 選擇/release 證據。3.6 CLI 支援:UNVERIFIED。不要照 API 教學硬下 --model gemini-3.6-flash先用目前官方 CLI 文件、/modelgemini --version 驗證;個人免費路線另受 2026-06-18 Antigravity 過渡影響。
Google AI Studio官方 3.6 model page 提供 AI Studio 試用;Run settings 的預設與 UI 細節未確認。Playground 試用不用改。若按 Get code 轉成 API 程式,下面的 API 遷移規則就適用。
Gemini API模型頁與 Interactions supported models 都列 3.6;正式 API model ID 是 gemini-3.6-flashAPI 開發者要改相容性檢查。模型 ID、thinking、取樣參數、prefilled turn、function response 與 Interactions schema 分開審核。
Vertex AI directVertex direct 的 3.6 model availability、region、quota 與 default 依 Cloud 文件;不能直接沿用 Gemini API 的 product default。部署前分開查證。依 endpoint、region、IAM、DSQ/PT 與 Cloud pricing 驗證。
Gemini Enterprise Agent Platform官方 Enterprise Agent Platform 有 3.6 文件;agent default、region、IAM 與價格是企業 surface 自己的一套。不要照 AI Studio/API 的數字直接部署。依 Agent Platform 文件與合約驗證。
Gemini Enterprise app/企業合約企業 app 的 UI、model default、方案與合約價格另行定義;不能由 Agent Platform 或 Antigravity 的 default 推論。先問清楚產品與合約。不要把 app 使用體驗當 API/CLI 行為。

官方 入口證據:Gemini 3.6 發布文Antigravity 共享 models 頁(CLI 入口)Antigravity Agent APIGemini API latest-model開源 Gemini CLI model selection。不要以「同樣都叫 Gemini」抹平這些 surface。

15.1 成本從哪些地方來

成本通常由幾個部分組成:送進模型的 input tokens、模型產生的 output tokens、模型內部推理可能使用的 thinking tokens、可重用上下文的 cache 讀寫與儲存、影像/音訊/影片等多模態處理、工具呼叫造成的外部服務成本,以及重試與失敗請求的浪費。不同產品路線的計費口徑可能不同;下表只記錄 Gemini API pricing page 在 2026-07-26 查證的 standard paid tier checkpoint,不代表 Gemini App 訂閱、Antigravity 額度、Vertex direct 或企業合約價格。

成本面向常見來源治理方式
Inputprompt、系統規則、檔案內容、歷史對話、工具回傳。縮小上下文、摘要長 log、只附必要檔案。
Output回答、程式碼、測試報告、JSON 結果。要求格式與長度,分段產出,避免無限制草稿。
Thinking高推理模型為了解題消耗的內部推理量。只在高風險任務使用,低風險任務改用較快模型。
Caching固定規格、長文件、共用程式碼脈絡。重用穩定前綴,同時注意 cache 儲存與有效期成本。
Retries429、5xx、網路中斷、格式不合法後重送。指數退避、idempotency、重試上限與人工停損。

2026-07-26 Gemini API 價格 checkpoint

GA 模型Input/1M tokensOutput/1M tokens(含 thinking)Context cache input/1M
gemini-3.6-flashUS$1.50US$7.50US$0.15
gemini-3.5-flash-liteUS$0.30US$2.50US$0.03

同一 pricing page 另列 Batch/Flex/Priority 與 cache storage 價格;不要把這張 standard 表拿去估算 App 或 Antigravity 的方案額度。輸出價格包含 thinking tokens,實際帳單仍取決於輸入長度、thinking level、工具回合與所在 tier。官方 pricing 更新後,預算文件要一起記錄查證日期。

15.2 Token:input、output、thinking

input tokens 是你交給模型的上下文,包含任務說明、規則、程式碼片段與工具輸出;output tokens 是模型回傳的文字或結構化資料;thinking tokens 則是某些模型在推理時額外使用的內部計算量。對開發工作流來說,最容易爆量的是反覆貼完整檔案、完整 stack trace、完整測試輸出,或讓 agent 在沒有邊界的情況下「自己研究整個專案」。

低成本 prompt 範本:
目標:修正 tests/auth/session.test.ts 的一個失敗案例。
上下文:只讀 src/auth/session.ts、tests/auth/session.test.ts。
限制:不要掃全 repo;不要重寫 public API;先說明預估影響再改。
輸出:列出修改檔案、測試命令、剩餘風險,控制在 10 行內。

值得特別記住的一點:thinking tokens 不是「模型內部偷偷用掉、不會出現在帳單上」的東西。開啟 thinking 的模型,計費方式是「一般 output tokens + thinking tokens」一起算,而且 thinking tokens 是用跟一般 output tokens 相同的單價計費——不是打折的內部運算,也不是另一種更便宜的 token 種類。一個回答看起來只有三行字,如果模型在背後想了很久,帳單可能跟一個真的輸出很長內容的請求差不多。

模型(GA)ContextMax outputThinking 預設Thinking levels
gemini-3.6-flash1,048,576(1M)65,536(64K)mediumminimallowmediumhigh
gemini-3.5-flash-lite1,048,576(1M)65,536(64K)minimalminimallowmediumhigh

能力與 benchmark 宣稱:先看證據標籤(2026-07-21/23)

官方觀察/benchmark Google 的 latest-model guide 觀察 3.6 比 3.5 Flash 少 reasoning step、對話回合、tool call 與 execution loop,且較常先做程式化檢查;Google 發布文另列 DeepSWE 49% vs 37%、MLE-Bench 63.9% vs 49.7%、OSWorld-Verified 83.0% vs 78.4%,以及部分工作流最多少 65% output tokens。這些是 Google 引述的 benchmark/第三方分析,不是本站重測或所有任務保證;UI styling 人評偏好較早模型的限制,仍要用明確設計規格與人工驗收補上。

3.x 的 thinking 控制改用 thinking_levelminimal 是偏速度,不保證完全關閉 thinking。這不是全域欄位改名:GenerateContent 的 2.5 仍有 thinking_budgetthinkingBudget,3.x 才按各 surface 使用 thinking_levelthinkingLevel;同一 request 不要混送兩套欄位。模型專屬遷移文件對不相容組合有 HTTP 400 警告,但確切行為仍取決於模型與 endpoint(UNVERIFIED)。批次分類通常用 Flash-Lite 的 minimal,需要自主 subagent、工具回合或複雜 coding 再考慮 mediumhigh;先用實際 token 與錯誤率量測,不要只看模型名字猜成本。

15.2A 3.6 API 遷移:舊寫法與新寫法

官方遷移規則 從 Gemini 3.6 Flash/3.5 Flash-Lite 起,這些規則也會影響後續模型:把 model ID 改成正式 GA ID;移除 temperaturetop_ptop_k;用字串 enum thinking_level 取代 thinking_budget;移除 Gemini 3.x 不支援的 candidate_count;不要以 model turn 預填答案;多輪 GenerateContent 要保留完整且未改寫的 history 與 thought signatures;Interactions 多輪可用 previous_interaction_id。目前取樣參數可能只是被忽略,但未來模型可能直接回 HTTP 400,現在就移除最穩。

舊寫法3.6 建議寫法適用範圍
temperaturetop_ptop_k刪除;用 system instruction 寫清楚格式、限制與語氣3.6/3.5 Flash-Lite API
thinking_budgetthinkingBudget: 8192SDK 用 thinking_level="medium";REST 用 thinkingLevel: "MEDIUM";不要兩者同送3.x API;Interactions 另用 generation_config.thinking_level
candidate_count: 1刪除Gemini 3.x
最後一個 role: "model" 預填「答案開頭」改用 system_instruction/structured outputGenerateContent/Interactions
Interactions 的 outputs[-1]SDK 讀 output_text;raw response 讀 steps2026-06-08 後的新 Interactions schema
# Python:google-genai >= 2.3.0,Interactions API
from google import genai

client = genai.Client()
interaction = client.interactions.create(
    model="gemini-3.6-flash",
    input="只用三點說明這個 diff 的風險,繁體中文。",
    system_instruction="先列證據,再列風險;不要編造未出現在輸入裡的資訊。",
)
print(interaction.output_text)

# GenerateContent 仍支援;REST 的 thinkingConfig 使用 camelCase
# generationConfig: {"thinkingConfig": {"thinkingLevel": "MEDIUM"}}
# 不要再放 temperature / topP / topK / candidateCount。
# REST:GenerateContent(仍支援,模型 ID 仍是正式 GA ID)
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.6-flash:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{"parts": [{"text": "只用三點說明這個 diff 的風險。"}]}],
    "generationConfig": {"thinkingConfig": {"thinkingLevel": "MEDIUM"}}
  }'

Function calling 要分 surface:Interactions 的 function result 以 call_id 對回前一個 call,並帶 name;GenerateContent 的詳細官方 REST 範例則是 functionResponse: {"name": "…", "id": "call_id", "response": {…}}。不要把 call_id 直接當成 GenerateContent JSON 欄位,也不要漏掉 name/對應 ID。latest-model checklist 對 GenerateContent 使用 call_id 的文字,和詳細 GenerateContent 範例的 id 不一致;此處依 wire example 分開處理,該文件衝突標為 UNVERIFIED。若使用 thought signatures,保留 SDK 回傳的完整 model content,不要自行重建或刪掉 signature。

previous_interaction_id 只屬 Interactions 的 server-side state,不是 GenerateContent 欄位;若使用 stateful 對話可沿用它,若 store=false 或採 stateless,就自行保存並原樣重送完整 steps。若你早已採用 Interactions API,還要另外檢查 2026-06-08 schema breaking change:outputs 改為 stepsresponse_mime_type 移除並改用 polymorphic response_format、streaming event 也改名。新專案可直接採目前 SDK;既有程式先按Interactions breaking changes guide逐項對照。Interactions 已 GA 且是新專案建議入口,但 GenerateContent 仍完整支援,不必為了 3.6 發布就盲目重寫 API 類型。

3.6 API 遷移 checklist

  1. 先決定使用 GenerateContent 或 Interactions,勿混用兩套 request/response schema。
  2. 把 model ID 固定為正式的 gemini-3.6-flashgemini-3.5-flash-lite,並記錄查證日期。
  3. 移除 temperaturetop_ptop_kcandidate_count;不要只因目前被忽略就保留。
  4. 把 3.x 的 thinking 設定改成該 surface 的 thinkingLevelthinking_level;不要和舊 thinkingBudgetthinking_budget 同送。
  5. 移除最後的非空 prefilled model turn,改用 system instruction 或 structured output。
  6. GenerateContent 保留完整 thought signatures;function response 用 matching idname,Interactions 用 call_idname
  7. 只有 Interactions 使用 previous_interaction_id;stateless 模式原樣保存/重送 steps
  8. 若是舊 Interactions schema,檢查 outputsstepsresponse_format 與 streaming event;用小測試確認錯誤 JSON 與輸出。

15.3 Context caching 的概念

context caching 的核心想法是:把多次請求都會用到的大段穩定內容先放進 cache,例如產品規格、長篇政策、SDK 文件摘要、固定資料結構或大型 code context。後續請求引用 cache,可以少重送相同 input,降低延遲與重複處理。不過 cache 不是免費魔法;你要確認建立 cache、讀取 cache、保存 cache 與過期策略在目前產品路線上的實際成本。

適合 caching 的內容要穩定、常被重用、體積夠大,而且不含短期秘密。若每次任務都改 prompt 前綴、塞入不同 log,或 cache 內含會快速過期的資料,反而可能增加複雜度。把 cache key、來源版本、建立時間、過期時間與資料分類記錄下來,才有辦法追蹤成本與刪除不該保存的內容。

官方把 context caching 分成兩種,運作方式差蠻多,值得先分清楚。Implicit caching(隱含快取)是 Gemini 2.5 以後的模型預設就會自動做的事:你不用寫任何額外程式碼或呼叫任何 API,只要這次請求的開頭部分剛好跟前一次重複,系統偵測到就自動命中、自動打折,命中與否你甚至不一定會注意到。Explicit caching(明確快取)則是你主動宣告「這段內容我要快取」,指定一個存活時間(TTL),之後多次請求引用同一個 cache;除了讀取有折扣,還要另外付一筆儲存費——官方範例曾用大約每百萬 token 每小時幾塊美金的量級來說明,實際費率請直接查當下的 pricing 頁,不要拿這個數字去編預算。

快取折扣與儲存費會依模型、API product surface、tier 與 pricing page 改變;不要再把舊版「Gemini 2.5 約九折、2.0 約七五折」當成 3.6 的預算常數。對 3.6/3.5 Flash-Lite,直接抄當日 pricing page 的 cache input 與 storage 行,不要只用世代名稱推算。

Cache storage 也要納入預算

評估 caching 時,不只看「這次 prompt 變短」。也要看 cache 保存多久、是否有儲存費、是否跨模型或產品可用、是否能刪除、是否符合資料治理與合規要求。explicit caching 才會產生儲存費,implicit caching 不會——搞清楚你用的是哪一種,預算才不會估錯方向。

用 Google 帳號登入的 OAuth 使用者,完全用不到 caching

這是一個很容易讓人誤會成 bug、其實是刻意設計限制的狀況:如果你是用 Google 帳號登入(也就是 OAuth,走 Code Assist API 那條路),Gemini CLI 裡的快取重用完全不會生效,不管 implicit 還是 explicit 都一樣。原因寫在官方 FAQ 裡,但很容易被忽略——Code Assist API 這條路徑本身就不支援建立 cached content,快取只在 API key 或 Vertex AI 認證下才會運作。很多人打開 /stats,看不到任何 cache 相關的節省數字,第一反應是懷疑自己是不是設定漏了什麼,其實答案很單純:認證方式從一開始就不支援這件事,不是你設定錯。

上一段提到「內容要穩定」,具體怎麼安排順序也有講究:cache 命中的判斷方式是看這次請求開頭跟被快取的內容能對上多長一段,只要中間任何一個字元變了,快取就從那個變動點開始整段失效,後面即使內容一樣也救不回來。實務上比較有效的做法,是把「幾乎不會變」的大宗內容——像 GEMINI.md、專案規範、長篇參考檔案——固定放在對話最前面,把「每次都不一樣」的臨時提問放在最後面;隨手把一條新指示插進中間,等於把整段前綴都作廢重算一次。

15.4 Batch、flex、priority 的取捨

同一批工作不一定都要即時完成。可延遲的摘要、分類、文件補標、測試報告整理,通常適合 batch 或較彈性的處理路徑;互動式 CLI 修 bug、PR review blocking comment、事故排查,通常需要較低延遲或較高優先權。不同產品可能用 batch、flex、priority、provisioned throughput 或其他名詞表達類似取捨,請以當前官方文件為準。

模式適合任務主要取捨
互動式CLI pair programming、debug、逐步 review。重視延遲;要控制上下文與回合數。
Batch大量文件摘要、離線分類、報表生成。可等待;通常換取更好的吞吐或成本條件。
Flex非緊急但不想完全離線的背景任務。接受變動延遲;適合排隊與重試。
Priority客戶-facing、SLO 嚴格、事故期間任務。保留給真正高價值路徑,並加上用量告警。

以 Gemini API 的 Batch Mode 為例,具體折扣是所有模型的 input/output tokens 都打 5 折,交換條件是 SLA 訂在 24 小時內完成(實務上常常更快,只是官方不保證)。適合丟給 batch 的,是那種「翻譯一批檔案」「跑一輪分類」「資料遷移腳本」這類不急著看結果、可以離線跑完再回頭收成果的工作。有一點容易被忽略:快取折扣(最多省九成)跟 batch 折扣(省五成)不會疊加——同一個請求如果兩邊條件都符合,系統只算快取折扣,不會兩個一起扣。所以省錢的思考順序應該是「先確認能不能快取,再考慮要不要額外送 batch」,而不是兩個一起衝,以為省下來的錢會加倍。

如果你是在 Vertex AI 上跑,吞吐量還有另一組跟本節取捨很像、但機制完全不同的概念:Dynamic Shared Quota(DSQ)Provisioned Throughput(PT)。新模型預設走的是 DSQ——把隨用隨付(PayGo)的算力容量,在所有客戶之間動態分配,你不用申請固定配額,但尖峰時段可能被其他人的流量排擠。PT 則是企業級的「買下保證吞吐量」訂閱制,用一種叫 GSU(Generative AI Scale Unit)的單位計價,可以選一週、一個月、三個月或一年的承諾期。

PT 買的是排程優先權,不是更便宜的單價

Provisioned Throughput 不會讓你的單價變低,它買的是「排在 DSQ 前面」的保證優先權。如果你的痛點是「太貴」,換 PT 不會解決;如果痛點是「尖峰時段常常被排擠、延遲飆高」,PT 才對症。動工前先分清楚自己是哪一種痛,再決定要不要簽下承諾期。

15.5 Quota 與 rate limit

quota 是一段時間內可用的總量或資源上限,rate limit 則是單位時間內的請求、token 或並行限制。CLI 使用者最常遇到的是 429、排隊變慢、請求被拒,或 CI 同時跑多個 job 時把額度用完。處理方式不是盲目重試,而是先判斷限制種類:每分鐘請求數、每分鐘 token、每日額度、地區限制、模型限制,或帳務尚未開通。

不要把轉型前的固定 RPD 當成 2026-07-26 的承諾

2026-06-18 的個人路線轉型 Antigravity CLI,讓 Gemini CLI、Antigravity、Gemini API、Vertex/Enterprise 的 quota 不能再放在同一張表裡比較;免費 API key 是否受「免費層」公告的每一種細節影響,官方沒有在同一頁逐一拆解。這裡不再把舊 RPD 數字當現行承諾:請依你的 project、模型、tier 與產品入口,回頭查官方 rate-limits 頁與產品方案文件。

入口/身分本章處理方式不要做的推論
Gemini API key依模型、project、tier 與區域查 rate limit;用實際錯誤與 dashboard 量測。不能把 App/CLI 的每日額度套到 API。
Vertex AI direct依 Cloud project、IAM、區域、DSQ/PT 與 Cloud pricing 處理。不能把 AI Studio pricing 直接當成 Vertex contract。
Gemini Enterprise Agent Platform依 Agent Platform endpoint、IAM、region、quota 與企業價格頁處理。不能把 Gemini API pricing 直接當成 Agent Platform 合約。
Gemini Enterprise app/企業合約依 app rollout、方案與合約文件處理。不能把 app default 或 seat quota 套到 API/CLI。
Gemini App/Antigravity 2.0/Antigravity CLI依方案、model selector、產品內 quota 與當前官方說明處理。不能把 managed agent 的 3.6 default 當成桌面/CLI default。
開源 Gemini CLI用目前官方 docs、/modelgemini --version 驗證可用模型與帳號路線。不能由 API 的 gemini-3.6-flash 可用推論 CLI 已支援。

無論哪條路線,都不要只看 request 次數:1M context、64K output 是模型上限,不等於方案允許你每次用滿;實際成本與限流還會受 token、thinking、工具呼叫、並行與 cache 影響。把查證日期、project、model ID、tier 與錯誤 JSON 一起記錄,才有可重現的 quota 報告。

配額到底幾點重置:官方說法跟實測不一樣

官方文件寫的是「太平洋時間午夜重置」,聽起來像個固定的整點鬧鐘。但社群這幾年在 GitHub 上累積了不少實測回報(issue #2981、#22643、#23318),描述的行為比較接近「以你當天第一次呼叫的時間起算,24 小時之後才重置」的滾動視窗——跟「固定在太平洋午夜歸零」是兩回事,兩者常常對不上,也因此才有一長串「我的配額為什麼還沒重置」的困惑回報。社群 也有人提過 feature request,希望能讓重置時間變成可自訂的固定時刻,但查證當下這個提案還沒有被實作。實務上的建議很簡單:不要預期整點準時歸零,把它當成大約 24 小時的滾動視窗來抓,真正的確切行為以你當下的官方頁面或 gemini --help 為準。

429/Quota runbook:
1. 讀錯誤訊息,分辨是 rate limit、quota exhausted、billing、region 或 auth。
2. 停止無上限重試;把任務排隊或降級為較小 prompt。
3. 對可重試請求使用 exponential backoff + jitter。
4. 對非互動任務改用 batch/flex 或降低並行數。
5. 對長期需求申請 quota、調整模型路由,或移到企業/Vertex 計費治理。

15.6 依任務風險與延遲做模型路由

模型路由的目標不是永遠用最強模型,而是把任務送到「足夠可靠、足夠快、成本可接受」的模型。低風險任務如命名、短摘要、格式轉換,可以用較快較省的模型;中風險任務如單檔測試修復,要限制可改路徑並要求驗證;高風險任務如付款、資安、資料遷移、跨模組重構,才使用較強推理模型、人工審核與更完整測試。

外部 agent 榜單只作定位:Arena snapshot(2026-07-21)

Arena 官方頁 Agent Arena 是以 Agent Mode 真實使用 session 做的動態 agent leaderboard;公開 snapshot payload 的 lastUpdated2026-07-21、1,242,857 sessions、38 models,我在 2026-07-26 擷取。頁面 metadata 的 dateModified 另為 2026-07-26;它是頁面更新訊息,不等於固定資料截止日。它比較的是「在工具編排任務裡的 agent 表現訊號」,不是模型綜合智力、價格、CLI 體驗或所有工作負載的絕對排行。下表保留完整前十,再列出 snapshot 中所有 Google 相關列;表內 ±avgScore.ci 轉成百分比後的 95% confidence interval,正負號也依 avgScore.value 保留。

家族/入口標籤Arena 榜內實際名稱Rank(raw/spread)Net Improvement(95% CI)Sessions新手怎麼讀
ClaudeClaude Fable 5 (High)1/1–4+12.72% ± 2.00%23,549raw 榜首;spread 顯示區間重疊,不是穩定絕對第一。
OpenAIGPT 5.6 Sol (xHigh)2/1–8+10.12% ± 1.69%15,991Arena 顯示的是 GPT 名稱;頁面沒有把它標成 Codex。
ClaudeClaude Opus 4.8 (Thinking)3/1–9+9.75% ± 1.39%34,147這是榜內具名 agent model variant。
MoonshotKimi K34/1–9+9.71% ± 1.52%11,490前十的其他模型;不能省略成只有三個家族。
ClaudeClaude Sonnet 5 (High)5/2–12+8.66% ± 1.89%24,359榜內 variant,不等於所有 Claude Code 入口。
OpenAIGPT 5.5 (xHigh)6/2–10+8.41% ± 0.87%40,667不要把 GPT row 直接等同某個 Codex CLI 預設。
ClaudeClaude Opus 4.7 (Thinking)7/2–12+7.94% ± 1.24%35,151是榜內具名 thinking variant。
ClaudeClaude Opus 4.78/2–12+7.67% ± 1.25%35,672與上一列是不同榜內列,不能合併。
OpenAIGPT 5.5 (High)9/3–12+7.61% ± 0.81%65,859仍是 Arena 的 GPT 名稱,不是 Codex 名稱。
Z.aiGLM 5.2 (Max)10/6–14+6.50% ± 1.00%38,221前十的其他模型。
GoogleGemini 3.1 Pro Preview20/18–26−0.47% ± 0.68%67,658榜內有這個實際名稱,但不是 Gemini 3.6。
GoogleGemini 3.5 Flash (High)23/19–26−1.03% ± 0.80%45,992負號來自 raw avgScore.value;不要被 UI 純文字擷取漏掉。
GoogleGemini 3.5 Flash (Medium)31/30–34−6.80% ± 1.69%8,641另一個 thinking variant,不能合併成單一 3.5 分數。
GoogleGemini 3 Flash34/31–34−8.65% ± 0.76%68,372也是榜內實際列,不代表 3.6。
GoogleGemma 4 31B37/35–38−14.51% ± 1.60%54,817Google 相關列,但不是 Gemini 3.x。
GoogleGemini 3.6 Flash未列出本 snapshot 沒有這個名稱;不可臆測排名或分數。
Codex未列出 Codex model 名稱未列出只能報告頁面上的 OpenAI GPT entries,不能把它們改名成 Codex。

方法上的邊界很重要:Arena 的官方方法說它從真實 Agent Mode session 讀取 confirmed success、praise vs complaint、steerability、bash recovery、tool hallucination 等訊號,並以 causal tracing 估計 orchestrator model 的 net improvement;目前榜單主要評估「主 orchestrator」,不是把每個 API base model 在相同 CLI harness 裡重跑一次。Rank 的第一個數字是 raw rank;後面的 spread 是依各模型 CI 重疊推導的可能區間,不能讀成穩定嚴格先後。這使它適合回答「這個入口的 agent 編排訊號如何」,不適合公平外推成 Gemini API、Gemini CLI、Antigravity、Codex CLI、Claude Code 之間的全產品勝負。動態榜單要定期重查;下一次更新只應替換有新日期的 snapshot,不要覆蓋本次歷史紀錄。

任務等級例子路由策略
低風險摘要、翻譯、commit message、簡單格式化。快速模型、短輸出、可批次。
中風險單檔 bug fix、測試補強、文件同步程式碼。中階模型、限定路徑、要求 diff 與測試。
高風險付款、身份驗證、權限、資料刪除、schema migration。強推理模型、人工 review、審計 log、禁止自動 merge。
即時路徑互動 debug、事故排查、客服升級。低延遲優先;必要時犧牲批次折扣。

知道「該送到哪一級」之後,還有一層更基本的問題:你使用的入口是否真的支援這個 model ID。Gemini API 的正式 ID、Antigravity 的 selector、開源 Gemini CLI 的 Auto/Manual 不是同一套解析器。就開源 Gemini CLI 而言,官方文件目前仍描述下面這條設定優先順序;它不能拿來證明 3.6 已進入該 CLI:

  1. --model 命令列參數——當次執行明確指定,優先權最高。
  2. GEMINI_MODEL 環境變數——沒下旗標時的次要來源。
  3. settings.json 裡的 model.name——專案或全域的預設值。
  4. 本機 Gemma router(若啟用)——見下方「auto 路由背後」一節。
  5. 都沒有指定,退回預設值 auto——交給智慧路由自己判斷。

換句話說,只要你在命令列打了 --model,前面提到的設定就不應再當作那次執行的預設;實際解析仍以目前 CLI 文件與 gemini --help 為準。除錯「為什麼模型不是我要的那個」時,先記下 CLI 版本、帳號路線、輸入的 alias/ID 與最後的 usage report,不要只看 prompt 回答猜模型。

auto 路由背後:目前能證實到哪裡

3.6 是否進入開源 Gemini CLI 的 Auto/router:UNVERIFIED

截至 2026-07-26,官方開源 Gemini CLI model selection 文件仍列 Auto Gemini 3(gemini-3-pro-previewgemini-3-flash-preview)、Auto Gemini 2.5 與 Manual;我沒有找到官方 CLI release note 或文件確認 gemini-3.6-flash 已可選。API model page 能呼叫 3.6,不足以證明 CLI 的 alias、router、subagent 或 fallback 已更新。不要把舊版「0–100 分類器/2.5 門檻/額外收費」敘事當成目前所有帳號的客觀行為;那部分截至查證日沒有足夠的一手證據。

在 CLI 文件列出的模型中,才依任務類型手動選擇:高風險架構或 code review 選較強模型;高頻率抽取、分類選 Flash-Lite;每次都記錄實際模型與 token。若你要在 API 直接使用 3.6,請改看 15.2A,而不是先假設 CLI 的 auto 會替你路由到 3.6。

配額用完時的降級:會提示的,跟不會提示的

撞到配額或容量限制時,某些入口會提示降級,某些工具呼叫可能採靜默 fallback;但 2026-07-26 的官方資料沒有給出一條可以套用到 Gemini API、Antigravity 與開源 CLI 的共同 fallback 鏈。先保留錯誤 JSON、usage、CLI/SDK 版本,再依當前 surface 的說明處理,不要用回應風格反推它剛才換了哪個模型。

看到自動降級訊息,不代表配額真的用完了

這個判斷仍需要看錯誤類型與當前入口。先別急著把 --model 換成某個 3.6 ID 或加大並行數;確認官方文件是否列出該模型、project 是否有權限、是否為容量錯誤,以及當前 session 是否被產品路線導向另一個服務。必要時用小 prompt 重現並保存原始回應,避免把未知 router 行為誤寫成固定規則。

settings.json 裡跟成本、路由有關的欄位

跟本章主題直接相關的 settings.json 欄位,整理在下表;它們是 CLI 設定 schema,不是 Gemini API 生成參數。欄位名稱與預設值會隨版本調整,且這份查證沒有證明它們會把開源 Gemini CLI 路由到 3.6;實際請以你安裝版本的官方 configuration 文件為準:

欄位作用
model.name若目前 schema 支援,可指定預設模型;先用官方 model selection 驗證 ID。
model.maxSessionTurnssession 回合上限;預設與支援狀態依版本確認。
model.compressionThresholdcontext 壓縮門檻;不要把舊版數值當 3.6 token 上限。
contextManagement.historyWindow.*歷史視窗與保留量;欄位、預設與可用範圍依版本確認。
general.plan.modelRouting若當前 Plan Mode schema 仍提供,控制規劃/執行路由;未證明會選 3.6。
modelConfigs.aliasesmodelIdResolutions版本敏感的 alias/權限解析;不能用來推論新 model ID 已可用。
billing.overageStrategy若當前 CLI 提供,控制 credits 超額處理;與 API pricing tier 不同。
experimental.useModelRouterUNVERIFIED:舊版 Intelligent Model Router 開關,不當作現行 3.6 行為。
experimental.gemmaModelRouter.enabledUNVERIFIED:實驗性本機 router;需以當前 CLI 文件與 help 驗證。

路由設定的安全做法

先執行 /model、查看 gemini --help 與當前 configuration 文件,再把已列出的 model ID 寫入設定;不要複製一段帶著 gemini-2.5-pro 或未證實 gemini-3.6-flash 的舊 JSON。要鎖定 3.6,直接在 Gemini API 用正式 ID;要鎖定 CLI 模型,必須先由 CLI 自己列出它支援。

第 5 章提過另一個相關欄位 chatCompression.contextPercentageThreshold,作用同樣是設自動壓縮的觸發門檻;如果你在自己的 settings.json 裡兩個名字都試過還是對不上,這通常是欄位隨版本改過名稱或路徑,直接查官方 configuration 頁的目前 schema 最準。

15.7 Gemini API key、Vertex 與企業帳務

個人或小型專案常從 Gemini API key 開始,設定快、適合原型與低風險工具;但團隊一旦需要集中帳務、IAM、專案隔離、quota 管理、審計、資料治理、企業採購或更嚴格的合規流程,就應評估 Vertex AI 或 Gemini Enterprise 相關平台。路線不同,價格表、可用模型、資料處理條款、區域、quota 申請與發票管理也可能不同。

在 CLI 場景中,還要分清楚「Gemini CLI/Antigravity 產品本身的登入與功能」和「你自己的程式使用 Gemini API 或 Vertex AI」。前者的指令與功能會隨版本變動;後者則要依 API/Cloud 帳務與 IAM 管理。Gemini CLI 與 Antigravity 的能力、旗標、登入方式與限制都很版本敏感,請用目前安裝版的 /help、官方 repo 與文件驗證。

不要把 API key、Antigravity 與 managed agent 當成同一個配額池

Google 的 2026-06-18 transition 公告說明哪些 Gemini CLI 個人路線轉往 Antigravity;它不等於宣布所有 API key、Antigravity CLI、managed agent、Vertex/Enterprise project 共用同一張 quota 表。3.6 managed agent 的 default 也不等於桌面/CLI default。帳務設計請依實際 endpoint、project、plan、IAM 與產品 pricing/rate-limit 文件分開記錄;如果文件沒有明載共用,不要自行推論。

走 Gemini API 付費路線時,請以當前 AI Studio/API pricing、rate-limit 與 project dashboard 顯示的 tier 為準;本章不再把舊版付款門檻或短時間花費數字寫成永久規則。固定成本預估可先採 15.1 的 dated price checkpoint,再用小流量實測 input、output、thinking、tool call 與 retry。

Spend Cap:真正擋得住超支的護欄

若你的 AI Studio/Cloud project 提供 Spend Cap 或 budget controls,請把它當作專案層級的額外護欄,並以當前控制台說明確認 enforcement、延遲與適用 endpoint;不要把某個產品頁的功能自動套到另一個產品入口。

Billing Budget alert 只會通知,Spend Cap 才會真的擋

Billing budget alert 是否只通知、Spend Cap 是否能阻擋、enforcement 有沒有延遲,都依當前產品與帳務設定確認;預算告警不要當成硬性斷路器。真正的止損仍要搭配 project/key 隔離、並行上限、模型白名單與人工核准。

15.8 預算護欄與用量估算

預算管理要從工程流程做起:為每個環境分開 API key 或 Cloud project、設定每日與每月預算告警、限制 CI 並行數、記錄每次請求的模型與 token 估算、對高成本任務要求人工確認。對 agent 工作流,最有效的護欄通常是限制可讀檔案、可修改路徑、最大回合數、最大輸出長度與可使用模型。

最容易忽略的帳單陷阱:環境變數靜默覆蓋 OAuth

這是社群公認影響範圍最大的一個陷阱,而且介面完全看不出任何差異:只要 GEMINI_API_KEYGOOGLE_API_KEYGOOGLE_GENAI_USE_VERTEXAI 這三個環境變數任何一個被設定——哪怕只是之前裝別的工具時寫進 shell profile、你自己早就忘了這回事——Gemini CLI 就會悄悄改走按 token 計費的付費路徑,不會用你以為的免費 OAuth 登入。社群把這稱為一個「known defect」:畫面上完全沒有提示你正在用哪一條認證路徑。

建議執行:開新 session 前先確認這三個環境變數是空的

echo $GEMINI_API_KEY
echo $GOOGLE_API_KEY
echo $GOOGLE_GENAI_USE_VERTEXAI

三行只要有一行印出非空字串,這個 session 就是走付費路徑。真實案例不少:GitHub Discussion #4472 與後來被廣泛轉載的一篇 Medium 文章,都在講同一種遭遇——使用者以為自己用的是免費額度,結果 Pro 模型在背景「進入推理迴圈」,5 小時內燒掉超過一億顆 token,收到一張 $142 美金的帳單。社群 養成習慣,開新 session 前先跑一次上面三行確認是空的——尤其是換了電腦、剛裝完別的 AI 工具之後。

怕環境變數污染,先開一個沒綁付款方式的帳號試

如果你想安全地試用付費 API key,又擔心環境變數不小心污染整個系統,開一個沒有連結任何付款方式的獨立 Google Cloud 專案或帳號來實驗最保險——就算不小心誤觸了付費路徑的認證覆蓋,頂多是連不上而已,不會真的被扣款,比事後對帳單申訴退款輕鬆得多。

確認認證路徑之後,下一步是把用量看得見。headless 模式(第 12 章介紹過)帶 --output-format json 執行,會回傳一個單一 JSON 物件:

gemini -p "your query" --output-format json

回傳結構含三個頂層欄位:response(模型的回覆內容)、stats(token 用量與 API 延遲統計)、error(失敗時的錯誤資訊)。stats 裡確切有哪些欄位,官方文件目前沒有列出完整 schema,建議自己先跑一次、印出完整 JSON 看實際長什麼樣,或查當下的 gemini --help 確認。把這個輸出接進自己的 log 或 CI 儀表板,會比肉眼盯終端機裡的 /stats 更適合長期追蹤預算趨勢。

互動模式下,/stats 系列指令是查看單一 session 用量最直接的方式:/stats 顯示整體摘要,/stats model 拆成各模型的用量分佈,/stats session 看這次對話的統計,/stats tools 看工具呼叫的次數。前面 15.3 節提過,用 OAuth 登入的使用者在這裡看不到任何 cache 節省的數字,原因不是 bug,是認證路徑本身不支援 caching。

還有一個常被低估的固定成本:GEMINI.md 越養越大之後,不只是第 5 章談過的「規則互相打架、模型開始瞎猜慣例」這種品質問題——它每一輪對話都會整包重新送出當作 context,等於每次都在繳一筆固定的 token 底稅,不是只有第一次載入才算數。控制在精簡範圍、必要時拆成子目錄各自的 GEMINI.md,省的不只是模型的判斷品質,也包括每一輪對話實際的 token 帳單。

{
  "request_id": "req_2026_06_30_001",
  "feature": "ci-pr-review",
  "model_route": "medium-risk-review",
  "estimated_input_tokens": 18000,
  "estimated_output_tokens": 1800,
  "cache_key": "repo_rules_v3",
  "retry_count": 0,
  "user_or_job": "pull-request-4821"
}

估算不需要一開始就完美,但要能回答三個問題:哪個功能花最多、哪個模型最常被高估、哪種錯誤造成最多重試。只要 log 能串到 feature、model route、token 估算與 retry 次數,就能逐步調整路由與預算。

15.9 安全重試與停損

重試只適合暫時性錯誤,例如網路中斷、部分 429、部分 5xx。認證失敗、權限不足、billing 未啟用、prompt 太大、格式設計錯誤,通常重試也不會成功。安全重試要符合 idempotent:同一請求重送不會重複下單、重複寄信、重複建立 ticket、重複改檔或重複扣款。

安全重試規則:
- 每個 request 都有 request_id,方便去重與追蹤。
- 只重試明確可重試的錯誤類型。
- 使用 backoff + jitter,避免所有 job 同時重送。
- 設定 retry budget,例如最多 3 次或最多 2 分鐘。
- 超過上限就降級、排隊或交給人處理。
- 寫入型工具呼叫必須有 dry run、確認或 idempotency key。

429 無限重試死鎖:已知限制,不是你的錯

官方 GitHub issue #2140 記錄過一個相當麻煩的行為:CLI 連續撞到速率限制時,重試邏輯有時不會退避,直接無上限持續重送,導致整個 session 卡死、完全沒辦法互動,也看不出是在等待還是當機了。更值得記住的是,官方把「實作 circuit breaker」這個修復提案標記為 closed as not planned——代表查證當下這仍然是一個存在的已知限制,不是還在排隊等修的 bug。社群 遇到這種卡死,目前沒有官方內建的救法,只能中斷重開;如果是跑在自動化流程裡,不要完全信任 CLI 內建的重試保護,自己在外層包一層 retry/timeout 更保險。

YOLO 模式配無人看管=燒錢風險

YOLO/自動核准模式(第 7 章談過安全面的風險)配上長時間無人看管執行,還有一層本章關心的成本風險。真實案例:有人把 agent 丟著跑過一個週末沒管,回來收到一張 $4,200 美金的帳單。社群 原因通常不是單次呼叫特別貴,而是 agentic 迴圈本身的結構——讀檔、規劃、生成、失敗、重試、再生成,這樣繞一圈下來,實際吃掉的 token 量可以是單次呼叫的 50 到 100 倍,而且完全不會停下來問你要不要繼續。

建議執行:無人看管的自動化任務,先包一層時間上限

timeout 300 gemini --yolo -p "long autonomous task"

timeout 這種外層時間上限,比完全信任 CLI 內建的迴圈保護更踏實——它不管 CLI 內部邏輯是不是卡住或還在正常工作,時間一到就直接砍掉,是最後一道止損線。

想知道原理:為什麼「壓縮」有時候反而卡成迴圈?

v0.38.0 起,Gemini CLI 加了一套 Context Compression Service:context 使用率跨過設定門檻(就是 15.6 節提過的 model.compressionThreshold)就自動觸發摘要,把整段對話壓縮到原長度的 5% 到 15% 左右;GEMINI.md/memory add 存進去的內容不受影響,不會被摘要進去。這套自動機制跟手動打 /compress(第 5 章介紹過)共用同一套摘要邏輯,兩者可以並存不衝突。

但這個「跨過門檻就觸發」的判斷邏輯本身出過 bug(issue #16213):長對話裡,CLI 每一輪都跳出「Compressing chat history...」的訊息,但壓縮完 token 數卻沒有真的降到門檻以下,於是下一輪立刻又觸發一次,形成迴圈,session 幾乎動不了。這個 bug 已經在 PR #16914 修掉,這裡提它不是要你現在擔心會撞到,而是提醒一件事:觸發門檻設定完,不代表壓縮機制永遠穩定運作。特別長的 session 裡,如果你一直看到重複出現的壓縮訊息卻感覺對話沒有變順暢,這是值得留意的訊號,不一定是你的錯覺。

本章小結

Gemini 成本治理的重點,是把用量拆成 input、output、thinking、cache、重試與外部工具成本,再依任務風險、延遲與帳務要求做模型路由——但不要把開源 CLI 的 router 行為、產品間 quota 共用或 Arena snapshot 寫成未證實的常數。context caching 的適用性、儲存、有效期、刪除與合規要納入預算;quota 與 rate limit 要依 endpoint、project、plan 及當前文件處理。最容易被忽略、卻最容易燒錢的陷阱,是環境變數靜默覆蓋 OAuth 認證——開新 session 前先確認 GEMINI_API_KEYGOOGLE_API_KEYGOOGLE_GENAI_USE_VERTEXAI 是空的,比事後對帳單申訴退款輕鬆得多。所有固定價格、配額數字、排名與限制都應回到原始頁面確認,這章的價格與 Arena 榜只以日期 checkpoint 使用。

動手試試

  1. 挑一個常用 Gemini CLI 或 API 任務,寫出它的 input、output、thinking、cache 與 retry 成本來源。
  2. 把五個任務分成低、中、高風險,為每一類指定模型路由、最大輸出與人工審核規則。
  3. 記下 2026-07-21 的 Arena Agent snapshot;只把它當 agent 編排定位,並標註下次重查日期。
  4. 若從舊 API 升級,依 15.2A 清掉取樣參數、prefilled turn 與不相容的 function response 欄位。
  5. 設計一份 request log schema,至少包含 feature、model route、token 估算、cache key、retry count。
  6. 寫一段 429 runbook,明確區分排隊、降級、重試、申請 quota 與停止任務。
  7. 打開目前官方 pricing、rate-limit、caching 頁面,確認你的文件沒有寫死過期價格或限制。
  8. 跑一次 echo $GEMINI_API_KEY; echo $GOOGLE_API_KEY; echo $GOOGLE_GENAI_USE_VERTEXAI,確認自己目前的 session 走的是哪一條認證路徑。
  9. 打開自己的 settings.json,對照 15.6 節的欄位表,確認 model.nameexperimental.useModelRouter 這些欄位目前的值跟你以為的一不一樣。

官方參考

Latest Gemini models/3.6 migrationInteractions APIGenerateContent migrationGemini API pricingGemini API rate limitsGemini API context cachingVertex AI Provisioned ThroughputGemini Enterprise generative AI pricingGemini CLI model selectiongoogle-gemini/gemini-cliArena Agent Leaderboard snapshotArena methodologyTransitioning Gemini CLI to Antigravity CLI

順帶一提:geminicli.comgemini-cli.xyz 這類網域是第三方整理站,不是 Google 官方網域,內容經核對雖大致跟進官方頁面,但不保證即時同步更新。真正的官方來源只有 github.com/google-gemini/gemini-cli、以及 Google 自家的 ai.google.devdevelopers.google.comdocs.cloud.google.comblog.google;查證數字時,養成回頭核對這幾個網域的習慣。