iT邦幫忙

0

讓 AI 修 CI 之前,先定義什麼叫做修好了

  • 分享至 

  • xImage
  •  

AI 幫你修 CI,聽起來很像一個很單純的省時間功能。

Workflow 紅了,log 一大串。你按一下 Fix with Copilot,agent 去看錯誤、改檔案、跑驗證,最後把修復推回 branch 或開一個 PR。這種流程很迷人,尤其是那種大家都知道很煩、但又不得不修的 lint、測試、snapshot、dependency 小爆炸。

可是我覺得真正危險的地方不在「AI 會不會改錯」。

真正危險的是,它改完以後,團隊沒有人說得清楚為什麼這樣叫做修好了。

以前 CI 紅燈通常是人在看:誰 push 的、哪個 job 掛了、是不是 flaky、要不要 rerun、該改測試還是改產品程式碼。這些判斷很多時候沒有寫成規則,只是藏在工程師的習慣裡。

現在問題來了。當 CI failure 可以直接變成 agent task,那些沒有寫下來的習慣,就會突然變成流程漏洞。

紅燈交給 AI,不等於問題被交代清楚

GitHub 最近把 Copilot cloud agent 往兩個方向推進。

一個是可以透過 REST API 啟動 agent task。也就是說,agent 工作不一定要從 IDE 或聊天視窗開始,也可以從公司內部 portal、script、release 工具、issue 流程,甚至其他自動化系統觸發。

另一個是從失敗的 GitHub Actions log 直接進入一鍵修復流程。失敗的 workflow 旁邊出現一個入口,讓 Copilot cloud agent 看 log、調查 repo、修改程式,完成後再叫使用者 review。

這兩件事合在一起看,重點不只是「AI 又更會寫 code 了」。

重點是 CI failure 開始變成一種可以委派的工作單位。

這很有用。但也因為太有用,所以更需要邊界。你不能只把一段錯誤訊息丟給 agent,然後期待它自然知道團隊的工程標準。

一個紅燈至少要被拆成幾個問題:

  • 這次修的是哪個 workflow、哪個 job、哪個 commit 上的失敗?
  • agent 可以改哪些檔案?測試可以碰嗎?產品程式碼可以碰嗎?
  • 修完之後要重跑哪個檢查?只跑原本失敗的 job,還是要跑完整 test suite?
  • 這次修復應該是小 diff,還是允許順手整理附近程式?
  • 如果 agent 判斷 root cause 不是 log 表面看到的問題,它能不能擴大範圍?

如果這些沒有先講清楚,AI repair 很容易變成一種看似完成、其實更難 review 的自動化。

CI 從紅變綠,只是結果之一。它不是完整的驗收證據。

一個 lint 錯誤,也可能被修壞

假設前端 build 掛在 ESLint。

錯誤訊息很普通:某個 hook dependency 沒補,某個 type 太寬,某段測試 mock 沒跟新版 API 對齊。這種問題看起來非常適合交給 AI。人類看了也只是嘆一口氣,打開檔案,補一補,跑一下檢查。

但 agent 的修法有很多種。

它可以補正確 dependency。也可以把 rule disable 掉。

它可以把型別收窄。也可以塞一個 any

它可以修測試資料。也可以把 assertion 改得比較鬆。

它可以只修那個 job。也可以順手重構旁邊三個元件,讓 diff 看起來「更乾淨」。

對 CI 來說,這幾種做法最後可能都會變綠。對工程品質來說,它們差非常多。

所以 AI 修 CI 的第一個契約,不能只寫「請修好」。

比較合理的任務描述應該像這樣:

只修復這次 frontend-ci workflow 在 commit abc123 的 lint failure。允許修改產品程式碼與對應測試,但不要調整 lint rule,不要使用 ignore comment,不要擴大到無關重構。完成後重跑原本失敗的 job,並在 PR description 說明 root cause、修改檔案與驗證結果。

這段話不漂亮,但它有工程價值。它把「修 CI」變成可驗收的工作。

沒有這層約束,agent 其實是在猜你的團隊文化。

Review 不會消失,只是換位置

很多人對 AI repair 的期待,是讓人類少看一點。

我覺得比較務實的說法是:它讓人類少做第一輪機械修補,但不會取消 review。甚至在某些情況下,review 會更重要。

因為人類 reviewer 看的不只是「CI 有沒有綠」。

Reviewer 要看 agent 有沒有把測試放鬆到失去意義;有沒有用 any@ts-ignore、disable rule 之類的方法把錯誤蓋掉;有沒有把一個小失敗擴大成一個不好回滾的 refactor;有沒有改到原本不該碰的模組。

