Composer 2 技術報告
Cursor 研究團隊
1 簡介
Composer 2 是一款專為代理式軟體工程(agentic software engineering)設計的專用模型。該模型展現出強大的長期規劃與編碼智慧,同時保持高效解決互動式使用問題的能力。在我們針對真實世界軟體工程的基準測試 CursorBench 上,該模型表現優異(圖 1),同时在 SWE-bench Multilingual [28] 和 Terminal-Bench [39] 等公開軟體工程基準測試中也達到頂尖水準。
該模型訓練分為兩個階段:首先進行持續預訓練(continued pretraining)以提升模型的知識儲備與潛在編碼能力,接著進行大規模強化學習(reinforcement learning),透過更強的推理能力、準確的多步驟執行,以及長程真實編碼問題的連貫性,來提升端到端的編碼效能。
Composer 訓練的核心原則,是盡可能模擬真實使用者面臨的挑戰,以最小化訓練與測試之間的落差。我們開發基礎設施,支援在與部署模型相同的 Cursor 框架中進行訓練,使用等效的工具與結構,並採用與真實問題高度吻合的環境。為了衡量模型在日益困難任務上的能力,我們引入了一個源自大型程式碼庫(包括我們自身)中真實軟體工程問題的基準測試。
Composer 2 是一款頂尖層級的編碼模型,並展示了訓練強大領域專用模型的流程。在我們的 CursorBench 評估中,該模型相較於先前的 Composer 模型(61.3 分)有顯著準確性提升。在公開基準測試中,該模型在 Terminal-Bench 上得分 61.7,在 SWE-bench Multilingual 上得分 73.7(均為我們框架下的結果),與最先進系統相當。
CursorBench 效能表現

圖 1:Composer 2 相較於先前的 Composer 模型有大幅進步,達到與最先進模型競爭的效能。透過完全專注於編碼能力,Composer 在保持競爭力的同時,服務成本低於最先進模型的 API 定價。詳細評估請參見第 5 節。
2 背景與相關研究
程式碼生成已成為大型語言模型的突出應用 [15, 9, 7, 31]。程式碼提供了豐富的挑戰性訓練資料來源,補充了大多數大型模型的語言資料 [16, 30, 36, 51, 19, 10, 5, 44, 25, 71, 72, 62, 41]。早期的程式碼生成應用通常專注於自動完成功能。隨後,指令微調(instruction tuning)將模型轉變為能夠回應使用者請求的編碼助手 [37, 73, 83, 43]。在過去一年中,軟體工程代理(software engineering agents)已廣泛採用,推動模型超越對話形式,能夠自主導航程式庫並解決複雜的工程任務 [75, 76, 70, 49, 23]。
軟體工程代理旨在自主行動以解決給定的任務提示。給定一個環境(即程式碼庫和用於程式碼執行的隔離容器),以及賦予代理任務的提示 x,代理會產生一系列動作 a₁, ..., aₜ 的展開(rollout),每個動作進行一次或多次工具呼叫並產生回應 y₁, ..., yₜ。工具呼叫可能修改底層環境,展開的結果是此環境的最終狀態。每個動作 aᵢ 都是透過從語言模型策略 πθ(aᵢ | x, a₁, y₁, ..., aᵢ₋₁, yᵢ₋₁) 中取樣選取,之後根據程式碼的正確性、簡潔性及符合軟體工程原則的程度給予獎勵。與競賽式程式設計等更受限的環境相比,強大的軟體工程代理必須進行非微不足道的探索、撰寫自己的測試,並構建解決任務提示所需的最小變更。
Composer 2 可使用一組有限的通用工具,包括讀取和編輯檔案、執行 shell 命令、使用 grep 或語意搜尋檢索程式碼庫,以及搜尋網路。其提示包含系統訊息、工具呼叫格式規範、近期檔案資訊、過去的使用者訊息和當前任務。此流程最常見的結果是對程式碼庫環境中檔案的一組變更,但也有許多其他常見用例,例如回答問題、撰寫計畫、解決版本控制問題或監控長時間運行的工作。
我們對 Composer 2 的主要研究方向是探討如何透過擴展模型訓練來可靠地提升真實世界編碼的效能。我們透過兩個不同的訓練階段來實現此目標:持續預訓練(第 3 節)和異步強化學習(第 4 節)。為了衡量進展,我們建構了一組具有挑戰性的基準測試(第 5 節)。
3 持續預訓練
持續預訓練階段旨在提升語言模型的基礎知識,特別是在編碼領域。這種持續預訓練早已被證明能大幅改善下游效能 [20, 24]。更進一步,近期的模型採用分階段訓練方法,逐步過濾以獲得更高品質的資料 [22, 69, 77]。雖然我們從已使用大量程式碼資料自然訓練的基礎模型開始,但我們發現額外的監督式學習能可靠地提升知識基準測試的表現,並改善最終編碼代理的編碼效能。
我們使用內部評估和推論效能考量來選擇基礎模型。我們的評估衡量內部程式碼庫的困惑度(perplexity)、編碼知識和狀態追蹤能力。更多詳情請參見附錄 B。這些評估使我們選擇 Kimi K2.5 [67] 作為 Composer 2 的基礎模型,這是一個擁有 1.04T 參數、32B 活躍參數的專家混合(Mixture-of-Experts)模型。
3.1 訓練
我們將 Kimi K2.5 擴展至持續預訓練階段,使用以程式碼為主的大型資料混合。此階段的目的是透過專門化模型的編碼知識與能力,為後續的代理式 RL 訓練提供基礎模型。我們將此階段分為三個部分:大部分運算資源投入在 32k token 序列長度,接著是較短的長上下文擴展階段至 256k 序列長度,最後是在目標編碼任務上進行簡短的 SFT 階段。訓練在 NVIDIA B300 上使用 MXFP8 精度執行,採用 AdamW 優化器。更多訓練細節請參見第 6.1 節。訓練期間,我們在內部程式碼庫上測量評估損失,發現損失在整個訓練過程中呈對數線性下降。

圖 2:持續預訓練轉化為下游 RL 效能。左圖:我們在較小的 Qwen 模型上研究此關係,檢查在不同 token 數量上訓練的檢查點。右圖:模型經歷訓練困惑度的穩定下降。
持續預訓練最終旨在提升下游 RL 效能,兩階段之間的關聯是當前研究的热点。我們透過將持續預訓練方法應用於 Qwen3-Coder-30B-A3B [68] 來研究程式碼庫困惑度與 RL 效能之間的關係。持續預訓練在三個對數間距的運算層級上進行:小型、中型和大型。每個檢查點隨後在小資料集上進行 SFT,然後進行相同的 RL 運行。圖 2(左)顯示 SFT 後的最終損失與固定步驟數後的 RL 獎勵之間的關係,證明交叉熵損失確實能預測下游 RL 效能。
多 token 預測(Multi-Token Prediction):為了在生產環境中更快地服務模型,我們訓練額外的多 token 預測(MTP)層 [17, 11] 以用於推測性解碼(speculative decoding)。我們從頭初始化 MTP 層並在相同資料混合上訓練它們。為了加速收斂,我們使用自蒸馏(self-distillation)訓練 MTP 層,教導模型預測每個位置上主 LM 頭部的確切 logit 分佈。為了確保此過程能泛化,MTP 層是在持續預訓練運行中途截取的檢查點上訓練的。在最後兩個階段(長上下文和 SFT),MTP 層被包含進來並與模型其餘部分共同訓練。
4 強化學習
Composer 2 透過大量編碼任務的強化學習進行訓練。這些任務在盡可能模擬真實 Cursor 會話的環境中運行(基礎設施細節請參見第 6.2 節)。大體而言,RL 訓練包括取樣問題、模擬代理的多種不同解決方案的展開,然後根據解決方案品質更新模型權重。
我們建立一個反映最常見用例的問題分佈。圖 3 顯示了任務類別的細分。值得注意的是,我們的訓練分佈捕捉了許多流行 AI 編碼基準測試中所沒有的軟體工程面向。

