在週末的公司【AI4SE 效能革命與實踐:軟體研發的未來已來】直播裡,我分享了《AI編碼工具 2.0 從 Cursor 到 AutoDev Composer》主題演講,分享了 AI 編碼工具 2.0 的核心、我們的思考、以及我們的 AI 編碼工具 2.0 探索實踐。
在這篇文章中,我將分享這次演講的內容,希望能夠給大家帶來一些啟發。
一、AI 程式設計工具 2.0 (趨勢分析)
我們分析了市面上最受歡迎的 AI 程式設計工具,如 Cursor、GitHub Copilot Edit、WindSurf、Cline 等,簡單總結一下新一代 AI 程式設計工具的特點:
AI 程式設計工具正在從程式碼補全、程式碼預測,到更加智慧、更耗費 token 的 AI 自動化編碼與驗證,以及正在發展中的非同步 AI 編碼。
基於這些特點,我們認為 AI 程式設計工具 2.0 的核心特點應該是:
-
Agent 驅動。依賴於基礎模型的強大推理能力,結合在程式設計工具中提供更快、更好的獲取上下文,可以讓 AI 程式設計工具更好地理解開發者的意圖,並編寫出更加符合開發者預期的程式碼。
-
開發者體驗優先。結合開發者日常活動,更好的滿足開發者的心流,諸如編輯預測、自動測試等;諸如 Cursor 結合開發者活動提供了大量機制來降低心智成本,以及應對失敗和重試等。
-
自動化校驗。即自動化校驗 AI 生成程式碼的質量、業務邏輯正確性、修復幻覺導致的問題,諸如 patch等,從而在機制上減少幻覺帶來的影響;諸如 Cursor 整合大量實用的 Lint、Terminal 等工具,提供自動化檢驗手段。

當然了,它們還有其它非常不錯的正規化:
-
容錯式互動:採用「生成-校驗-回滾」的三階段機制降低心智負擔
-
場景化聚焦:針對程式碼評審、漏洞修復等場景設計專用互動流
當前主流的 AI 編碼 2.0 工具主要集中在 VSCode 平臺上,而 VSCode 只是一個編輯器,它的 API 限制了 AI 編碼工具的功能擴充套件,阻礙了更高階功能的實現。我們便開始思考,直接在 IDE 上構建 AI 編碼工具會不會是一個更好的選擇?
二、我們的 AI 編碼工具 2.0 的思考
我們在內部做了一些新一代編碼工具收集,發現典型的 Intellij IDEA 使用者,會使用 Cursor 來生成程式碼,然後再回到 IDEA 中進行測試和除錯。分析其中的原因,我們發現:儘管 Cursor 能提升開發效率,但是它並沒有 IDEA 帶來的提升大,即 IDEA 與編輯器的能力差異,使得 IDEA 提升反而更大。
因此,我們開始思考,如何更好的開發 AI 編碼工具 2.0?
思考 1:編輯器優勢在於體驗,IDE 優勢在於生態整合

我們簡要分析了編輯器與 IDE 的優勢與劣勢:
VSCode
-
顯著優勢:可以快速開發功能原型、迭代;
-
缺點:外掛豐富但是質量低,需要重新開發和設計。儘管有 LSP(Language Server Protocol)、DAP(Debug Adapter Protocol)等,MCP(Model Context Protocol)等,但是並不能提供非常好的整合。
Intellij IDEA 系列
-
顯著優勢:開箱即用,高質量的官方外掛可以提供高質量的上下文
-
缺點:開發成本高、速度緩慢、文件缺失(AI 無法生成靠譜的程式碼)
因此,我們認為,AI 編碼工具 2.0 應該更多的藉助工具生成的能力,
思考 2:藉助 IDEA 外掛生態,構建端到端自動化

在現有可參考的工具裡,IDEA 是一個非常好的示例,諸如在後端 API 開發場景,它非常好的整合【設計-開發-校驗】相關的工具生態。諸如:
-
設計:Swagger、PlantUML、Mermaid 等工具
-
開發:HttpClient、Curl、Database 外掛等
-
校驗:JUnit、Playwright、SonarLint 等
有了這些外掛後,我們可以構建面向 AI 的介面,提供更好的提示詞、工具,以及對應的校驗機制。
思考 3:構建高質量的上下文,減少幻覺產生示例

