AI News

自主軟體工程的黎明

在人工智慧與軟體工程的一個分水嶺時刻,Cursor,這家著名的 AI 原生程式碼編輯器(AI-native code editor)的公司,成功展示了自主式 AI 代理(autonomous AI agents)從零開始構建複雜軟體的能力。此實驗在開發者社群引起震撼——一群由 OpenAI 提供動力的 AI 代理「群群協作」,在不到一週的時間內協同建構並執行了一個可運作的網頁瀏覽器。

該專案在內部被稱為「FastRender」,代表著從 AI 作為程式碼助理(Copilot)到 AI 作為完全自主軟體工程師的重大飛躍。實驗結果產生了超過 300 萬行程式碼,分佈在數千個檔案中,且在程式撰寫過程中沒有直接的人類介入。此成就挑戰了技術領域中對於人工通用智慧(Artificial General Intelligence,AGI)時間線的長期假設,並為適當協調時自主系統(autonomous systems)能達成的成就建立了新基準。

Cursor 的執行長 Michael Truell 公佈了這次大規模實驗的結果,透露系統在峰值時使用了約 2,000 個同時運行的階層式代理。這些代理並非僅僅 fork 現有專案如 Chromium;相反地,他們以 Rust(Rust)架構了一個自訂的渲染引擎,包含自有的 HTML 解析器、CSS 層疊邏輯,以及自訂的 JavaScript 虛擬機。

打破預測:「FastRender」專案

理解 FastRender 專案的重要性,最好的方式是放在專家預測的脈絡中。就在宣布前幾週,軟體社群中的重要人物、Django 共同創建者 Simon Willison 曾公開預測,由 AI 建構的網頁瀏覽器至少要到 2029 年才有可能實現。在 Cursor 展示之後,Willison 承認他「誤差三年」,突顯了 AI 能力加速的步伐。

該瀏覽器本身並非要成為可與 Chrome 或 Firefox 競爭的生產等級產品,也不是為此目的而製作。它是一個用來測試代理工作流程極限的概念驗證(proof-of-concept)。然而,它是可運作的。它能以可辨識的準確度呈現網頁,處理需要渲染引擎與 JavaScript 執行環境深度整合的複雜版面與互動。

指標 FastRender 統計 比較/脈絡
開發時間 < 1 週 人類團隊通常需數年
程式碼量 約 300 萬行 可與早期瀏覽器核心相當
代理規模 約 2,000 同時運行 大規模平行化
語言 Rust 高效能、記憶體安全的系統程式語言

選擇構建瀏覽器——一般被視為最複雜的軟體工程挑戰之一,因為它需要網路、圖形、語言解析與安全性的匯聚——是一項刻意的壓力測試。當能在此規模上成功時,Cursor 已展示出 AI 編碼的瓶頸不再僅僅是模型的智慧,而是管理代理的協調層。

引擎內部:協調代理群

FastRender 的成功不僅僅是把大量運算丟給問題的結果。它需要重新構想 AI 代理(AI agents)如何互動。實驗的早期迭代失敗,是因為採用了「扁平」階層,所有代理地位相等。在這些初期測試中,代理會鎖定檔案以避免衝突,導致僵局——20 個代理的效能會降到兩個代理的實際吞吐量,常常無限期等待資源釋放。

為了克服這點,Cursor 團隊實施了嚴格的階層結構,模仿成功的人類工程組織:

  • 首席架構代理(Principal Architect Agents): 負責高階系統設計,並將龐大的「建造瀏覽器」目標拆解為子系統(例如「建置 CSS 解析器」、「實作網路堆疊」)。
  • 管理者代理(Manager Agents): 監督特定模組,將任務指派給工作代理並根據規格審查其輸出。
  • 工作者代理(Worker Agents): 執行特定編碼任務、撰寫單元測試並處理實作細節。

此結構允許代理群有效地平行化工作。當一群代理在實作 DOM 時,另一群可以同時構建網路層,管理者代理則確保這些系統之間的介面保持一致。

基礎設施與運算

