了解 AI 程式碼編輯器 Cursor 如何運用線上強化學習(RL)技術,打造出一個全新的 Tab 模型。新模型不僅將建議數量減少了 21%,更將接受率大幅提升 28%,為開發者帶來更流暢、更少干擾的編碼體驗。
對開發者而言,追求極致的生產力是永恆的課題。在 AI 時代,一個好的程式碼編輯器扮演著至關重要的角色。在 Cursor,提升開發者生產力是其團隊的核心目標,而其中的一個關鍵角色,就是 Cursor Tab——一個能預測開發者在整個程式碼庫中下一步行動的智慧系統。
每當使用者敲下一個字元或移動游標,Cursor Tab 就會開始運作,試圖預測其意圖。如果系統有足夠的信心,就會以灰色文字顯示建議,使用者只需按下 Tab 鍵即可接受。
這個系統每天處理超過 4 億次的請求,這意味著 Cursor 手上握有海量的數據,清楚知道哪些建議被用戶欣然接受,哪些又被無情地忽略。這篇文章將揭曉 Cursor 如何利用這些寶貴的數據,透過「線上強化學習」(Online Reinforcement Learning),讓 Cursor Tab 變得前所未有的聰明。
Cursor 的做法可能有點非主流。多數大型語言模型(LLM)的供應商,習慣於使用靜態資料集或付費標籤員來訓練模型,每隔幾個月才發布一次所謂的「大版本更新」。但 Cursor 的模式不同,其團隊每天都會頻繁地向用戶推出新的微調模型,並利用即時數據進行訓練,讓 AI 的進化真正「活」起來。
不只是更聰明,而是更懂得「閉嘴」
任何開發者或許都有過這樣的經驗:AI 助手不斷跳出一些毫不相干的建議,打斷了正順暢的思緒,讓人煩躁不已。這就是「雜訊建議」(Noisy Suggestions)的問題。
維持一個高的建議「接受率」至關重要。如果接受率太低,就表示系統推送了太多錯誤的建議,這不僅沒幫助,反而會干擾開發者的心流(flow state)。
要實現高接受率,不單是讓模型變得更聰明,更關鍵的是要教會它何時該保持沉默。有時候,程式碼的上下文資訊不足,即使是擁有完美知識和推理能力的 AI,也無法猜透使用者的心思。在這種情況下,最好的做法就是——什麼都不建議。
拋開舊方法:Cursor 如何用「策略梯度」訓練 AI
要過濾掉那些惱人的低品質建議,最直觀的方法可能是訓練一個分類器。例如,有研究發現 GitHub Copilot 曾使用類似方法,透過一個羅吉斯迴歸模型,根據程式語言、前一個建議是否被接受等 11 個特徵來打分數,當分數低於一個門檻(比如 15%)時,就不顯示建議。
這個方法可行,然而,Cursor 想要一個更根本、更優雅的解決方案。目標不是在模型產生壞建議後再把它們過濾掉,而是希望 Tab 模型從一開始就不要產生壞建議。
這就是「策略梯度」(Policy Gradient)方法登場的時候了。
簡單來說,策略梯度是一種最佳化「策略」(Policy)的方法,目標是最大化「獎勵」(Reward)。在這裡:
- 策略(Policy):就是 Tab 模型本身。
- 獎勵(Reward):是為模型採取的每個行動所賦予的分數。
這個演算法的運作方式,就像一個反饋循環。它允許模型隨機嘗試不同的行動(顯示或不顯示建議),觀察哪個行動能帶來高獎勵(用戶接受了建議),哪個行動導致低獎勵(用戶拒絕了建議)。接著,它會正向強化那些帶來高獎勵的行為,同時抑制那些導致低獎勵的行為。
為此,Cursor 設計了一套獎勵規則。舉個例子,假設目標是讓模型只在接受率預期超過 25% 時才提出建議,那麼獎勵可以這樣設定:
- 建議被接受:獎勵 +0.75
- 建議被拒絕:懲罰 -0.25
- 未顯示建議:獎勵 0
透過這個機制,模型會為了最大化總獎勵,而學會只在它自己估計接受率夠高時才出手。它在內部自己建立了一個關於接受率的判斷模型,而剩下的就交給最佳化演算法去處理。
不斷進化的 AI:Cursor 的線上學習循環
策略梯度方法有一個前提:用來訓練的數據,必須來自正在被最佳化的那個模型。這意味著,一旦模型更新了,就不能再用舊模型的數據,因為那已經是「過時」的資訊。
為了取得最新鮮、最有效的「線上策略」(on-policy)樣本,Cursor 必須快速地將新模型部署給用戶,觀察它的表現,然後將這些新的互動數據立即投入到下一輪的訓練中。
這對 Cursor 的基礎設施是個不小的考驗。整個系統需要一個高效的循環,從用戶那裡收到一個建議的互動數據,到這些數據被用於訓練下一個模型,時間要盡可能短。目前,Cursor 推出一個新的模型檢查點並收集下一輪數據,大約需要 1.5 到 2 小時。這在 AI 產業中已經算是相當快的速度,但 Cursor 相信,未來還有很大的進步空間。
更少打擾,更高效率:新 Tab 模型的亮眼成績
透過上述方法,Cursor 成功訓練出了一個全新的 Tab 模型,而它現在已經成為 Cursor 編輯器中的預設選項。成果非常顯著,可以直接看數據:
| 指標 | 舊模型 | 新 RL 模型 | 變化 |
|---|---|---|---|
| 建議顯示率 | 基準 | 基準 | -21% |
| 建議接受率 | 基準 | 基準 | +28% |
簡單來說,新的 Tab 模型學會了在更恰當的時機提出建議,從而減少了 21% 的打擾,同時它提出的建議品質更高,讓接受率大幅提升了 28%。
Cursor 希望這次的改進能顯著提升開發者的編碼體驗,未來也計畫繼續深化這些方法的應用。這不僅僅是一次模型的更新,更是其團隊對打造極致開發者工具承諾的體現。