圖 3:RL 訓練任務分佈。
在訓練後期,我們使用簡單的啟發式方法(例如展開的輪數和思考 token 數量)來對日益困難的資料點進行過取樣。
4.1 非同步 RL 訓練
我們的強化學習流程圍繞著從大規模策略梯度中學習,同時保持穩定性。我們使用具有每個提示多個樣本 [53, 2] 和固定群組大小的策略梯度演算法。我們在單 epoch 制度下運作,即同一個提示從不被訓練兩次。我們使用 Adam 作為底層優化器並更新完整參數集。RL 訓練在高非同步制度下運作,具有獨立的訓練和展開生成工作單元(詳情請參見第 6.2 節)。
先前的文獻提出了多種策略梯度變體 [78, 82, 40, 34]。如同 Dr. GRPO [34],我們發現至關重要的是最小化因轉換底層優勢(advantage)而可能產生的梯度偏誤。遵循此項工作,我們從 GRPO 中移除了長度標準化項,因為它會引入長度偏誤。我們也不依標準差對群組優勢進行標準化,因為這會導致退化情況:在每個展開都達到同等正確性的群組中,微小的行為差異會被過度加權。
Yu 等人 [78] 提出遮蔽超過最大序列長度的展開。一些後續工作採用了這種遮蔽 [35, 18],而其他工作則發現結果好壞參半。例如,Liu 等人 [34] 發現對過長展開進行遮蔽在長尾推理任務上效果有限,但能提高中短長度推理任務回應的準確性和清晰度;Du 等人 [13] 則發現過長遮蔽會導致輸出長度增長過快。我們在小規模下未見過長遮蔽的好處,因此選擇不遮蔽超過最大序列長度的展開。我們的自總結系統(如下討論)在實際上也限制了這些情況的發生。
由於代理展開可能非常長,特別是在追求長程連貫性時,我們的系統必須在高非同步制度下保持穩定。我們的主要策略是最小化樣本偏離策略(off-policy)的程度。在基礎設施方面,這種分歧透過快速的權重同步和飛行中權重更新來減少,類似於 PipelineRL [48]。推論工作單元能夠在展開中途更新權重,這意味著展開中後期的 token 較不可能偏離策略。為了進一步減少取樣策略與訓練策略之間的分歧,我們重放 MoE 路由 [38]。我們在第 6.2 節討論非同步 RL 流程的實作。
與先前的工作類似 [53, 66],我們使用 Kullback-Leibler 散度進行正則化:KL(q∥p) = Eₓ∼q[-log r(x)],其中 r(x) = p(x)/q(x)。許多開源 RL 實作使用 Schulman [52] 定義的估計器 k₃ = (r-1) - log r 來估計 KL。k₃ 估計器是 KL 的無偏估計器,並在 p 和 q 接近時減少變異數。然而,Amini 等人在 [6, 圖 1] 中指出,當 p 和 q 分歧時,變異數會急劇增加。參見圖 4:對於較大的 KL 值,估計的變異數極大。(k₂ 估計器雖無變異數暴增問題,但具有偏誤。)因此,我們改用標準估計器 k₁ = -log r。

圖 4:兩個具有單位變異數和不同均值的合成高斯分佈之 KL(p∥q) 估計器比較。
越來越多的近期文獻認為,LLM 上的 RL 通常主要透過將機率質量集中在已知的成功軌跡上來提升平均效能,有時甚至以策略熵和輸出多樣性為代價 [79, 32, 8, 74, 61]。根據此觀點,best-of-K 的改進可能有限,因為模型變得更擅長選擇一個高信賴度的解決方案,而非擴大可達到的正確解決方案集。

圖 5:平均效能和 best-of-K 效能在 RL 訓練期間均有所提升。上述曲線是在保留的評估集以及 CursorBench 任務上報告的。效能隨著 RL 訓練穩步提升。重要的是,我們未觀察到平均效能與 best-of-K 效能之間的權衡取捨。
在此背景下,我們的結果值得注意:我們並未觀察到平均獎勵上升而 best-of-K 保持不變的權衡取捨,相反地,我們發現訓練同時改善了這兩項統計數據,如圖 5 所示。這表明在我們的設定中,RL 不僅僅是重新加權一組固定的推理路徑,還提升了模型在重複取樣下對正確解決方案的有效覆蓋範圍。
自總結(Self-Summarization):為了使 Composer 2 能夠在長程任務中運作,我們使用了 Composer 1.5 中介紹的自總結技術 [64]。每個訓練展開可以涉及由總結串聯起來的多個生成,而非單一的提示 - 回應配對。我們對鏈中模型產生的所有 token 使用最終獎勵。這同時加權了好軌跡中的代理回應以及使其運作的自總結。同時,失去關鍵資訊的不良總結會被降權。隨著 Composer 的訓練,它學會使用自總結來處理更多資訊,即使在有限的上下文視窗下也是如此。對於困難範例,它通常會多次自總結。在我們的實驗中,我們發現自總結相對於使用基於提示的壓縮,能一致地減少錯誤,同時使用顯著更少的 token 並重用 KV 快取。
4.2 代理行為
雖然 RL 訓練的主要目标是提升模型智慧,但我們也旨在提供良好開發者體驗的模型。這受到模型的溝通風格以及回答問題所需時間和資源的影響。
針對行為和溝通,我們應用一系列輔助獎勵以確保模型提供良好體驗。這些包括針對編碼風格、溝通的獎勵,以及針對不良工具呼叫的產品特定懲罰,例如建立待辦事項卻未完成。在 RL 訓練期間,我們監控模型的新興行為,並視需要偶爾引入額外的行為獎勵。例如,我們觀察到模型開始在註解中留下長串的思維鏈,或僅限於使用終端工具。
為了激勵模型在簡單請求上快速產生解決方案,同時允許它在困難請求上思考更久,我們在獎勵中加入了一個凹向下且遞增的非線性長度懲罰:

圖 6:非線性懲罰促使模型在簡單任務上快速完成,在困難任務上深入思考。
其中 k 和 q 是定義懲罰曲率的超參數,輸入 x 是思考 token、工具呼叫 token、工具輸出 token、最終訊息 token、工具呼叫次數和展開輪數的加權組合。非線性反映了在只需幾次工具呼叫的簡單任務上,每增加一點努力都會被更敏銳地感受到;而在可能需要數百次工具呼叫的長程任務中則不然。參見圖 6 中此方程式產生的一些非線性曲線範例。我們發現使用此類長度懲罰能使模型學習特別高效的行為,例如並行進行多次工具呼叫。
5 使用 CursorBench 進行真實世界評估
在過去一年中,編碼代理的應用迅速演變,從簡單、範圍明確的編輯擴展到複雜除錯、大規模重構和特徵開發。在 Cursor,我們觀察到公開評估基準上的效能往往與這些模型的真實世界效用僅有鬆散相關。我們將此不一致歸因於四個主要因素:
領域不匹配(Domain Mismatch):隨著編碼代理能力的擴展,靜態基準測試往往無法捕捉開發者工作流程的全部光譜。例如,SWE-bench 及其變體主要專注於孤立的 bug 修復。Terminal-Bench 涵蓋更廣泛的任務類型,但其許多任務(例如計算西洋棋步法)是抽象謎題,而非典型的軟體工程操作。
提示過度明確(Prompt Over-specification):公開基準測試通常高度明確,假設一組狹隘的正確解決方案。相比之下,真實的開發者請求通常明確性不足,並允許多種有效的架構方法。因此,公開基準測試要嘛懲罰正確的替代解決方案,要嘛依賴不自然地明確的提示,從而繞過了解釋模糊意圖的挑戰。
資料污染與過度擬合(Data Contamination and Overfitting):由於公開基準測試是從開放原始碼倉庫的歷史抓取中建構的,它們經常洩漏到模型訓練混合中,人為地膨脹分數。最近,OpenAI 在發現證據顯示頂尖模型能從記憶體生成黃金補丁後,暫停報告 SWE-bench Verified 結果 [1]。除了污染之外,這些基準測試固定且狹隘的本質可能壓縮效能差異:例如,Haiku 4.5 在 SWE-bench Verified 上達到 73.3%,非常接近 GPT-5 的 74.9%,但這與在更廣泛多樣的任務分佈(如 Terminal-Bench)上的準確性不一致。
評估範圍狹隘(Narrow Evaluation Scope):現有的編碼評估主要衡量功能正確性。實際上,開發者也高度權重程式碼品質、可讀性、延遲、成本,以及代理在整個會話中互動行為的品質。
為了克服這些限制,我們引入 CursorBench,這是一個內部評估套件,包含源自我們工程團隊實際編碼會話的任務。由於這些任務源自真實的代理會話而非策劃的公開倉庫,CursorBench 更好地反映了軟體工程任務的真實分佈,同時完全避免了訓練集污染。此外,我們不僅僅依賴功能正確性,還使用針對程式碼品質、執行效率和真實情境中互動代理行為的特定指標來評估模型。
圖 7 強調了 CursorBench 與公開評估集之間的結構差異。CursorBench 任務需要更廣泛的程式碼修改,中位數變更行數為 181 行,而 SWE-bench Verified 和 Multilingual 僅為 7-10 行(圖 7a)。同時,CursorBench 提示也更不明確,中位數描述長度僅為 390 個字元,而公開基準測試則為 1,185-3,055 個字元(圖 7b)。這種廣泛執行範圍與高度意圖模糊性的結合,準確反映了真實世界軟體工程的內在難度,開發者必須經常從生產日誌、簡短的使用者 bug 報告和大型現有程式碼庫中綜合情境以得出解決方案。圖 8 和圖 12 顯示了代表性範例:一個需要從簡短的 bug 報告和可觀察性日誌中診斷重試迴圈中的建置工具轉譯 bug,另一個則需要設計一個微調的啟發式偵測器,透過數百個聊天回應來量化微妙的串流回歸並發現其隱藏的不變量。