支援這個代理群所需的實體基礎設施相當龐大。報告指出使用了大型伺服器,每台大約同時承載 300 個代理。這些代理每小時產生數千次 commit,這樣的開發速率對任何規模的人類團隊來說,若不遭受溝通開銷吞噬,是物理上難以協調的。

向規格驅動開發(SDD)的轉移

從 FastRender 實驗中浮現出的最重要洞見之一,是驗證了規格驅動開發(Specification-Driven Development,SDD)作為自主編碼的主要介面。在傳統開發中,程式碼是事實的來源;在 AI 代理群的時代,規格成為事實的來源。

代理們並未依賴模糊的提示。相反地,工作流程依賴嚴謹的規格,以結構化且可測試的語言定義意圖。這種方法與 Cursor 及其他 AI 領導者目前倡導的一系列方法論呈現一致性:

  1. SDD(Specification-Driven Development,規格驅動開發): 在產生任何一行程式碼之前,先定義「做什麼」與「為什麼」。
  2. BDD(Behavior-Driven Development,行為驅動開發): 使用情境來對齊期望。
  3. TDD(Test-Driven Development,測試驅動開發): 先撰寫失敗的測試以「鎖定」正確性。

透過把規格當作主要產物,首席代理能為工作者代理產生精確的需求。如果工作者代理未能產出通過由規格衍生測試的程式碼,它會被重置並被要求再試一次,或該任務會被重新分配。這個自我修正迴圈使系統能在一週內無需人工扶持而持續運行。

數量 vs 品質:產出分析

雖然程式碼量(300 萬行)驚人,但數量不等於品質。Cursor 團隊對輸出的限制保持透明。FastRender 瀏覽器存在渲染故障與效能問題,而這些問題在開發流程中,人類團隊可能會更早優化。

此外,「自主性」並非沒有問題。對專案的 GitHub(GitHub)歷史分析顯示,在該週的大部分時間內,CI/CD(CI/CD)管線都在失敗。直到實驗的最後幾天,代理群才成功解決整合衝突並達成通過的建置狀態。

這種「在失敗中前進(failing forward)」的方法是當前 AI 模型的特徵。他們不是完美的程式設計師,但很有韌性。代理群閱讀錯誤日誌、診斷建置失敗,並反覆修補程式直到管線轉為綠燈,這一點可能比初始程式碼產生更能顯示智慧。

關鍵技術觀察:

  • Git Submodules: 代理們智慧地使用 Git submodules 將官方網頁規範(WhatWG、CSS-WG)直接納入倉庫,確保他們能取得基準真實資料。
  • 風險規避: 在沒有明確階層時,代理傾向於風險規避,採取小而安全的變更。階層化的指揮結構迫使它們對複雜的端到端功能承擔責任。

對開發者生態系的影響

FastRender 實驗對軟體產業提出了強烈的警示。它顯示人類軟體工程師的角色正在快速轉變,從「程式碼的撰寫者」轉為「規格的架構師」與「代理的協調者」。

對企業軟體開發(software development)而言,這指向一個未來,像「舊系統程式碼現代化」或「平台遷移」——目前需人類團隊數月或數年的工作——可能會被分配給代理群,在一個週末內完成。Cursor 已暗示類似的內部成功案例,例如使用代理在其自身程式碼庫中,將大量程式碼從 Solid 迁移到 React,觸及超過 20 萬行程式碼且準確度高。

然而,這並不意味著開發者會立即過時。FastRender 瀏覽器雖然可運作,但缺乏人類工程師提供的微妙性、審美潤飾與以使用者為中心的設計選擇。相反地,它突顯了一個未來,開發者將在更高層次的抽象上運作,管理大量初級等級的 AI 代理來執行實作的繁重工作。

結論:能力的新基準

Cursor 透過 FastRender 的展示,確立了大規模自主軟體工程的存在性證明。結合 OpenAI 的強大模型與穩健的階層化代理框架,他們在一週內完成了過去被認為需數年才能達成的事。

隨著這些工具從實驗室走向生產環境,產業的焦點將從「AI 能寫程式嗎?」轉向「我們如何治理、規格化,並驗證 AI 代理群所產出的程式碼?」孤傲天才程式設計師的時代可能正在結束,但 AI 擴充的軟體架構師時代才剛剛開始。

精選