AI 編碼的下一道坎:從單點修補到系統演進,為何多檔案協調是關鍵?
AI 寫程式很強,但能搞定複雜的「系統演進」嗎?當前的 AI 編碼工具在單點修補上表現亮眼,卻在多檔案協調、理解長期專案脈絡時顯得力不從心。一篇新研究揭示了這道能力鴻溝,指出 AI 要從「程式碼助手」進化成「軟體工程師」,多檔案協調能力將是下一個突破口。這篇文章將深入探討這項挑戰,以及 AI 該如何跨越。
AI 編碼工具在單一檔案的「單點修補」任務上表現出色,卻在真實軟體開發的「系統演進」中遭遇瓶頸。新發布的 SWE-EVO 基準測試明確指出,現有 AI Agent 難以處理橫跨數十個檔案、需理解長期演進脈絡的複雜任務。這揭示了 AI 從局部程式碼助手,轉型為能理解並操作複雜系統的全局夥伴,所面臨的關鍵挑戰,預示著 AI 輔助開發需從追求局部最佳解,轉向更宏觀的工程視野。
我們對 AI 寫程式的期待,是否太過天真?
自從 GitHub Copilot 問世以來,AI 輔助編碼已成為開發者的日常。我們習慣了它能快速補完函式、撰寫單元測試,甚至在特定框架下生成樣板程式碼。這些工具的成功,建立在一個前提上:任務的上下文是局部的、明確的。例如,修復一個變數命名錯誤、優化一個迴圈的效能,或是為一個 API endpoint 加上錯誤處理。這些都屬於「高信噪比、低上下文」的任務,AI 能夠在有限的程式碼視窗內找到解決方案。
然而,資深工程師都明白,軟體開發的核心挑戰並非來自這些孤立的點。真正的難題在於系統的演進:當你需要新增一個橫跨前端、後端與資料庫的功能;當你為了提升效能而重構一個核心模組,並需要同步修改所有依賴它的服務;或是當你為了解決一個深層的架構債,必須在 20 多個檔案中進行協調一致的修改。這些任務的複雜性,源於檔案之間的相互依賴、隱含的設計決策,以及長期的工程脈絡。
真正的軟體工程,從來都不是關於孤立的程式碼片段,而是關於一個動態演進、相互關聯的複雜系統。
目前的 AI Agent 在這方面顯得力不從心。它們或許能提出單一檔案內的修改建議,卻難以理解這個修改對整個系統造成的連鎖反應。這種能力上的落差,正是我們從「AI 程式設計助手」邁向「AI 軟體工程師」的最大障礙。
SWE-EVO 揭示了什麼樣的能力缺口?
最近在 arXiv 上發布的論文《SWE-EVO: Benchmarking Coding Agents in Long-Horizon Software Evolution Scenarios》,為這個挑戰提供了清晰的度量。研究者們提出了一個名為 SWE-EVO 的新基準測試,它刻意設計了需要「長週期軟體演進」思維的任務。與先前專注於單點 bug 修復的基準(如廣受歡迎的 SWE-bench)不同,SWE-EVO 的任務有幾個顯著特點:
- 多檔案修改:平均每個任務都需要修改高達 21 個檔案,這迫使 AI Agent 必須理解檔案之間的關聯性,而不僅僅是單一檔案的內部邏輯。
- 長程推理:解決方案無法一步到位,需要進行一系列連貫、有規劃的修改。這考驗的是 AI Agent 的任務分解與策略規劃能力。
- 隱含脈絡:許多任務的解決線索並不明顯,需要 AI Agent 從專案的歷史、程式碼註解、甚至是命名慣例中推斷出潛在的設計模式與限制。
這個基準測試的結果並不令人意外,但卻極具啟發性。它揭露了當代最頂尖的 AI 編碼 Agent 在面對這類複雜任務時的普遍困境。即使是擁有像 Gemini 1.5 Pro 的百萬級 token 長上下文視窗的模型,能「看到」整個程式碼庫,也不代表它能「理解」系統的運作邏輯與演進方向。單純擴大上下文長度,就像是給一個不懂建築學的人看完整棟大樓的藍圖,他能看到所有線條,卻無法理解承重結構與管線佈局的內在邏輯。
如何跨越從「程式碼」到「工程」的鴻溝?
SWE-EVO 的出現,為 AI 編碼能力的下一步發展指明了方向。我們需要的不再是僅僅能生成語法正確程式碼的「語言模型」,而是具備工程思維的「系統模型」。我認為,未來的 AI Agent 必須在以下幾個層面取得突破:
首先是全域程式碼的結構化理解。AI 不能只將程式碼庫視為一長串的 token 序列,而必須將其解析為一個包含函式呼叫、類別繼承、模組依賴的複雜圖結構。像是 GraphCodeBERT 這類利用程式碼結構進行預訓練的模型,雖然是早期的探索,但其思路是正確的。只有理解了結構,才能在修改時預測其影響範圍。
其次是長程任務規劃與分解能力。面對一個「新增使用者認證系統」這樣的模糊需求,AI Agent 需要能將其分解為一系列具體的、有先後順序的子任務:修改資料庫 schema、建立 user model、撰寫認證 API、更新前端登入頁面、增加測試案例等。這需要模型具備超越單純程式碼生成的規劃能力,更接近一位系統分析師的角色。
最後,是與開發流程的深度整合。一個真正有用的 AI 工程師,不應該只活在聊天視窗裡。它需要能讀取 issue tracker、理解 CI/CD 的測試回饋、甚至能從過去的 git commit message 中學習專案的演進模式。這種對完整工程生命週期的感知,是從提供程式碼片段到交付可靠軟體的關鍵一步。
總結來說,AI 編碼正從一個解決「語法問題」的階段,邁向一個需要解決「架構問題」的新階段。SWE-EVO 這樣的基準測試,為我們標示出了前方的挑戰。對於開發者和 AI 系統建構者而言,這意味著我們需要將目光從單一的程式碼生成品質,轉向評估和提升 AI 在複雜系統中進行長期、多檔案協調工作的能力。這條路雖然更為艱鉅,卻是通往真正實現 AI 輔助軟體工程的必經之路。
延伸閱讀
- SWE-bench: Can Language Models Solve Real-World Software Engineering Problems?
- Competitive programming with AlphaCode by DeepMind
- Software 2.0 by Andrej Karpathy
我是江中喬,一位具有 TPM 與產品管理背景的 AI 系統建構者,目前專注於 AI 認知增強系統與多 Agent 協作架構的設計與實踐。