圖 9:CursorBench 跨版本演進。每個版本納入更複雜的請求。CursorBench-3 的任務規模中位數比初始版本增加一倍以上,底部橫條顯示相對百分比變化。
新的 CursorBench 迭代由我們的團隊持續開發。隨著使用者工作流程演變和代理能力提升,我們定期更新評估集,以與開發者實際使用產品的方式保持一致。圖 9 顯示基準測試如何隨迭代增加複雜度:與早期版本的 CursorBench 相比,CursorBench-3 的任務平均涉及變更兩倍以上的檔案和程式碼行數。除了問題規模增加外,任務類型的分佈也發生轉變,開發者越來越多地將長時間執行的命令執行、實驗監控和資料分析委派給代理。這種持續更新確保我們的評估與真實世界難度的前沿保持一致,不會飽和。
最後,我們以一系列針對編碼代理品質和行為其他面向的目標評估來補充主要的 CursorBench 評估。這些包括意圖評估(評估模型如何處理模糊提示)、指令遵循評估(衡量模型遵循系統提示、使用者提示、規則和技能的程度)、急切編輯評估(測試模型在應避免編輯程式碼的問題上如何回應)、程式碼品質評估(評判程式碼和註解的品質),以及中斷評估(量化模型如何處理展開中的中斷和使用者回饋)。我們透過識別代理行為的重要維度、選取能引發這些行為的資料點,並撰寫評分標準來衡量效能,從而開發這些評估。
6 基礎設施
6.1 訓練基礎設施
並行性(Parallelism):先前的 Composer 訓練堆疊結合了完全分片資料並行(FSDP)[50, 81]、專家並行(EP)[54, 14] 和張量並行(TP)[55]。在原始的 MoE 設計中,EP 重用與 TP 相同的 rank 群組,因此 EP 不是獨立的擴展軸。這種耦合使實作保持簡單,但限制了對更大 MoE 配置的支援,並在持續預訓練階段不必要地啟用了激活分片,即使激活記憶體壓力並不大。
Composer 2 改用上下文並行(CP)[33, 26] 作為主要的長上下文擴展軸。CP 比 TP 需要更少的通訊,並透過在各類投影中保留完整隱藏維度來提升計算效率;相比之下,TP 產生效率較低的細長本地矩陣乘法。我們使用一些技巧在 Multi-Head Latent Attention (MLA) 架構中有效實作 CP。為了最小化通訊開銷,我們計算本地 KV 潛在向量,在 CP ranks 間全收集(all-gather)潛在向量,然後計算 KV 投影。雖然這在所有 CP ranks 上複製了投影,但投影很小並減少了 CP 通訊,使我們能夠將 CP 通訊與 Q 投影的計算完全重疊。此外,雖然樸素的 CP 會導致因果注意力中的負載不平衡(因為後面的 token 必須關注更多 token),我們使用 Liu 等人 [33] 的技術來解決此問題:我們將序列分成 2 × CP 個區塊,第 i 個 rank 處理區塊 i 和 2 × CP - 1 - i,從而在所有 rank 的因果注意力中產生大致相等的工作量。最後,上下文並行維度被折疊到 FSDP 維度中,使我們能夠使用 CP ranks 來減少每個 GPU 的參數/狀態記憶體使用量。

圖 10:我們專家混合層中單一分組 GEMM 訓練流程概覽。每個彩色區塊代表一次核心啟動。
Composer 2 還引入了更靈活的專家並行設計,將 EP 與 TP 解耦。這需要使用不同的網格來分片密集層和專家權重。EP 由 DP 和 CP 容量形成,支援更大的專家並行度,並使專家分組 GEMM 在每個 rank 更大 token 批次下更有效率。我們使用 DeepEP 來實作高吞吐量 token 分派/合併 [80]。DeepEP 通訊緩衝區開銷相對較低,其核心預設使用 20 個 SM,為並行計算預留空間。我們還在分派前將 token 量化為 MXFP8(如下討論)以提高通訊效率,這不影響我們的精度,因為我們已經在 MXFP8 中執行專家計算。我們保持合併在 BF16 以提高精度。為了最大化計算 - 通訊重疊,token 被分成微批次並在獨立的通訊和計算流中流水線化。
最後,我們發現不同 DP ranks 擁有相似計算量對於實現高利用率至關重要。在持續預訓練中,固定序列長度可輕鬆實現 DP 平衡。在 RL 中,不同提示的不同展開可能導致序列長度差異很大,因此在每個訓練步驟之前,我們運行全域序列打包階段以確保平衡的 DP 計算負載。打包演算法會考量較長序列增加的注意力成本。
核心(Kernels):Composer 2 訓練使用以 CUDA、PTX 和 ThunderKittens/ParallelKittens [56, 59] 撰寫的內部核心。這些核心主要優化專家混合(MoE)層的低精度訓練。我們的訓練方案同時使用 MXFP8 [46] 和 NVFP4 [45] 精度格式。我們專門針對 NVIDIA Blackwell GPU 進行區塊縮放張量核心矩陣乘法(即在脈衝陣列矩陣乘法期間進行硬體內反量化)。圖 10 說明了我們 MoE 層中的單一分組 GEMM 訓練流程。
對於 MoE 前向傳遞,我們使用 NVFP4 的新變體:值從 BF16 量化為 FP4E2M1,使用每區塊 FP8E4M3 縮放(區塊大小 = 16)和每 token FP32 縮放。我們發現原始 NVFP4 格式(使用每張量 FP32 縮放)在兩個原因下很脆弱。首先,每張量縮放使訓練批次敏感,導致數值精度崩潰並使 RL 訓練發散。其次,token 間縮放值會將未來 token 資訊洩漏到過去 token,導致梯度偏誤。儘管增加了量化和 GEMM 尾聲的延遲,每 token 縮放被證明是更有效的方案。
對於 MoE 反向傳遞,我們使用標準 MXFP8 格式,每 32 元素區塊使用 FP8E4M3 值和 FP8E8M0 縮放。我們之所以能這樣做,是因為 RL 訓練的不對稱性。在前向傳遞中,訓練器必須與推論匹配以確保數值穩定性。因此我們使用訓練器 NVFP4 以支援快速推論。然而,反向傳遞僅在訓練集群上運行。這不是系統範圍 RL 效率的瓶頸,因此我們可以負擔更高精度以提高訓練穩定性。
最後,硬體層級數學精度的選擇至關重要。對於 NVFP4 量化,我們發現使用符合 IEEE 的浮點數術(例如 __fdiv_rn)至關重要;使用快速近似替代方案會導致訓練在大約一百個 RL 步驟後發散。相反地,對於 MXFP8 量化,使用快速近似路徑(例如 __fdividef)自 Composer 1 初始訓練以來未導致任何發散,因此我們選擇它以獲得最佳效能。
我們積極開源核心實作並支持社群改善 GPU 核心生態系統的努力。我們與 Colfax 密切合作,為 QK₁₉₂/V₁₂₈ 配置(又稱 "DeepSeek shapes")實作了 Flash Attention 4 反向核心,已合併至公開倉庫 [27]。我們也積極支持與史丹佛大學 Hazy Research 團隊合作的 ThunderKittens 開發 [59, 60, 58, 57]。最近,我們將最先進的 BF16、MXFP8 和 NVFP4 GEMM 實作開源至 ThunderKittens [21]。最後,我們透過線上文章分享關於量化和 MoE 核心實作的知識 [63]。
6.2 RL 基礎設施
我們的 RL 基礎設施由四個解耦服務組成:訓練、環境、推論和評估。解耦服務堆疊支援更大規模的全域訓練、高可用性以及獨立擴展和分片。Composer 2 的生產訓練作業橫跨 3 個 GPU 運算區域和 4 個 CPU 運算區域。
訓練:我們使用基於 Ray [42] 和 PyTorch [47] 建構的完全非同步、高吞吐量訓練堆疊。集中式協調器執行基於槽位的樣本生命週期狀態管理,將樣本透過分散式執行器管道移動,並實作平衡樣本生成吞吐量與策略過時性的排程策略。我們將訓練器內的所有服務圍繞 futures 概念設計,允許在上游依賴就緒時急切執行計算。我們利用 Ray 物件儲存來持有準備好供訓練工作單元消耗的樣本,這使得在節點 CPU 記憶體不足時能自然地溢位到本地 NVMe 儲存。
為了支援大規模訓練後處理,訓練器內的所有元件在程序或程序群組層級都具有容錯能力。我們在訓練期間對所有節點運行被動和主動健康檢查;一旦偵測到硬體故障,我們將該節標記為不健康以進行排程,但繼續使用暖備用節點進行訓練。將訓練與推論和環境基礎設施解耦,自然使訓練對這些服務的故障更具彈性;在訓練運行期間,我們看到許多這些服務部分或完全中斷但未導致訓練作業失敗的案例。為了最小化訓練作業重啟次數,我們使用反應式配置系統並支援程序層級的即時程式碼更新;當部署新程式碼時,現有 actor 會排空進行中的請求並被透明替換。
重放長時間運行的編碼展開代價高昂。為了減輕作業層級故障造成的昂貴失敗,我們在展開層級和群組層級執行策略感知檢查點,除了在步驟層級對模型權重進行常規檢查點之外。對於展開檢查點,我們依賴程式碼庫環境狀態的記憶體快照,以便在恢復時,我們可以將重建的程式碼庫環境傳遞給驗證器。對於群組檢查點,我們將帶有策略版本標籤的優勢序列寫入 NFS;作業重啟時,排程器會考量這些以決定是派遣新工作還是僅加載就緒群組。
環境與 Anyrun:有狀態的程式碼庫環境是我們訓練後堆疊的一等公民。環境在 Anyrun 之上運行,這是一個為大規模運行不受信任程式碼而建構的內部運算平台。這也是 Cursor 產品中 Cloud Agents 和 Automations 背後的相同運算平台。
來自訓練器的所有環境建立請求都發送到全域服務,該服務將請求路由到底層 Anyrun 集群。我們的訓練工作負載在多個 Anyrun 集群間分片,以實現實例可用性和容錯。在集群內,分散式的 Anyrun 管理器排程 pod,跨多個區域擴展雲端運算資源,並執行狀態協調以管理每個集群中數十萬個 pod。每個 pod 是一個專用的 Firecracker VM,能夠運行完整的開發環境,包括用於電腦使用的瀏覽器和 GUI。我們在多種機器類型和架構(x86、ARM)的混合上運行 pod,以最大化實例可用性。
排程吞吐量對於 RL 工作負載的突發性質至關重要。每個 Anyrun 集群能夠每秒排程超過 500 個 pod,同時維持所需的 binpacking 要求。樸素打包策略的一個挑戰是,pod 的穩態資源使用量可能遠低於啟動期間的峰值,並且可能因過度提交而出現突發。為了解決這個問題,我們監控並排程時考量硬體壓力(CPU、記憶體、磁碟)的即時讀數,以及更傳統的排程啟發式方法。
Anyrun 支援在檔案系統和記憶體層級對完整編碼環境進行分叉和快照。這在 RL 期間解鎖了有用的功能,例如軌跡中的展開檢查點和展開後的狀態捕捉以供未來檢查。當請求 pod 分叉時,我們嘗試首先將分叉排程到同一節點;如果因空間限制不可行,我們將 pod 狀態即時遷移到有容量的節點。
環境中的出口受到嚴格控制以限制任何外部影響。來自 pod 的任何網際網路存取必須透過 Anygress,這是 Anyrun 內負責代理流量、執行細粒度請求策略和刪除敏感標頭的內部服務。为了更好地模擬真實世界環境,Anygress 透明運作,不依賴代理環境變數,而是在 pod 啟動時注入受信任的根 CA,並在 TCP 層重定向 pod 流量。
我們使用能代表 Cursor 用戶端中框架的工具進行訓練。每個程式碼庫環境從共享工具庫開始,可透過 RPC 呼叫。一些工具(如語意搜尋)有外部依賴,在環境外處理。為了支援 Cursor 用戶端中可用的完整工具集,我們維護 Cursor 後端的影子部署,在資料集準備和展開期間使用。以這種方式共享生產實作使我們能夠安全地擴展實驗和訓練,同時忠於 Composer 2 將部署進入的框架。
有些情況下,我們希望工具行為在訓練和生產設定之間有所不同。具體範例包括執行更嚴格的工具參數檢查以鼓勵更精確的模型行為,以及移除某些工具以提高模型可控性。為了實現這一點,每個環境的可用工具集和每個工具的期望行為都是動態決定的。
推論與權重同步:我們與 Fireworks AI 合作運行 RL 推論。由於 Kimi K2.5 是專家混合模型,數值差異可能導致推論引擎前向傳遞和訓練器前向傳遞中選擇不同的專家。如果訓練器和推論引擎對每個 token 的專家路由不一致,訓練期間計算的 log-機率可能與取樣 token 的分佈不匹配,從而在策略梯度中引入噪音。為了解決這個問題,我們採用路由器重放 [82, 38]:在推論期間,引擎在每個 MoE 層為每個 token 返回所選專家索引,在訓練前向傳遞期間,路由器的專家分配被覆蓋以匹配。路由器仍計算閘道分數,以便梯度能流經它。我們透過過濾掉閘道分數低於從路由器自身 topk 選擇得出的合理性門檻值的重放專家,並用路由器的候選者替換它們,從而擴展基本重放方案;我們發現這減少了推論和訓練前向傳遞之間 p99 數值不匹配。
每個訓練步驟,我們透過上傳到共享 S3 儲存桶將更新後的權重同步到推論引擎。為了最小化傳輸大小,我們使用增量壓縮:每個 rank 快取其上一次上傳,僅傳輸與新權重的差異。由於 RL 更新很小,即使是全參數訓練,這些差異對於 1T 參數模型也能壓縮到幾 GB。上傳在所有訓練 rank 間完全分片,使我們能夠飽和訓練集群的出口頻寬;同樣地,Fireworks 端的下載也在推論副本間分片。壓縮、上傳和熱加載訊號在後台工作中完全流水線化,因此訓練從不被阻塞。在 Composer 2 訓練運行期間,我們在美洲和歐洲的地理分佈集群上運行推論。每個集群獨立下載並從共享增量鏈重建權重,無需與訓練集群直接連接,從而實現跨商品雲端儲存的全球規模分散式 RL 推論。

