摘要: Cloudflare 在 2026 年 10 月 19 日的部落格文章中詳細拆解,他們如何在約五週內把內部 AI 程式碼審查器的平均單次成本從 2.43 美元壓到 0.77 美元,降幅 68%,順便把中位數審查時間從 4 分 09 秒縮短到 1 分 32 秒。對任何在 production 跑多步 agent 的人來說,這篇文章最值錢的地方是它把「錢到底花在哪」一項一項攤開來。
帳單為什麼先漲了一倍
今年 4 月,平均一次審查只要 1.19 美元,到 8 月底漲到約 2.46 美元。架構沒變,漲價的原因有兩個:一是工程師的變更越來越大、越來越複雜,落進最貴「完整審查」層的比例從 3 月的 59% 升到 8 月的 65%;二是 8 月初他們把所有 reviewer 換到 Anthropic 模型(evals 顯示在這個工作負載上表現最好),單次成本因此從 1.38 美元跳到 2.03 美元。
另一個容易被忽略的數字:每次審查的 token 量從 91 萬暴增到 299 萬。快取命中率從 85.7% 升到 97% 聽起來很健康,但在三倍的 token 基數上,即使 cache read 便宜,總成本照樣失控。
錢其實花在模型已經看過的內容上
優化前的支出結構:output tokens 約 23%,cache writes 43%,cache reads 34%。也就是說,超過四分之三的錢花在模型已經看過、或即將再看的 context 上。
具體到單一 session:code quality reviewer 平均做 16.6 次 LLM 呼叫,寫入 72k tokens 到快取、讀回 108 萬,因為每次呼叫都重送整段對話。這和我之前寫過的 Prompt Caching 原理、成本與命中率實戰 是同一個核心教訓——命中率只是表象,前綴設計和呼叫次數才是根因。
最戲劇性的一個修復:每個 session 的開頭(tool 定義加 agent prompt,約 11k 到 21k tokens)在所有 repo 都一樣,理論上應該幾乎全部命中快取,但實際首次請求只有 14% 到 26% 命中。原因出在 OpenCode v1 把 agent prompt 和含工作目錄、日期的環境資訊包在同一個 block,唯一的 cache breakpoint 放在 block 尾端——共享的部分從來沒被獨立存過。9 月 16 日他們用一個 plugin hook 把 block 從標記處切開,讓共享前綴有自己的 breakpoint,並把 repo 專屬資訊全部移到後面。同一天把 Codex reviewer 的參考索引直接塞進 prompt,省掉前三輪的工具呼叫,單次成本從 1.12 美元降到 0.72 美元。
累積的小改動也不容小覷
9 月 21 日和 23 日上線的一批改動,單看每個都不起眼,合計每個 review 省約 0.20 美元:
- 移除 sub-reviewer 根本不能用的工具,避免它們嘗試呼叫、被拒絕、再多花一次呼叫復原。
- 鼓勵平行讀檔,讓 reviewer 在第一輪就把共享 context 和所有 patch 讀完。
- 重新審查時跳過沒有新東西可看的 reviewer。
- 審查結果張貼後就停止,不再多跑一輪生成沒人看的摘要。
- 取消的 job 真的會停:446 個被取消的 job 裡有 358 個原本繼續跑到審查結束。
另外三個 reviewer(code quality、security、performance)現在共用同一個首次請求和前綴,其中一個寫快取、兩個讀——第二、三個會等第一個的回應開始串流再發請求,最多等 20 秒,每位省約九美分。
模型和 effort 的實驗佔了省下金額的大頭
拆開來看,程式碼改動佔 1.67 美元降幅中的 0.65 美元,模型與 effort 調整佔 1.06 美元。做法都很務實:medium effort 的完整審查快 20%,就砍掉其他兩種組合;隨機分流顯示 Opus 5.5 medium 相比 Opus 5 沒有可測得的品質差異,就換。Sonnet 5.5 在同價位下每 run 便宜 47% 到 62%,而且 critical findings 數量相當,兩天半的分流實驗後就全量切換。
值得注意的是 Cloudflare 自己承認這些對比不是統計上嚴謹的控制實驗——每一步是拿改動前後的工作時段相比。對讀者來說,可抄的不是某個具體數字,而是他們的方法:記錄每次改動前後的單位成本、用分流實驗驗證品質沒掉、然後果斷全量。如果你也有一個多步 agent 在跑,先量出錢花在快取寫入還是 output,通常答案會和你直覺差很遠。
