AI 編碼 2.0 分析、思考與探索實踐:從 Cursor Composer 到 AutoDev Sketch
在周末的公司【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 編碼工具,提升開發者的效率和體驗。