圖 11:在 CursorBench 上,Composer 2 在保持高度 token 效率的同時,在成本上實現了更優的帕雷托前沿。對於 GPT-5.4、Codex-5.3、Opus 4.6 和 Sonnet 4.6,我們繪製了高(圓形)、中(三角形)和低(方形)努力變體。
線上評估:為了在訓練期間對我們的模型進行忠實的評估,我們為每個評估作業運行生產後端和 Cursor 用戶端的固定版本。這提供了高度信心,確保評估期間的模型行為是我們終端用戶所見的準確複製,也使我們能夠使用相同的基礎設施迭代 Cursor 框架和模型系統提示。對於每個想要評估的訓練步驟,我們取得評估部署的租約,自動將 GPU 移至該部署,並從訓練集群將評估檢查點跨區域權重同步到推論部署。
7 結果
7.1 CursorBench
我們透過在 Anyrun(第 6.2 節)中直接運行 Cursor 代理來評估我們的模型,這是支援我們強化學習流程的相同基礎設施。對於 CursorBench 中的每個任務,我們初始化程式碼庫環境和初始任務提示,並完全按照其在生產環境中執行的方式運行代理。
指標:我們計算在評估集多次通過後所有任務的準確性總和,以減少變異數。除了準確性外,我們還衡量效率指標,如完成 token 數量、端到端延遲和推論成本,以確保模型對互動式開發者工作流程保持最大效用。
| 模型 | CursorBench | SWE-bench Multi. | Terminal-Bench |
|---|---|---|---|
| Composer 2 | 61.3 | 73.7 | 61.7 |
| Composer 1.5 | 44.2 | 65.9 | 47.9 |
| Composer 1 | 38.0 | 56.9 | 40.0 |
| Opus 4.6 High | 58.2 | 75.8 / 77.8 | 58.0 / 65.4 |
| Opus 4.5 High | 48.4 | 73.8 / 76.2 | 52.1 / 59.8 |
| GPT-5.4 | 63.9 | 76.8 / - | 66.5 † / 75.1 |
| GPT-5.3 Codex | 59.1 | 74.8 / - | 64.8 † / 77.3 |
| GPT-5.2 | 56.5 | 68.3 / - | 60.5 / 62.2 |
| GLM-5 | 42.7 | 66.9 / 73.3 | 59.6 / 56.2 |
| Kimi K2.5 | 36.0 | 65.1 / 73.0 | 47.3 / 50.8 |
† OpenAI 安全過濾器拒絕了 5 個 GPT-5.4 和 3 個 GPT-5.3-Codex 任務;被拒絕的問題計為 0 分。
表 1:在各公開和內部評估套件上的基準測試結果。對於第三方模型,我們以(我們的框架 / 自報告)格式呈現結果(兩者皆有時)。對於 Terminal-Bench 上的 Anthropic 模型,我們使用官方 Claude Code 排行榜分數而非我們的框架評估。整體而言,Composer 2 達到與最強頂尖模型競爭的準確性。
表 1 報告了各模型在 CursorBench-3 上的準確性。Composer 2 達到 61.3%,相較於 Composer 1.5 提升 37%,相較於 Composer 1 提升 61%。與其基礎模型 Kimi K2.5 相比,Composer 2 展現出顯著的準確性提升,驗證了我們持續預訓練和強化學習流程的有效性。此外,儘管推論成本顯著較低,Composer 2 仍達到與最強頂尖模型競爭的準確性。
圖 11 將這些準確性指標與資源消耗進行對比。就 token 使用量而言,Composer 2 產生的軌跡長度與其他模型相當,同時提供頂尖層級的準確性,相對於其他在相似準確性水準下運作的頂尖模型,保持高度 token 效率。
然而,由於活躍參數數量的差異,原始 token 使用量並不能完全捕捉推論效率。由於我們無法取得 API 模型使用的 FLOPs,我們在圖 11 中提供每個 CursorBench 任務的中位數推論成本。在此,Composer 2 實現了帕雷托最優權衡:其推論成本與較小或低努力變體的模型相似,而其準確性仍與大得多的頂尖模型競爭。總體而言,這些結果表明領域專用訓練可以產生在真實世界軟體工程的嚴苛需求下,同時更準確且更具成本效益的模型,勝過通用替代方案。
7.2 公開基準測試
我們進一步在兩個公開基準測試上評估 Composer 2:SWE-bench Multilingual 和 Terminal-Bench(表 1,最後兩欄)。對於 Composer 模型,我們使用自己的框架計算分數。對於第三方模型,我們報告(我們的框架 / 自報告)結果(兩者皆有時);對於 Terminal-Bench 上的 Anthropic 模型,我們使用官方 Claude Code 排行榜分數而非我們自己的框架評估。對於 SWE-bench,我們僅在問題陳述前加上「please solve this github issue」,不提供撰寫或運行測試用例的指示。對於 Terminal-Bench,我們在使用者提示中增加解決方案格式指示,說明檔案應放置的位置或環境應如何設置。
在 SWE-bench Multilingual 上,Composer 2 得分 73.7%,較 Composer 1.5 提升 7.8%,較 Composer 1 提升 16.8%。在 Terminal-Bench 上,Composer 2 達到 61.7%,較 Composer 1.5 提升 13.8%,較 Composer 1 提升 21.7%。與其基礎模型 Kimi K2.5 相比,Composer 2 在 SWE-bench Multilingual 上表現相似,在 Terminal-Bench 上則有顯著改善。整體而言,Composer 2 在這些公開基準測試上的表現與其他最先進模型保持高度競爭。在這兩個基準測試中,每個連續的 Composer 版本都顯示一致增益,證明在預訓練和強化學習上的持續投資能為代理式軟體工程帶來複合收益。
8 結論
Composer 2 證明了強大的專用模型可以透過持續預訓練和強化學習進行訓練。從強大的通用模型出發,模型可以被專門化以在代理式編碼中達到頂尖層級的效能。主要的見解,無論從演算法或基礎設施角度來看,都是在擴展訓練的同時確保與目標領域的緊密領域匹配。我們透過 CursorBench 進行仔細的領域基準測試、框架與環境工程、行為獎勵開發,以及嚴格的基礎設施可靠性來實現此目標。
Composer 2 的結果對進一步擴展所能帶來的未來改進持樂觀態度。雖然 Composer 2 相較於先前版本有穩定改進,但在許多情況下,模型展現出的智慧或連貫性行為仍有明顯改善空間。本工作中訓練的模型很大(1.04T 參數,32B 活躍),但可能仍小於其他具有相當能力的專有模型。我們相信無論在架構或演算法上,仍有相當大的發展空間。
編碼代理作為工具的範圍也正在從互動式問題擴展到需要數小時人類時間的代理任務 [29],普遍預期這種範圍在未來將快速增長 [65]。對於未來的 Composer 迭代,我們的團隊專注於擴展模型處理這些問題的能力,透過訓練方法來處理更長的問題,包括有效利用更長期訓練訊號的演算法,以及支援忠實長程問題的基礎設施。
參考文獻
[1] WhySWE-benchVerified no longer measures frontier coding capabilities - openai.com. https://openai.com/index/why-we-no-longer-evaluate-swe-bench-verified/. [存取日期 2026-03-24].
[2] Arash Ahmadian, Chris Cremer, Matthias Gallé, Marzieh Fadaee, Julia Kreutzer, Olivier Pietquin, Ahmet Üstün, and Sara Hooker. Back to basics: Revisiting reinforce-style optimization for learning from human feedback in llms. In Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), ACL 2024, Bangkok, Thailand, August 11-16, 2024, pp. 12248-12267. Association for Computational Linguistics, 2024. doi: 10.18653/V1/2024.ACL-LONG.662. URL https://doi.org/10.18653/v1/2024.acl-long.662.
[3] Abante AI. Locodiff-bench: Long context diff reconstruction benchmark. https://abanteai.github.io/LoCoDiff-bench/, 2025.
[4] Zhipu AI. GLM-5: From vibe coding to agentic engineering. https://z.ai/blog/glm-5, 2026.
[5] Loubna Ben Allal, Raymond Li, Denis Kocetkov, Chenghao Mou, Christopher Akiki, Carlos Muñoz Ferrandis, Niklas Muennighoff, Mayank Mishra, Alex Gu, Manan Dey, et al. Santacoder: don't reach for the stars! In International Conference on Machine Learning, ICML 2023 Workshop on Knowledge and Logical Reasoning in the Era of Datadr-driven Learning, 2023.
[6] Afra Amini, Tim Vieira, and Ryan Cotterell. Better estimation of the kullback-leibler divergence between language models. In The Thirty-ninth Annual Conference on Neural Information Processing Systems, 2025. URL https://openreview.net/forum?id=um9kHMof0c.
[7] Mark Chen, Jerry Tworek, Heewoo Jun, Qiming Yuan, Henrique Ponde de Oliveira Pinto, Jared Kaplan, Harri Edwards, Yuri Burda, Nicholas Joseph, Greg Brockman, et al. Evaluating large language models trained on code. arXiv preprint arXiv:2107.03374, 2021. URL https://arxiv.org/abs/2107.03374.
[8] Zhipeng Chen, Xiaobo Qin, Youbin Wu, Yue Ling, Qinghao Ye, Wayne Xin Zhao, and Guang Shi. Pass@k training for adaptively balancing exploration and exploitation of large reasoning models. arXiv preprint arXiv:2508.10751, 2025. doi: 10.48550/arXiv.2508.10751. URL https://arxiv.org/abs/2508.10751.
[9] Colin Clement, Dawn Drain, Jonathan Timcheck, Alexey Svyatkovskiy, and Neel Sundaresan. Pymt5: multi-mode translation of natural language and python code with transformers. In Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP), pp. 9052-9065, 2020.
[10] DeepSeek-AI. Deepseek-coder-v2: Breaking the barrier of closed-source models in code intelligence. arXiv preprint arXiv:2406.11931, 2024. URL https://arxiv.org/abs/2406.11931.
[11] DeepSeek-AI. Deepseek-v3 technical report. arXiv preprint arXiv:2412.19437, 2024. URL https://arxiv.org/abs/2412.19437.
[12] DeepSeek-AI. Deepseek-v3.2: Pushing the frontier of open large language models. arXiv preprint arXiv:2512.02556, 2025. URL https://arxiv.org/abs/2512.02556.
[13] Dong Du, Shulin Liu, Tao Yang, Shaohua Chen, and Yang Li. Ulorl: An ultra-long output reinforcement learning approach for advancing large language models' reasoning abilities. arXiv preprint arXiv:2507.19766, 2025. URL https://arxiv.org/abs/2507.19766.
[14] William Fedus, Barret Zoph, and Noam Shazeer. Switch transformers: Scaling to trillion parameter models with simple and efficient sparsity. Journal of Machine Learning Research, 23(120):1-39, 2022. URL http://jmlr.org/papers/v23/21-0998.html.
[15] Zhangyin Feng, Daya Guo, Duyu Tang, Nan Duan, Xiaocheng Feng, Ming Gong, Linjun Shou, Bing Qin, Ting Liu, Daxin Jiang, et al. Codebert: A pre-trained model for programming and natural languages. In Findings of the association for computational linguistics: EMNLP 2020, pp. 1536-1547, 2020.
[16] Daniel Fried, Armen Aghajanyan, Jessy Lin, Sida Wang, Eric Wallace, Freda Shi, Ruiqi Zhong, Scott Yih, Luke Zettlemoyer, and Mike Lewis. Incoder: A generative model for code infilling and synthesis. In The Eleventh International Conference on Learning Representations, ICLR 2023, Kigali, Rwanda, May 1-5, 2023. OpenReview.net, 2023. URL https://openreview.net/forum?id=hQwb-lbM6EL.
[17] Fabian Gloeckle, Badr Youbi Idrissi, Baptiste Rozière, David Lopez-Paz, and Gabriel Synnaeve. Better & faster large language models via multi-token prediction. In Forty-first International Conference on Machine Learning, ICML 2024, Vienna, Austria, July 21-27, 2024. OpenReview.net, 2024. URL https://proceedings.mlr.press/v235/gloeckle24a.html.
[18] Alexander Golubev, Maria Trofimova, Sergei Polezhaev, Ibragim Badertdinov, Maksim Nekrashevich, Anton Shevtsov, Simon Karasik, Sergey Abramov, Andrei Andriushchenko, Filipp Fisin, Sergei Skvortsov, and Boris Yangel. Training long-context, multi-turn software engineering agents with reinforcement learning. arXiv preprint arXiv:2508.03501, 2025. URL https://arxiv.org/abs/2508.03501.
[19] Daya Guo, Qihao Zhu, Dejian Yang, Zhenda Xie, Kai Dong, Wentao Zhang, Guanting Chen, Xiao Bi, Y Wu, Y K Li, et al. Deepseek-coder: When the large language model meets programming-the rise of code intelligence. arXiv preprint arXiv:2401.14196, 2024. URL https://arxiv.org/abs/2401.14196.
[20] Suchin Gururangan, Ana Marasovi´c, Swabha Swayamdipta, Kyle Lo, Iz Beltagy, Doug Downey, and Noah A. Smith. Don't stop pretraining: Adapt language models to domains and tasks. In Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics, ACL 2020, Online, July 5-10, 2020, pp. 8342-8360. Association for Computational Linguistics, 2020. doi: 10.18653/V1/2020.ACL-MAIN.740. URL https://doi.org/10.18653/v1/2020.acl-main.740.
[21] HazyResearch. Thunderkittens gemm kernels, 2026. URL https://github.com/HazyResearch/ThunderKittens/tree/main/kernels/gemm.
[22] Jordan Hoffmann, Sebastian Borgeaud, Arthur Mensch, Elena Buchatskaya, Trevor Cai, Eliza Rutherford, Diego de Las Casas, Lisa Anne Hendricks, Johannes Welbl, Aidan Clark, et al. Training compute-optimal large language models. In Advances in Neural Information Processing Systems 35: Annual Conference on Neural Information Processing Systems 2022, NeurIPS 2022, New Orleans, LA, USA, November 28 - December 9, 2022, 2022.
[23] Sirui Hong, Mingchen Zhuge, Jonathan Chen, Xiawu Zheng, Yuheng Cheng, Jinlin Wang, Ceyao Zhang, Zili Wang, Steven Ka Shing Yau, Zijuan Lin, et al. Metagpt: Meta programming for a multi-agent collaborative framework. In The twelfth international conference on learning representations, 2023.
[24] Jeremy Howard and Sebastian Ruder. Universal language model fine-tuning for text classification. In Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics, ACL 2018, Melbourne, Australia, July 15-20, 2018, Volume 1: Long Papers, pp. 328-339. Association for Computational Linguistics, 2018. doi: 10.18653/V1/P18-1031. URL https://aclanthology.org/P18-1031/.
[25] Binyuan Hui, Jian Yang, Zeyu Cui, Jiaxi Yang, Dayiheng Liu, Lei Zhang, Tianyu Liu, Jiajun Zhang, Bowen Yu, Keming Lu, et al. Qwen2.5-coder technical report. arXiv preprint arXiv:2409.12186, 2024.
[26] Sam Ade Jacobs, Masahiro Tanaka, Chengming Zhang, Minjia Zhang, Shuaiwen Leon Song, Samyam Rajbhandari, and Yuxiong He. Deepspeed ulysses: System optimizations for enabling training of extreme long sequence transformer models. arXiv preprint arXiv:2309.14509, 2023.
[27] Jay Shah. Flash attention pull request #2270, 2026. URL https://github.com/Dao-AILab/flash-attention/pull/2270.
[28] Carlos E Jimenez, John Yang, Alexander Wettig, Shunyu Yao, Kexin Pei, Ofir Press, and Karthik R Narasimhan. SWE-bench: Can language models resolve real-world github issues? In The Twelfth International Conference on Learning Representations, 2024. URL https://openreview.net/forum?id=VTF8yNQM66.
[29] Thomas Kwa, Ben West, Joel Becker, Amy Deng, Katharyn Garcia, Max Hasin, Sami Jawhar, Megan Kinniment, Nate Rush, Sydney Von Arx, Ryan Bloom, Thomas Broadley, Haoxing Du, Brian Goodrich, Nikola Jurkovic, Luke Harold Miles, Seraphina Nix, Tao Lin, Neev Parikh, David Rein, Lucas Jun Koba Sato, Hjalmar Wijk, Daniel M. Ziegler, Elizabeth Barnes, and Lawrence Chan. Measuring ai ability to complete long tasks. https://metr.org/blog/2025-03-19-measuring-ai-ability-to-complete-long-tasks/, 03 2025.
[30] Raymond Li, Loubna Ben Allal, Yangtian Zi, Niklas Muennighoff, Denis Kocetkov, Chenghao Mou, Marc Marone, Christopher Akiki, Jia Li, Jenny Chim, et al. Starcoder: may the source be with you! Trans. Mach. Learn. Res., 2023, 2023. URL https://openreview.net/forum?id=KoFOg41haE.
[31] Yujia Li, David Choi, Junyoung Chung, Nate Kushman, Julian Schrittwieser, Rémi Leblond, Tom Eccles, James Keeling, Felix Gimeno, Agustin Dal Lago, et al. Competition-level code generation with alphacode. Science, 378(6624):1092-1097, 2022.
[32] Xiao Liang, Zhong-Zhi Li, Yeyun Gong, Yelong Shen, Ying Nian Wu, Zhijiang Guo, and Weizhu Chen. Beyond pass@1: Self-play with variational problem synthesis sustains RLVR. In The Fourteenth International Conference on Learning Representations, ICLR 2026, 2026. URL https://openreview.net/forum?id=Wjf3OMJxpn.
[33] Hao Liu, Matei Zaharia, and Pieter Abbeel. Ring attention with blockwise transformers for near-infinite context. In The Twelfth International Conference on Learning Representations, ICLR 2024, Vienna, Austria, May 7-11, 2024. OpenReview.net, 2024. URL https://openreview.net/forum?id=WsRHpHH4s0.
[34] Zichen Liu, Changyu Chen, Wenjun Li, Penghui Qi, Tianyu Pang, Chao Du, Wee Sun Lee, and Min Lin. Understanding r1-zero-like training: A critical perspective. arXiv preprint arXiv:2503.20783, 2025. URL https://arxiv.org/abs/2503.20783.
[35] Zihan Liu, Zhuolin Yang, Yang Chen, Chankyu Lee, Mohammad Shoeybi, Bryan Catanzaro, and Wei Ping. Acereason-nemotron 1.1: Advancing math and code reasoning through sft and rl synergy. arXiv preprint arXiv:2506.13284, 2025. URL https://arxiv.org/abs/2506.13284.
[36] Anton Lozhkov, Raymond Li, Loubna Ben Allal, Federico Cassano, Joel Lamy-Poirier, Nouamane Tazi, Ao Tang, Dmytro Pykhtar, Jiawei Liu, Yuxiang Wei, et al. Starcoder 2 and the stack v2: The next generation. arXiv preprint arXiv:2402.19173, 2024. URL https://arxiv.org/abs/2402.19173.
[37] Ziyang Luo, Can Xu, Pu Zhao, Qingfeng Sun, Xiubo Geng, Wenxiang Hu, Chongyang Tao, Jing Ma, Qingwei Lin, and Daxin Jiang. Wizardcoder: Empowering code large language models with evol-instruct. In The Twelfth International Conference on Learning Representations, ICLR 2024, Vienna, Austria, May 7-11, 2024. OpenReview.net, 2024. URL https://openreview.net/forum?id=UnUwSIgK5W.
[38] Wenhan Ma, Hailin Zhang, Liang Zhao, Yifan Song, Yudong Wang, Zhifang Sui, and Fuli Luo. Stabilizing MoE reinforcement learning by aligning training and inference routers. arXiv preprint arXiv:2510.11370, 2025. URL https://arxiv.org/abs/2510.11370.
[39] Mike A Merrill, Alexander Glenn Shaw, Nicholas Carlini, Boxuan Li, Harsh Raj, Ivan Bercovich, Lin Shi, Jeong Yeon Shin, Thomas Walshe, E. Kelly Buchanan, et al. Terminalbench: Benchmarking agents on hard, realistic tasks in command line interfaces. In The Fourteenth International Conference on Learning Representations, ICLR 2026, 2026. URL https://openreview.net/forum?id=a7Qa4CcHak.
[40] MiniMax. Minimax-m1: Scaling test-time compute efficiently with lightning attention. arXiv preprint arXiv:2506.13585, 2025. URL https://arxiv.org/abs/2506.13585.
[41] Mayank Mishra, Matt Stallone, Gaoyuan Zhang, Yikang Shen, Aditya Prasad, Adriana Meza Soria, Michele Merler, Parameswaran Selvam, Saptha Surendran, Shivdeep Singh, et al. Granite code models: A family of open foundation models for code intelligence. arXiv preprint arXiv:2405.04324, 2024.
[42] Philipp Moritz, Robert Nishihara, Stephanie Wang, Alexey Tumanov, Richard Liaw, Eric Liang, Melih Elibol, Zongheng Yang, William Paul, Michael I. Jordan, and Ion Stoica. Ray: A distributed framework for emerging AI applications. In Andrea C. Arpaci-Dusseau and Geoff Voelker (eds.), 13th USENIX Symposium on Operating Systems Design and Implementation, OSDI 2018, Carlsbad, CA, USA, October 8-10, 2018, pp. 561577. USENIX Association, 2018. URL https://www.usenix.org/conference/osdi18/presentation/nishihara.
[43] Niklas Muennighoff, Qian Liu, Armel Randy Zebaze, Qinkai Zheng, Binyuan Hui, Terry Yue Zhuo, Swayam Singh, Xiangru Tang, Leandro von Werra, and Shayne Longpre. Octopack: Instruction tuning code large language models. In The Twelfth International Conference on Learning Representations, ICLR 2024, Vienna, Austria, May 7-11, 2024. OpenReview.net, 2024. URL https://openreview.net/forum?id=mw1PWNSWZP.
[44] Erik Nijkamp, Bo Pang, Hiroaki Hayashi, Lifu Tu, Huan Wang, Yingbo Zhou, Silvio Savarese, and Caiming Xiong. Codegen: An open large language model for code with multi-turn program synthesis. In The Eleventh International Conference on Learning Representations, ICLR 2023, Kigali, Rwanda, May 1-5, 2023. OpenReview.net, 2023. URL https://openreview.net/forum?id=iaYcJKpY2B.
[45] NVIDIA. Pretraining large language models with nvfp4. arXiv preprint arXiv:2509.25149, 2025. URL https://arxiv.org/abs/2509.25149.
[46] Open Compute Project. Ocp microscaling formats (mx) specification version 1.0. https://www.opencompute.org/documents/ocp-microscaling-formats-mx-v1-0-spec-final-pdf, 2023.
[47] Adam Paszke, Sam Gross, Francisco Massa, Adam Lerer, James Bradbury, Gregory Chanan, Trevor Killeen, Zeming Lin, Natalia Gimelshein, Luca Antiga, et al. Pytorch: An imperative style, high-performance deep learning library. Advances in neural information processing systems, 32, 2019.
[48] Alexandre Piché, Ehsan Kamalloo, Rafael Pardinas, Xiaoyin Chen, and Dzmitry Bahdanau. PipelineRL: Faster on-policy reinforcement learning for long sequence generation. arXiv preprint arXiv:2509.19128, 2025. URL https://arxiv.org/abs/2509.19128.
[49] Chen Qian, Wei Liu, Hongzhang Liu, Nuo Chen, Yufan Dang, Jiahao Li, Cheng Yang, Weize Chen, Yusheng Su, Xin Cong, et al. Chatdev: Communicative agents for software development. In Proceedings of the 62nd annual meeting of the association for computational linguistics (volume 1: Long papers), pp. 15174-15186, 2024.
[50] Samyam Rajbhandari, Jeff Rasley, Olatunji Ruwase, and Yuxiong He. ZeRO: Memory optimizations toward training trillion parameter models. In SC20: International Conference for High Performance Computing, Networking, Storage and Analysis, pp. 1-16. IEEE, 2020.
[51] Baptiste Rozière, Jonas Gehring, Fabian Gloeckle, Sten Sootla, Itai Gat, Xiaoqing Ellen Tan, Yossi Adi, Jingyu Liu, Romain Sauvestre, Tal Remez, et al. Code llama: Open foundation models for code. arXiv preprint arXiv:2308.12950, 2023. URL https://arxiv.org/abs/2308.12950.
[52] John Schulman. Approximating KL divergence. 2020. Blog post.
[53] Zhihong Shao, Peiyi Wang, Qihao Zhu, Runxin Xu, Junxiao Song, Mingchuan Zhang, Y K Li, Y Wu, and Daya Guo. Deepseekmath: Pushing the limits of mathematical reasoning in open language models. arXiv preprint arXiv:2402.03300, 2024. URL https://arxiv.org/abs/2402.03300.
[54] Noam Shazeer, Azalia Mirhoseini, Krzysztof Maziarz, Andy Davis, Quoc Le, Geoffrey Hinton, and Jeff Dean. Outrageously large neural networks: The sparsely-gated mixture-of-experts layer. In International Conference on Learning Representations (ICLR), 2017. URL https://openreview.net/forum?id=B1ckMDqlg.
[55] Mohammad Shoeybi, Mostofa Patwary, Raul Puri, Patrick LeGresley, Jared Casper, and Bryan Catanzaro. Megatron-LM: Training multi-billion parameter language models using model parallelism. arXiv preprint arXiv:1909.08053, 2019.
[56] Benjamin F. Spector, Simran Arora, Aaryan Singhal, Arjun Parthasarathy, Daniel Y. Fu, and Christopher Ré. Thunderkittens: Simple, fast, and adorable kernels. In The Thirteenth International Conference on Learning Representations, April 2025. URL https://openreview.net/forum?id=0fJfVOSUra.
[57] Stuart H. Sul and Chris Ré. Thunderkittens 2.0: Even faster kernels for your gpus. February 2026. URL https://hazyresearch.stanford.edu/blog/2026-02-19-tk-2.
[58] Stuart H. Sul, Simran Arora, Benjamin Spector, and Chris Ré. Loads and loads of fluffy kittens. November 2025. URL https://hazyresearch.stanford.edu/blog/2025-11-17-fluffy-kittens.
[59] Stuart H. Sul, Simran Arora, Benjamin F. Spector, and Christopher Ré. Parallelkittens: Systematic and practical simplification of multi-gpu ai kernels. arXiv preprint arXiv:2511.13940, 2025. URL https://arxiv.org/abs/2511.13940.
[60] Stuart H. Sul, Dylan Lim, Benjamin Spector, and Chris Ré. One kernel for all your gpus. September 2025. URL https://hazyresearch.stanford.edu/blog/2025-09-22-pgl.
[61] Fahim Tajwar, Guanning Zeng, Yueer Zhou, Yuda Song, Daman Arora, Yiding Jiang, Jeff Schneider, Ruslan Salakhutdinov, Haiwen Feng, and Andrea Zanette. Maximum likelihood reinforcement learning. arXiv preprint arXiv:2602.02710, 2026. doi: 10.48550/arXiv.2602.02710. URL https://arxiv.org/abs/2602.02710.
[62] CodeGemma Team, Heri Zhao, Jeffrey Hui, Joshua Howland, Nam Nguyen, Siqi Zuo, Andrea Hu, Christopher A Choquette-Choo, Jingyue Shen, Joe Kelley, et al. Codegemma: Open code models based on gemma. arXiv preprint arXiv:2406.11409, 2024.
[63] Cursor Team. 1.5x faster moe training with custom mxfp8 kernels. https://cursor.com/blog/kernels, 2025.
[64] Cursor Team. Self-summarization for composer. https://cursor.com/blog/self-summarization, 2025.
[65] Cursor Team. The third era of software. https://cursor.com/blog/third-era, 2025.
[66] Kimi Team. Kimi k1.5: Scaling reinforcement learning with LLMs. arXiv preprint arXiv:2501.12599, 2025.
[67] Kimi Team. Kimi K2.5: Visual agentic intelligence. arXiv preprint arXiv:2602.02276, 2026.
[68] Qwen Team. Qwen3 technical report. arXiv preprint arXiv:2505.09388, 2025.
[69] Hugo Touvron, Thibaut Lavril, Gautier Izacard, Xavier Martinet, Marie-Anne Lachaux, Timothée Lacroix, Baptiste Rozière, Naman Goyal, Eric Hambro, Faisal Azhar, et al. LLaMA: Open and efficient foundation language models. arXiv preprint arXiv:2302.13971, 2023. URL https://arxiv.org/abs/2302.13971.
[70] Xingyao Wang, Boxuan Li, Yufan Song, Frank F. Xu, Xiangru Tang, Mingchen Zhuge, Jiayi Pan, Yueqi Song, Bowen Li, Jaskirat Singh, Hoang H. Tran, Fuqiang Li, Ren Ma, Mingzhang Zheng, Bill Qian, Yanjun Shao, Niklas Muennighoff, Yizhe Zhang, Binyuan Hui, Junyang Lin, Robert Brennan, Hao Peng, Heng Ji, and Graham Neubig. OpenHands: An open platform for AI software developers as generalist agents. In The Thirteenth International Conference on Learning Representations, ICLR 2025, Singapore, April 24-28, 2025. OpenReview.net, 2025. URL https://openreview.net/forum?id=OJd3ayDDoF.
[71] Yue Wang, Weishi Wang, Shafiq Joty, and Steven CH Hoi. Codet5: Identifier-aware unified pre-trained encoder-decoder models for code understanding and generation. In Proceedings of the 2021 conference on empirical methods in natural language processing, pp. 8696-8708, 2021.
[72] Yue Wang, Hung Le, Akhilesh Gotmare, Nghi Bui, Junnan Li, and Steven Hoi. Codet5+: Open code large language models for code understanding and generation. In Proceedings of the 2023 conference on empirical methods in natural language processing, pp. 1069-1088, 2023.
[73] Yuxiang Wei, Zhe Wang, Jiawei Liu, Yifeng Ding, and Lingming Zhang. Magicoder: Empowering code generation with OSS-Instruct. In Forty-first International Conference on Machine Learning, ICML 2024, Vienna, Austria, July 21-27, 2024, Proceedings of Machine Learning Research, pp. 52632-52657. PMLR, 2024. URL https://proceedings.mlr.press/v235/wei24h.html.
[74] Xumeng Wen, Zihan Liu, Shun Zheng, Zhijian Xu, Shengyu Ye, Zhirong Wu, Xiao Liang, Yang Wang, Junjie Li, Ziming Miao, Jiang Bian, and Mao Yang. Reinforcement learning with verifiable rewards implicitly incentivizes correct reasoning in base LLMs. In The Fourteenth International Conference on Learning Representations, ICLR 2026, 2026. URL https://openreview.net/forum?id=jGbRWwIidy.
[75] John Yang, Carlos E. Jimenez, Alexander Wettig, Kilian Lieret, Shunyu Yao, Karthik Narasimhan, and Ofir Press. Swe-agent: Agent-computer interfaces enable automated software engineering. In Advances in Neural Information Processing Systems 38: Annual Conference on Neural Information Processing Systems 2024, NeurIPS 2024, Vancouver, BC, Canada, December 10 - 15, 2024, 2024. URL http://papers.nips.cc/paper_files/paper/2024/hash/5a7c947568c1b1328ccc5230172e1e7c-Abstract-Conference.html.
[76] John Yang, Kilian Lieret, Carlos E. Jimenez, Alexander Wettig, Kabir Khandpur, Yanzhe Zhang, Binyuan Hui, Ofir Press, Ludwig Schmidt, and Diyi Yang. SWE-smith: Scaling data for software engineering agents. In Advances in Neural Information Processing Systems 38: Annual Conference on Neural Information Processing Systems 2025, NeurIPS 2025, San Diego, CA, USA, December 1-4, 2025, 2025. URL https://openreview.net/forum?id=63iVrXc8cC.
[77] Jiasheng Ye et al. Data mixing made efficient: A biannual survey of data mixing for LLM pre-training. arXiv preprint arXiv:2403.16952, 2024. URL https://arxiv.org/abs/2403.16952.
[78] Qiying Yu, Zheng Zhang, Ruofei Zhu, Yufeng Yuan, Xiaochen Zuo, Yu Yue, Weinan Dai, Tiantian Fan, Gaohong Liu, Juncai Liu, Lingjun Liu, Xin Liu, Haibin Lin, Zhiqi Lin, Bole Ma, Guangming Sheng, Yuxuan Tong, Chi Zhang, Mofan Zhang, Ru Zhang, Wang Zhang, Hang Zhu, Jinhua Zhu, Jiaze Chen, Jiangjie Chen, Chengyi Wang, Hongli Yu, Yuxuan Song, Xiangpeng Wei, Hao Zhou, Jingjing Liu, Wei-Ying Ma, Ya-Qin Zhang, Lin Yan, Yonghui Wu, and Mingxuan Wang. DAPO: An open-source LLM reinforcement learning system at scale. In The Thirty-ninth Annual Conference on Neural Information Processing Systems, NeurIPS 2025, 2025. URL https://openreview.net/forum?id=2a36EMSSTp.
[79] Yang Yue, Zhiqi Chen, Rui Lu, Andrew Zhao, Zhaokai Wang, Yang Yue, Shiji Song, and Gao Huang. Does reinforcement learning really incentivize reasoning capacity in LLMs beyond the base model? In The Thirty-ninth Annual Conference on Neural Information Processing Systems, NeurIPS 2025, 2025. URL https://openreview.net/forum?id=4OsgYD7em5. Oral.
[80] Chenggang Zhao, Shangyan Zhou, Liyue Zhang, Chengqi Deng, Zhean Xu, Yuxuan Liu, Kuai Yu, Jiashi Li, and Liang Zhao. Deepep: an efficient expert-parallel communication library. https://github.com/deepseek-ai/DeepEP, 2025.
[81] Yanli Zhao, Andrew Gu, Rohan Varma, Liang Luo, Chien-Chin Huang, Min Xu, Less Wright, Hamid Shojanazeri, Myle Ott, Sam Shleifer, et al. Pytorch fsdp: experiences on scaling fully sharded data parallel. arXiv preprint arXiv:2304.11277, 2023.
[82] Chujie Zheng, Shixuan Liu, Mingze Li, Xiong-Hui Chen, Bowen Yu, Chang Gao, Kai Dang, Yuqiong Liu, Rui Men, An Yang, Jingren Zhou, and Junyang Lin. Group sequence policy optimization. arXiv preprint arXiv:2507.18071, 2025. URL https://arxiv.org/abs/2507.18071.
[83] Terry Yue Zhuo, Armel Randy Zebaze, Leandro Von Werra, Harm de Vries, Qian Liu, and Niklas Muennighoff. Parameter-efficient instruction tuning code large language models: An empirical study. In ICLR 2025 Third Workshop on Deep Learning for Code, 2025.
附錄 A 貢獻者
Composer 研究團隊成員包括:
Aaron Chan, Ahmed Shalaby, Alexander Wettig, Aman Sanger, Andrew Zhai, Anurag Ajay, Ashvin Nair, Charlie Snell, Chen Lu, Chen Shen, Emily Jia, Federico Cassano, Hanpeng Liu, Haoyu Chen, Henry Wildermuth, Jacob Jackson, Janet Li, Jediah Katz, Jiajun Yao, Joey Hejna, Josh Warner, Julius Vering, Kevin Frans, Lee Danilek, Less Wright, Lujing Cen, Luke Melas-Kyriazi, Michael Truell, Michiel de Jong, Naman Jain, Nate Schmidt, Nathan Wang, Niklas Muennighoff, Oleg Rybkin, Paul Loh, Phillip Kravtsov, Rishabh Yadav, Sahil Shah, Sam Kottler, Alexander M Rush, Shengtong Zhang, Shomil Jain, Sriram Sankar, Stefan Heule, Stuart H. Sul, Sualeh Asif, Victor Rong, Wanqi Zhu, William Lin, Yuchen Wu, Yuri Volkov, Yury Zemlyanskiy, Zack Holbrook, Zhiyuan Zhang
附錄 B 基礎模型選擇
訓練前,我們評估了數個潛在的開源基礎模型,包括 GLM5 [4]、Kimi K2.5 [67] 和 DeepSeek V3.2 [12]。三項基礎模型評估促成了我們對 Kimi K2.5 的選擇:
編碼知識:我們使用名為 FreshBench 的內部基準測試對事實知識進行評分。FreshBench 是一個針對先前 Composer 模型對抗性建構的問答基準測試。我們識別出 Composer 必須閱讀程式庫原始碼或執行網路搜尋才能解決編碼任務的輪次。從這些追蹤中,我們建立問答配對,並使用網路搜尋代理驗證答案。
狀態追蹤:在編輯倉庫時,編碼代理通常需要理解數十次過去的文件編輯才能採取行動。LoCoDiff [3] 是一個基準測試,要求模型在多次差異後重建文件狀態,這是模型長期記憶的重要基礎技能。狀態追蹤是一個類似於 LoCoDiff 的內部基準測試,建立自我們的單一倉庫。我們不報告原始準確性(因為我們發現它對單一字元錯誤敏感),而是報告平均字元層級距離。
程式碼庫困惑度:我們測量困惑度以確定基礎模型的編碼智慧。我們使用私人單一倉庫作為未受污染的來源,按字母順序串連檔案,並在滾動視窗上計算負對數似然總和。
我們有意在測試基礎模型時不考慮編碼代理基準測試。我們發現這些基準測試對最終效能的預測性較低,因為代理和長程能力可能在 RL 階段發生劇烈變化。
表 2 顯示了分析結果。所有三個被考慮的模型在這些實驗中都表現得相當好。我們選擇 Kimi K2.5 [67] 是因為其整體強勁表現,以及進一步的額外考量,例如在我們基礎設施中的效率。
| 模型 | FreshBench ↑ | 狀態追蹤 ↓ | 負對數似然 ↓ |
|---|---|---|---|
| DeepSeek V3.2 | 68.9% | 66 | 11.75M |
| Kimi K2.5 | 83.2% | 86 | 13.81M |
| GLM-5 | 79.2% | 92 | 14.11M |
| GPT-5.4 | 92.5% | 103 | - |
| Claude 4.6 Opus | 88.9% | 65 | - |
| Gemini 3 Flash | 84.5% | 27 | - |
| Claude 4.5 Sonnet | 80.1% | 69 | - |
| Claude 4.5 Haiku | 61.7% | 177 | - |
表 2:在我們內部基準測試上評估的基礎模型。負對數似然在我們的內部程式碼庫上測量。
附錄 C CursorBench
C.1 串流前綴偵測
以下是另一個 CursorBench 任務範例。
問題陳述:我們在一些聊天回應中看到奇怪的串流 bug:Now I Now I need to updat Now I need to update this. Now I need to update this. I ha Now I need to update this. I have the。我們沒有得到正確的串流增量,而是得到重複增長的前綴,如片段所示。我認為這主要發生在思考 token 內部。我想知道這有多常見。查看 @logs 資料夾中的 954 個回應 json 檔案。
圖 12:CursorBench 任務範例。代理必須從部分症狀報告中推斷故障模式,在 954 個異質聊天回應上撰寫啟發式偵測演算法,並仔細微調該啟發式方法以恢復畸形前綴串流案例的確切計數,而不過度計數正常的增量輸出。此外,此 bug 的變體產生「交錯結巴」,其中初始前綴鏈僅有兩行長,然後穩定為具有遞增重複的重複行,代理必須仔細檢查聊天回應才能發現此問題。
以下清單顯示了此任務參考差異的演算法核心。
MIN_CHAIN = 3
MIN_SEED_LEN = 2
MAX_SEED_LEN = 50
def find_prefix_chain(text: str) -> tuple[int, str] | None:
if len(text) < 10:
return None
first_nl = text.find("\n")
if first_nl < MIN_SEED_LEN or first_nl > MAX_SEED_LEN:
return None
seed = text[:first_nl]
needle = "\n" + seed
starts = [0]
pos = 0
while True:
idx = text.find(needle, pos)
if idx == -1:
break
starts.append(idx + 1)
pos = idx + 1
if len(starts) < MIN_CHAIN:
return None
ends = [s -1 for s in starts[1:]] + [len(text)]
chunks = [text[s:e] for s, e in zip(starts, ends)]
chain = 1
for i in range(len(chunks) -1):
cur, nxt = chunks[i], chunks[i + 1]
if len(cur) < len(nxt) and nxt.startswith(cur):
chain += 1
else:
break
return (chain, seed) if chain >= MIN_CHAIN else None
def iter_think_blocks(text: str):
pos = 0
while True:
open_idx = text.find("", pos)
if open_idx == -1:
return
close_idx = text.find(" ", open_idx)
if close_idx == -1:
yield text[open_idx + 7:].lstrip("\n")
return
yield text[open_idx + 7:close_idx].lstrip("\n")
pos = close_idx + 8
def has_prefix_streaming_bug(chat_response: str) -> bool:
return any(find_prefix_chain(block) is not None for block in iter_think_blocks(chat_response))