AI 時代的開源維護工作
AI 真的改變了軟體開發的玩法。 現在比以往有更多人運用 AI,為自己使用的專案貢獻修補。 對我來說,這是好事,因為會有更多人願意送出修補,而不是 fork 之後各做各的,或乾脆不修。 主要問題在於,AI 讓產生程式碼變快了,但維護程式碼庫這件事幾乎沒有相應改善。 在這篇文章中,我們會說明 Kubernetes 社群如何適應 AI 輔助寫程式的世界。
這趟旅程的第一步,是制定一份 AI 政策。這聽起來平凡又官僚,但當時有許多 PR 的討論都被帶往 AI 使用方式而離題。 AI 政策有助於引導大家理解專案對 AI 的立場,也能清楚告訴貢獻者如何負責任地使用這些工具。
Kubernetes AI 政策
Kubernetes 專案已經為 AI 輔助貢獻建立清楚的指引,在創新與責任之間取得平衡。 這些政策的設計,是為了維持程式碼品質並確保有人類監督,同時也承認 AI 工具可以在開發過程中提供有價值的協助。
透明優先
貢獻者必須揭露是否曾使用 AI 工具協助 pull request。只要在 PR 描述中簡單寫上一句,例如「This PR was written in part with the assistance of generative AI」即可。這種透明度能幫助審查者理解脈絡,並採取適當的審查標準。
人類責任歸屬
AI 工具可以協助,但人類貢獻者仍須對每一項變更負全部責任。政策明確禁止:
- 在 commit 中將 AI 列為共同作者
- 在 commit 中使用 AI 共同簽署
- 加上像是「assisted-by」或「co-developed」這類把工作歸功於 AI 的 trailer
這不是在貶低 AI 作為工具的角色;而是為了維持清楚的責任歸屬。如果出了問題,必須有一位了解原因、也能修復問題的人類負責。
對共同作者強制執行 CLA
CNCF 提供了一項工具,可驗證每個 pull request 上的貢獻者授權協議(Contributor License Agreement,CLA)。 AI agent 無法處理這些貢獻者授權協議,因此專案採取的一項強制措施,是為共同作者啟用 CLA 檢查。 這會向審查者標示該 PR 尚未準備好合併。
需要人類參與
也許這項政策最關鍵的一點是:審查者期待互動的對象是人,而不是 AI。 貢獻者不能依賴 AI 來回應審查意見。 如果你無法親自說明 AI 協助產生的變更,你的 PR 會被關閉。 這項要求確保知識移轉確實發生,也確保貢獻者真正理解自己提交的程式碼。
驗證義務
貢獻者必須透過程式碼審查、測試與個人理解,驗證 AI 產生的變更。 程式碼能運作還不夠,你需要知道它為什麼能運作,並且有能力維護它。
這些政策反映出一種成熟的 AI 使用方式:把 AI 視為工具來善用,但絕不讓它取代人的判斷、理解或責任。
自動化 AI 審查
目前已有許多工具可以協助審查程式碼。AI pull request 工具會帶來治理上的挑戰,因此社群最早處理的工作之一,就是記錄引入新 AI 工具需要哪些流程。 這些工具的主要評估標準之一,是找到願意在 kubernetes-sigs 儲存庫中試用的維護者。Kueue、JobSet 和 Agent-Sandbox 一直在試驗這些工具,以便為維護者提供更多支援。
Copilot
許多維護者開始使用的其中一項工具是 GitHub Copilot。 CNCF 為維護者提供使用權限,因此這也成為許多人最早開始使用的工具。 它在調整審查品質方面提供了一些不錯的經驗,但這項工具也經歷了一些成長陣痛。 社群採用時最大的阻礙,是必須依賴貢獻者擁有 Copilot 授權。只有維護者能要求 Copilot 進行審查,而 pull request 的自動化審查對社群來說仍然不可及。 AI 審查工具的目標之一,是提供一種不需要維護者主動要求的自動化審查工具。 這也顯示出需要由組織層級控管,而不是依賴貢獻者是否擁有存取權限。
CodeRabbit
2026 年中,Kubernetes 社群已將 CodeRabbit 推展到少數專案。 和 Copilot 一樣,為了提供更好的審查,仍需要做一些調整,但整體回饋是正面的。 這項工具提供許多可設定的項目,其中一個最有趣的使用方式來自 agent-sandbox。
AI pull request 工具可以作為一道品質關卡。貢獻者至少能先取得快速的抽查式審查,不必等待維護者。 Agent-sandbox 已在 PR 上新增標籤,用來表示仍有部分 AI 工具提出的意見需要處理。
下一步
現實是,在開源專案中運用 AI 仍是一個正在積極探索的領域。 社群需要你的協助,一起調整審查工具、評估工具,或評估 AI 領域中的新興技術。
我們正在進一步探索的一些方向:
- 運用 AI skills(AI 技能)降低維護者倦怠。
- 以 AI 輔助分類處理失敗的測試。
- 協助 Kubernetes 維運面的技能。