尤其是測試失敗。測試掛掉時,最差的修法不是修不動,而是把測試改到不會再抓到問題。

這也是為什麼 AI repair 的 PR description 不能只寫「fixed failing workflow」。

至少要交代四件事:

  • root cause 是什麼
  • 改了哪些檔案
  • 跑了哪些驗證
  • 有沒有刻意沒處理的範圍

這些資訊不是給 AI 展示用的。它是讓人類可以快速判斷:這個修復能不能進主線。

AI 可以幫你把紅燈變成一個修復提案。能不能 merge,還是工程責任。

自動修復也是 CI 負載

還有一件事很容易被忽略:AI repair 不是免費飄在 CI 外面。

GitHub 的 Copilot cloud agent 會在 GitHub Actions-powered 的環境裡工作,可以調查 repo、修改 branch、跑測試與 linter。Copilot code review 的 agentic 能力也會牽涉 GitHub Actions runner,而且從 2026-06-01 起,相關 review runs 會消耗 Actions minutes。

這代表 AI review、AI repair、CI job、preview deploy,最後都可能進到同一個自動化資源池。

小團隊最常見的錯誤,是把 trigger 開太大。

每個 PR 都 review。每次 push 都 repair。Bot 開的 PR 又觸發另一個 AI review。失敗了再自動修。看起來很聰明,實際上可能是在製造 runner queue、quota 壓力和更難追蹤的自動化迴圈。

Self-hosted runner 也不是免費。它只是把 GitHub-hosted minutes 換成機器維護、權限隔離、secrets 管理、排隊策略、安全邊界和平台團隊的待辦。

所以 CI repair policy 裡也應該有成本規則:

  • 哪些 workflow 允許 AI repair?
  • Deploy pipeline 能不能自動修?
  • Flaky test 允不允許 agent 直接改?
  • 同一個 failure 最多嘗試幾次?
  • Bot-created PR 要不要觸發 AI repair?
  • 超過多少檔案變更就要求 human owner 先確認?

這些問題不酷,但很實際。

AI repair 一旦進入 CI,就不只是開發者便利功能。它也是基礎設施政策。

我會怎麼寫第一版規則

如果一個團隊要開始試 AI 修 CI,我不會建議一開始就開到所有 workflow。

先從低風險、容易驗收的地方開始。

例如 lint、typecheck、單元測試、文件建置、小型前端 build。先不要讓 agent 自動碰 production deploy、database migration、權限、billing、安全設定,除非團隊已經有很清楚的 review 與 rollback 機制。

第一版規則可以很短:

  1. 只允許 agent 修復已知失敗 job,不接受模糊的「讓 CI 全部變綠」。
  2. 任務必須綁定 workflow、job、commit、原始失敗連結。
  3. 預設只允許最小修改,不做無關重構。
  4. 禁止用 disable rule、ignore comment、放寬測試 assertion 來假裝修好,除非 PR 明確說明原因並由 owner 同意。
  5. 修復後必須重跑原本失敗的 job;高風險模組要跑完整 test suite。
  6. PR description 必須包含 root cause、changed files、validation result。
  7. Required checks 全綠不等於自動 merge,仍然需要 owner review。

這些規則看起來保守,但保守是好事。

因為這個階段真正要驗證的,不是 agent 到底多聰明,而是你的團隊能不能把一個 CI failure 變成清楚、可執行、可驗收、可回滾的工作單位。

如果做不到,先不要怪 AI。

它只是把你原本沒有寫下來的流程假設,放大到 branch 和 runner 上。

成熟度不是按鈕,是驗收規則

我不反對 AI 修 CI。相反地,我覺得這會變成很常見的工程流程。

簡單、重複、明確的 CI failure,本來就不該消耗太多人類注意力。讓 agent 先處理一輪,再讓工程師 review 變更意圖與驗證結果,這個方向很合理。

但成熟的用法,不是把紅燈交給 AI 就結束。

成熟的用法,是先把紅燈整理成 AI 可以嘗試、工程師可以驗收的工作單位。

AI repair 的重點不是「它能不能把 CI 變綠」。那只是最低標準。

真正該問的是:它修了什麼、為什麼這樣修、驗證了什麼、誰看過、如果錯了怎麼退。

這些問題有答案,AI 修 CI 才是工程能力。

沒有答案,它只是另一個會把紅燈變成 PR 的按鈕。

Source notes


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言