引言:

從“代碼補全”到“編輯預測”

在過去的兩年中,大語言模型(LLMs)從根本上重塑了軟件開發的工作流程。“智能體編碼”(Agentic Coding)等新範式使開發者能夠根據高層指令快速生成整個代碼倉庫級別的代碼,顯著提升了開發速度。然而,社區中逐漸流行起一個説法——“AI 善後工程師”:Agentic Coding 雖能迅速完成 80%的任務,但剩下的 20%——那些涉及邏輯校準、邊界處理、跨模塊協調與工程細節打磨的部分——往往仍需人工介入。

儘管如此,傳統的代碼補全工具仍侷限於“中間填充”(Fill-In-the-Middle, FIM)範式。這類模型通常僅基於局部上下文,在光標位置預測一段連續的代碼片段,缺乏對整體編輯意圖的全局理解。這種單步、靜態的方法在現實場景中表現不足——例如多行代碼修改、函數重構或跨文件依賴調整——無法支持連貫且結構化的開發操作序列。

我們推出了 Qoder NEXT 模型。Qoder NEXT 的核心理念是:代碼開發本質上是一系列連續的、上下文感知的編輯動作(Action Sequence),而非孤立的 Fill-In-the-Middle 生成任務。

為解決這一侷限性,我們提出一個端到端的框架,其建立在三大關鍵組件之上:

  • 冷啓動訓練:通過抽象語法樹(AST)精確模擬真實世界的代碼編輯軌跡;
  • 數據飛輪機制:從高探索性部署的原型模型中捕獲真實的編輯行為;
  • ActionRL:一種新穎的偏好對齊算法,確保在序列化決策層面深度契合開發者的意圖。

破局 FIM:

基於 AST 解析的編輯軌跡模擬

傳統的 FIM 訓練模式通常是將代碼隨機掩蓋一段,讓模型預測空缺內容。這種方式學習到的是代碼的“靜態概率分佈”,而非“動態修改邏輯”。為了讓 Qoder NEXT 模型學會“如何編輯”,我們放棄了隨機掩碼,轉而利用 AST(抽象語法樹) 來逆向構造真實的編輯軌跡。

結構化意圖的抽象

在真實開發中,一個意圖往往關聯着多處改動。我們利用 AST 解析器(如 Tree-sitter)在數百萬行高質量代碼庫中識別出核心編輯場景,並自動化地模擬用户的操作鏈條。

以標識符重命名(Identifier Renaming)為例,這不僅是文本替換,而是一個典型的結構化編輯動作:

  1. 動作觸發(Trigger Action):我們定位到一個變量、函數或類的聲明位置,並模擬用户對其進行重命名。
  2. 聯動推薦(Ripple Effect):利用 AST 的作用域分析(Scope Analysis)和引用鏈(Reference Chain),自動找出該標識符在當前項目中的所有調用點。
  3. 軌跡構建:我們將後序的系列改動轉化為有序的動作序列:[Edit Action 1] -> [Edit Action 2] -> ...。

模擬複雜的真實編輯

除了標識符重命名,Qoder NEXT 的冷啓動數據還涵蓋了以下高階場景:

  • Signature Change(簽名變更):當用户在函數定義中增加一個參數時,模型在所有調用處,自動插入佔位符或匹配局部變量;
  • Logic Extraction(邏輯提取):將一段代碼塊重構為獨立變量/函數,模型在原位置調用獨立變量/函數;
  • Type Refinement(類型細化):從接口類型到接口的具體實現;
  • Method Override(方法覆寫):在父類或接口中新增一個方法簽名時,自動識別子類並生成符合語義的覆寫實現;
  • Error Refactoring(錯誤重構):將LSP暴露的異常或錯誤代碼片段,重構為邏輯正確的代碼片段;
  • Automatic Import(自動導入):引用一個尚未導入的類型、函數或常量時,在正確作用域插入符合項目風格的導入語句。

通過 AST 模擬,Qoder NEXT 模型在預訓練階段接觸的就是“有因果關係的修改”,這奠定了它處理跨行、跨語義編輯的基礎。

構建數據飛輪:

從原型模型到偏好捕獲

軌跡模擬解決了“從 0 到 1”的問題,但真實的開發場景遠比 AST 模擬複雜。開發者的長程歷史編輯是什麼?他們為什麼拒絕某個補全?這些信息只能從真實交互中獲取。

高探索性的交互設計

我們將 Qoder NEXT 原型模型集成到 IDE 中,作為一個高探索性(High Exploration)的功能組件。Qoder NEXT 始終在預測開發者的“下一步動作”。當用户進行一次編輯後,模型會立即計算出潛在的後續編輯點,並及時展示給用户。

這種設計允許我們收集(在用户隱私策略允許的情況下)到極高質量的用户行為日誌

  • 顯式採納(Explicit Accept):用户通過Tab鍵接受了整串編輯建議。
  • 局部修正(Partial Edit):用户接受了前兩個動作,但對第三個動作進行了手動微調。
  • 顯式拒絕(Explicit Reject):用户直接忽略建議繼續輸入,或者按下 Esc 鍵。

信號收集與偏好建模

通過對原型模型的數據標註,我們將顯式行為轉化為 (Context, Response_Accepted 1, Response_Accepted 2, ..., Response_Rejected 1, Response_Rejected 2, ...) 的多元組。

傳統的模型優化只關注“採納”的正例,但在 Qoder NEXT 的進化中,“拒絕”信號藴含的信息量更大。如果模型推薦了 obj.getName(),而用户手動改成了 obj.getDisplayName(),這説明模型在特定語義場景下缺乏對業務邏輯的判斷。這種細微的偏好差異,正是提升模型“準確率”的關鍵。