以後端開發為例,我們可以透過三種工程,構建 Agent 驅動的 AI 編碼工具核心:
-
軟體工程的上下文工程。獲取專案中的關鍵上下文:諸如於:依賴資訊、資料庫資訊、框架資訊等;示例:This workspace use Gradle+Java+JDK_18;This project use MariaDB;You are working on a project that uses Spring Boot 2.7.10,Spring MVC,JDBC to build business logic.
-
函式呼叫工程(OpenAI)。即持續圍繞不同的場景,讓模型更好的理解不函式如何呼叫,做更好的整合。
-
提示詞工程(Claude)。面向不同的模型,提供思考過程範例,讓模型更好的學習。
更好的上下文,配合上更好的提示詞,意味著更少的幻覺。也因此工具的各種指標,諸如可用性、接受度、準確度等,都會有所提升。
三、我們的 AI 編碼工具 2.0 探索實踐:AutoDev Sketch
基於我們的分析和思考,我們開始構建我們的 AI 編碼工具 2.0:AutoDev Sketch。它的核心應該是:高質量系統提示詞 + LLM “推理”能力,獲取 IDE 中的關聯上下文,渲染為互動式檢視(Sketch View)。

1. 構建高質量的上下文與工具使用

鑑於我們的思考,我們在 AutoDev Sketch 深度集成了 IDEA 外掛,諸如於 Database 元件,提供統一的資料庫能力,作為上下文、工具封裝,快速幫助開發者進行資料庫處理。它可以在三個步驟幫助 AI 更好地與資料庫互動:
-
系統提示詞。當用戶連線了資料庫時,會在系統詞中新增:User's workspace context is: This project use MariaDB 11.5.2-MariaDB
-
工具使用。與此同時,AI 在識別到需求後,可以呼叫
Database
工具,來獲取資料庫資訊(/database:schema
),以幫助生成對應的程式碼。 -
SQL 互動。最後,模型不僅可以生成 SQL 程式碼,還可以與資料庫進行互動,以驗證生成的程式碼是否正確。同時,我們也將在未來提供對應的 SQL 程式碼校驗機制。
除了 Database 元件,我們還提供了其他外掛,如:HttpClient、SonarLint 等,以幫助開發者更好地進行開發、測試、校驗。
2. 豐富的工具構建自動採納的最後一公里
與 Cursor 這一類基於 VSCode 的 AI 編輯器相關,我們加入了更多的 IDE 原生的功能,以提升開發者的體驗。如下是 AutoDev Sketch 的工具列表:

諸如:
run
、 refactor
、 structure
等,都是 IDE 原生的功能,我們將其封裝為工具,以幫助 AI 更好地理解開發者的意圖,並生成更加符合開發者預期的程式碼。3. 多樣化 Sketch 檢視構建開發者心流的連續性

在 AI 針對問題生成程式碼後,我們將程式碼渲染為互動式檢視(Sketch View),以幫助開發者更好地理解程式碼,提升開發者的體驗。這是就需要充分考慮不同場景下的互動可能性, 如下是 AutoDev Sketch 提供的連續性互動示例:
-
多種化的 Patch/Diff 處理, 並針對生成程式碼進行 Lint 檢查等
-
前端應用在啟動 dev 服務時, 自動開啟 WebView 檢視編譯正確
-
生成依賴檔案時,可提供依賴的安全檢查
-
等
通常這種連續性,降低了開發者的心智負擔,提升總體的開發體驗。
AI 編碼工具 2.0 總結

我們可以對 AI 編碼工具 2.0 的核心特點進行總結:分考慮與研發知識庫、工具生態的結合,部署最新模型以重新整理認知,關注開發者日常活動
-
充分利用研發生態:結合研發工具鏈和知識庫,提升 AI 編碼工具的智慧化。
-
開發者編碼心流:透過持續性自動化修改,提升開發效率。
-
多種規格 AI 模型支撐:透過規劃、理解、補全等不同模型,滿足多樣化的開發需求。
透過 AutoDev Sketch 的探索,相信大家也知道如何透過高質量上下文、豐富的工具整合和互動式檢視,構建下一代 AI 編碼工具,提升開發者的效率和體驗。