報告聚焦 AI 大模型領域,對過去一年的技術演進動態、技術趨勢、以及開源開發者生態資料進行多方位的總結和梳理。
在第二章《TOP 101-2024 大模型觀點》中,Thoughtworks AI 輔助研發工具與開源解決方案負責人黃峰達 (Phodal) 分析了 2024 年 AI 程式設計工具的進化路線。
全文如下:
2024 年 AI 程式設計工具的進化
與 2023 年相比,2024 年 AI 在軟體工程中的應用已經變得更加廣泛和深入。這一趨勢體現在 AI 程式設計工具的進化上,主要體現在以下幾個方面:
全面探索:AI 從輔助開發人員擴充套件到覆蓋軟體開發的整個生命週期,從需求分析到運維管理,每個階段都顯著提升了效率和質量。
演進路徑:AI 工具從個體使用擴充套件到團隊和組織層面。個體使用的 AI 工具如 AutoDev,團隊助手如 Haiven,以及組織層面的 AI 整合到內部 IM 和 Chatbot 系統中,全面增強了協作和效率。
形態變化:從本地 AI IDE 發展到領域特定的智慧程式碼生成工具。智慧雲開發環境如 Google 的 Project IDX 等工具,使得未來的開發流程更加智慧化和高效。
站在全球來看,在不同的國家、區域人們的關注點是不一樣的,比如在中國,人們更關注於如何提高軟體工程師的工作效率,而在其它一些區域,人們更關注於如何提高軟體工程的質量、如何輔助進行遺留系統的遷移。除了各自所處的數字化階段、水平不同,還存在一些技術人才數量、質量、分佈等方面的差異。
AI 技術已經從簡單的輔助開發人員發展到涵蓋軟體開發的整個生命週期。在這一過程中,AI 工具的應用範圍不斷擴充套件,從需求分析到運維管理,每個階段都得到了顯著提升。
從 2022 年 GitHub Copilot 的釋出,我們可以看到越來越多的 AI 工具開始涉足到軟體開發的不同階段。比如,面向需求階段的 Jira/Atlassian Intelligence,面向原型設計的 Vercel v0,面向編碼階段的 GitHub Copilot,以及運維階段的 Dynatrace Davis AI 等等。
就 2023 年的結論而言,基於人工智慧的工具與基礎大語言模型可以增強軟體開發在設計、需求、測試、釋出和運維等各個環節中的能力,提高質量和效率。但是,這些工具往往是破碎、割裂的,還可能並不適合我們現有的研發流程。
在市場上,我們也可以看到市面上的主流研發工具,如 JetBrains、GitHub(網站)等,都在逐漸加入 AI 功能,使得 AI 功能逐漸融入到我們的日常工作中。
在 IntelliJ IDEA 中,我們可以看到 AI 功能的加入,如:原生的向量化模型、基於語義化搜尋(SearchEverywhere)、結合補全統計的機器學習補全外掛 Machine Learning Code Completion、適用於單個程式碼行的 Full Line Code Completion 等等。
而除了 GitHub Copilot 工具本身,它還開放了其外掛能力,使得我們可以定義自己的 AI 智慧體,以適應我們自己的工作流程。
在多階段協同方面,2024 年有了更多的變化,比如在智慧運維領域,AI 可以結合判別性 AI 分析日誌,生成式 AI 分析原因,再結合智慧體根據執行錯誤,自動修程式碼復問題等;在測試領域,AI 除了輔助進行測試用例的生成,還可以生成對應的單元測試程式碼,甚至是自動化測試程式碼;在 UI 設計領域,AI 可以直接生成對應的程式碼,基於提示詞來修改 UI,所生成的是最終的 UI 程式碼,而不是設計稿。
諸如此類的變化,使得 AI 所能輔助的範圍更加廣泛,從而使得 AI 在軟體工程中的應用更加全面。
從企業採用 AI 的路徑來看,我們會發現:越來越多的組織開始探索在組織層面使用 AI 輔助整體軟體研發。因而,AI 輔助研發組織的技術藍圖便也逐漸清晰起來。
從形態上可以分為:帶擴充套件能力的 IDE 外掛、團隊 AI 助手、結合 AI 的內部 IM,以及作為基礎能力的 Chatbot。
AI 程式設計工具應該怎麼設計才能提效?在當前來說,國內的環境下,由於我們的目標是實現可見的效率提升,即要透過可度量的指標。因而,可以看到一些明顯的變化:
1. 程式碼補全與生成是最容易度量的指標,並且市面上也以此類為主。
2. 在不同環節,從時間角度來計算,如程式碼審查、程式碼測試等。
3. 結合程式碼的問答,以減少工具切換、複製貼上,提高效率。
過去,AI 程式設計工具主要針對的是個人開發者。但隨著探索不斷深入,我們發現,在結合團隊或組織的力量後,AI 程式設計工具出現了以下趨勢:多樣的 AI 工具正在融入自己的開發流程中;AI 工具開始融入內部的一系列規範;不斷結合內部知識庫,提升內容生成的質量;開始構建自己的場景化能力。
故而,從個體到團隊,再到組織,都在思考如何擴大 AI 的應用範圍。
在設計團隊 AI 助手時,我們需要考慮到團隊的拓撲結構,以及團隊的工作流程。在一個組織中,必然會有大量不同型別的團隊,每個團隊受限於業務盈利模式等因素,其採用的技術、工作流程等都會有所不同。比如,核心的業務部門可以享受自己特有的開發流程,而其它非核心部門則會採用一些標準化的流程。
考慮到盈利水平高的部門,通常是大型團隊,他們不僅可能有自己的 AI IDE 外掛,還會有自己的 AI 團隊。因此,我們也建議設計一個可以讓不同團隊共享知識的 AI 團隊助手。
回到整體組織層面,我們也會看到內部的 IM 工具也在融合 AI 功能,比如尋找負責人 / 專家、運維 Chatbot 輔助分析部署失敗問題、CI/CD 問題分析、AI 會議建立與管理等等,以提升協作體驗。
在另外一方面,我們也會有大量的其它 Chatbot 在不同的研發團隊中使用,諸如於輔助平臺的使用、文件查詢等等。
形態變化:從本地 AI IDE 到領域特定的智慧程式碼生成
與通用性的 AI 輔助相比,領域特定的 AI 輔助效果更好,因為它更瞭解領域的特點,更容易生成符合領域規範的程式碼。從智慧程式碼生成的角度來看,由於過去包含大量的語料知識,生成的程式碼質量更高,更符合領域規範。
在前面,我們已經看到了 AI 輔助研發中心的概念,即在一個組織中,AI 輔助研發中心可以為不同團隊提供 AI 能力,以提升整體的研發效率。需要注意的是,AI 在快速生成大量程式碼的同時,也會帶來一些問題,如程式碼質量、安全性等。我們需要考慮如何在 AI 生成程式碼的同時,保證程式碼的質量。
生成式 AI 與低程式碼平臺結合,可以在多個方面實現增強的生產力和創新。文字生成與聊天機器人、從 PDF 構建介面、工作流程自動生成、自助式分析都是經典場景。
此外,多模態 AI 程式碼的生成,諸如於 Google 的 ScreenAI。它可以將影像和文字結合起來,生成對應的 DSL,進而轉換成不同的程式碼。
在雲時代,大型組織構建了大量的雲 IDE 和雲基礎設施,以嘗試賣出更多的雲服務以及解決最後一公里的部署問題。儘管,受限於雲 IDE 能力、網路與計算能力,雲 IDE 採用並不高,但是隨著 AI 的發展,我們可以看到更多的智慧雲開發環境的出現。
我們非常看好諸如 v0.dev 這一類針對於領域特定的開發工具。它可以快速幫助我們構建出一個原型,然後再結合其它 AI 工具,如程式碼審查、程式碼測試等,可以大大提高我們的開發效率。
還有諸如 Google Project IDX 這一類 AI 輔助型工作區。IDX 支援眾多框架、語言和服務,還與 Google 產品整合,可簡化開發工作流程,讓開發者可以快速、輕鬆、高效地跨平臺構建和釋出應用。儘管 IDX 還非常早期,但是我們可以看到,未來的雲 IDE 將會更加智慧化,更加適應我們的工作流程。在國內,我們也可以看到 Babel Cloud、MarsCode 等一系列雲 IDE 工具,也在不斷的發展中。
黃峰達(Phodal)
Thoughtworks AI 輔助研發工具與開源解決方案負責人,開源 Unit Mesh AI 輔助研發方案的發起人,包含 AI IDE 外掛 AutoDev 等工具;智慧體程式語言 Shire 的創始人,架構治理平臺 ArchGuard 的核心開發者。
他在生成式 AI 輔助需求分析、開發和質量保障方面為多家金融和網際網路企業提供落地支援,著有《前端架構:從入門到微前端》《自己動手設計物聯網》等多本書籍。
閱讀完整報告:https://talk.gitee.com/report/china-open-source-2024-annual-report.pdf