突破對齊困境:

ActionRL 的誕生

在利用用户反饋進行 RLHF(強化學習)時,傳統的對齊算法展現出了明顯的副作用。在連續動作序列中,正例和負例往往高度耦合,這要求我們必須進行更細粒度的損失計算。

序列耦合帶來的“過度抑制”

在代碼編輯中,一組對齊序列中,正例序列y^w和負例序列y^l通常具有極長的公共子串。一個案例如下:

  • Context: user = User.find(id)
  • 用户真實意圖 y^w: user.update(name: "New"); user.save(); print("Done");
  • 模型錯誤預測 y^l: user.update(name: "New"); user.delete(); print("Done");

在這裏,第一個動作 user.update(name: "New")和第三個動作print("Done")是完全正確的,分歧點出現在第二個動作。

  • 樸素對齊算法的侷限:它將 y^l作為一個整體進行懲罰。由於y^l包含了正確的 user.update; print,模型在優化過程中會降低對這部分正確動作的概率分配。
  • 結果:模型變得“畏縮”,甚至不敢給出任何建議,因為它害怕後續某個微小的錯誤導致整個補全路徑被否定。

ActionRL 的方案設計

為解決這一問題,我們提出 ActionRL,一種聚焦於關鍵分歧動作的細粒度偏好優化算法。其核心思想是:將學習目標從“整個序列的優劣”細化為“在首個錯誤決策點上做出更優選擇”

A. 定位關鍵分歧動作

給定一組偏好樣本——其包含標註為“採納”的軌跡(chosen trajectory)與標註為“拒絕”軌跡(rejected trajectory),ActionRL 首先對每條軌跡進行逐 action 對齊,識別出它們首次出現差異的位置。該位置即為行為分歧點(Behavioral Divergence Point, BDP),代表模型在該時刻做出了不同的動作選擇。

值得注意的是,分歧點之前的上下文完全一致,意味着模型在此前的推理路徑上並無偏差。因此,性能差異可歸因於該點的動作選擇。

B. 截斷似然估計

不同於樸素對齊算法對整條序列計算似然,ActionRL 將優化目標局部化至分歧點處的條件分佈。模型被鼓勵在共享上下文條件下,賦予採納或修正動作更高的概率,同時抑制拒絕動作的似然。這一設計確保梯度更新直接作用於導致結果分化的決策節點,而不會被後續action所幹擾。

C. 損失函數重構

在許多實際場景中,拒絕軌跡在分歧點之後包含部分正確的子序列,ActionRL 通過截斷損失計算範圍,有效屏蔽了此類後置信息的干擾,使對齊訓練信號更加聚焦且魯棒。通過這種形式化處理,ActionRL 確保了:

分歧點懲罰:模型明確感知到y_{<t^*}(共有前綴)是中性的或受保護的,真正的懲罰集中在 y^l_{t^*}這個錯誤的決策點上。

後綴忽略:對於  t > t^*的部分,由於負例序列已經偏離意圖,其後續內容(即便可能包含正確動作)也不會對模型產生錯誤的干擾。

實驗結果與工程思考

在實踐中,Qoder NEXT 模型展現出了顯著優越的靈活性。

模型效果優化

經過 ActionRL 對齊後,Qoder NEXT 模型的關鍵性能指標顯著提升:

  • 代碼生成比例提升超過 53%;
  • 執行一致性顯著增強:模型能夠遵循“啓動重構即完成全套動作”的內在邏輯,顯著減少不完整執行的問題。

這些技術進步直接轉化為實際的用户價值:

  • 代碼採納率提高 65%
  • 細粒度推理準確率持續穩步提升。

實驗結果驗證 Qoder NEXT 在應對專業軟件開發中複雜、精細需求方面的可靠性與實用性顯著提升。

邁向智能編輯的下一代演進:Qoder NEXT 模型與 ActionRL 偏好對齊實踐_結構化

避免過度保守的預測

在對比實驗中,我們觀察到,採用樸素對齊算法訓練的模型雖在首Action準確率上略有提升,但其在多樣化場景下的覆蓋率顯著下降,模型表現出為避免生成錯誤輸出而傾向於抑制預測行為。相比之下,ActionRL 在維持高準確率的同時,顯著提升了模型的預測活躍度與場景覆蓋能力,避免了因局部錯誤懲罰而導致的全局保守行為。

實時反饋循環

目前,Qoder NEXT 模型的數據飛輪每 24 小時循環一次。我們從原型環境日誌中提取分歧樣本,經過自動化的 ActionRL 訓練後,次日便能觀察到模型在真實場景下的效果改進。

總結與未來展望

從 FIM 到 Qoder NEXT 的轉變,是從“代碼補全”走向“編輯預測”的關鍵一步。Qoder NEXT 模型不只是在幫你寫代碼,它是在理解編輯邏輯,並基於理解進行預測。

通過 AST 注入結構化知識,再通過 ActionRL 在序列層面精細化地對齊用户偏好,我們正在構建一個能夠真正理解“下一步該做什麼”的 AI 夥伴。在未來,隨着動作空間的進一步擴展,Qoder NEXT 將具備完整覆蓋研發流程(如完整的功能編寫、測試用例生成及執行、代碼提交、Bug修復)的能力。

立即更新至Qoder AI IDE 版本至0.2.28體驗Qoder NEXT全新升級能力

https://qoder.com/download

邁向智能編輯的下一代演進:Qoder NEXT 模型與 ActionRL 偏好對齊實踐_數據_02關注我,掌握Qoder最新動態並且觀看視頻

邁向智能編輯的下一代演進:Qoder NEXT 模型與 ActionRL 偏好對齊實踐_開發者_03