我們如何在保證任務質量的同時讓 AI 編碼更具成本效益
GitHub 部落格介紹了 Copilot 降低 AI 編碼成本的四個實踐:不要只看單次工具呼叫的 token 數,而應從完整任務出發。透過選擇性壓縮噪音輸出、刪除不再使用的行號格式、用行為測試保護提示詞壓縮、以及批次直接交付後臺完成結果,團隊在離線/線上實驗中讓推理成本或 token 用量下降約 1–5%,且未出現質量回退。
在與 AI 程式設計代理協作時,真正的高效不是讓單次互動的 token 更少,而是以恰到好處的上下文推動整個任務完成。GitHub Copilot 團隊在官方部落格中表示,如果一次簡潔的工具返回遺漏了代理需要的資訊,模型可能重讀原始輸出或重跑命令。雖然單次響應變短,整個任務卻可能更慢更貴,因此要從“使用者請求到最終結果”的完整任務來評估效率。
GitHub 的做法是先使用 agentic coding benchmark 做離線評估,再用受控線上實驗驗證最有希望的改動。文章提到的例子來自 Copilot CLI,但 Copilot 應用和 Copilot code review 等產品也共用同一套底層機制。第一個案例是 RTK,一個會在代理讀取前縮短 shell 輸出的工具。基準測試發現,RTK 確實縮短了一些響應,但如果被刪掉的內容很關鍵,模型有時會重新開啟原始輸出或重跑命令來恢復資訊。這些恢復步驟增加了互動輪次,並把更多上下文帶入後續流程,結果是工具響應雖然變短,任務平均 token 消耗和耗時反而增加。團隊強調這不是說所有 RTK 配置或輸出壓縮無效,而是說明“每次工具呼叫的 token 數”不是正確的最佳化目標,必須在完整任務上衡量。
更有效的方向是保留有用上下文、壓縮重複噪音。對基準執行的分析顯示,install、build、test、lint 輸出往往包含重複噪音,而 cat、git diff、git show 等原始碼類輸出以及任意指令碼的結果更可能包含代理需要的資訊。GitHub 據此為 Copilot 設計了一個選擇性輸出壓縮器。早期版本因為太激進而失敗,例如曾壓縮 git diff,但代理為了恢復缺失資訊會重新開啟完整原文,導致端到端成本不降反升。最終採用的三部分策略是:原始碼類和任意命令輸出原樣保留;grep 等搜尋結果重新組織但不丟失內容;安裝、構建、測試和進度輸出只在節省明顯時才做壓縮。壓縮器還會保留完整原始輸出的恢復路徑,讓代理在需要時直接取用。在觸發壓縮的離線任務中,沒有發現統計顯著的任務成功率下降,代理極少開啟儲存的原文;線上實驗中平均成本微微下降,質量指標沒有實質回退。
另一項最佳化是移除 view 工具中的行號。之前每次向模型展示檔案內容時都會給每一行加數字字首。舊的檔案編輯工具依賴行號定位修改點,但當前工具改寫為匹配周圍程式碼,已經不再使用行號。雖然每行字首很小,但會在每次檔案讀取中累積並佔用上下文視窗。去掉行號後,離線 agentic 編碼基準裡的模型推理成本下降約 5%,成功率和編輯失敗率沒有明顯變化;Copilot CLI 線上實驗裡,每使用者每日平均推理成本下降約 3%,質量和滿意度指標沒有實質退化。這個改動不需要給模型新增指令,也不需要恢復任何被刪除的資訊,檔案內容實際上還是原樣進入模型。
提示詞壓縮則需要注意行為保留。Copilot 的 task tool 會啟動專用子代理並行執行任務,其指導語分散在工具描述、schema、代理定義、系統指令和配套工具中,積累了越來越多內容。團隊用元提示迴圈讓 Copilot 自己迭代改寫提示詞,成功把提示詞減少約一半。但第一次線上實驗就暴露了離線評估沒有發現的回退:原本表示“謹慎並行”的指導被改寫成了硬性排程策略,導致互相獨立的自定義代理被序列執行。團隊立即停止實驗,針對這個行為補充迴歸測試,並用一句更短、限制更少的話替換顯式的允許/禁止列表:“獨立代理可以並行執行;請考慮副作用。”此後新行為測試透過,已有測試也未失敗。出廠的提示詞每輪大約減少 1,300 個任務工具 token,相當於每個會話總提示詞減少約 1.8%,每活躍小時標準化成本降低約 2.9%,沒有發現質量退化。
後臺工作交付也有可壓縮的浪費。代理經常會同時執行長命令和子代理調查;舊方案中,後臺工作完成時通知裡並不包含結果,代理還要額外花一輪去取 Copilot 已經收到的輸出。當多個任務接連完成時,這種繞路會重複出現。現在 Copilot 會把符合條件的完成通知批次合併,並直接以既有工具結果格式返回完成結果。對仍在執行的任務,顯式讀取行為保持不變。最佳化前,兩個後臺任務全部完成需要四次模型呼叫——每個任務先請求一次結果再處理一次;最佳化後,一次呼叫即可同時處理兩個結果,同時避免把完整會話上下文帶進不必要的呼叫。按 AI Credits 計量,平均 token 相關用量下降約 2.3%。
GitHub 也提醒,某個改動在一種 Copilot 工作流中省錢,換一種工作流卻可能更貴。比如一組更緊湊的檔案工具指令在程式碼審查中效果很好,但放到 Copilot CLI 線上實驗反而增加成本,因此沒有上線;相反,去掉行號字首和選擇性壓縮輸出在大量 Copilot 程式碼審查任務中分別讓每條審查的平均提示詞 token 減少約 5%。這與更早遷移到共享檔案工具、配合審查指令調優使程式碼審查成本下降約 20% 的改動相互獨立。核心經驗是:最佳化“完成的任務”,而不是“工具呼叫”;更短的輸出並不一定更便宜,每個改動都應該在實際執行的工作流中測量。