改進 Cursor 的 Agent 以支援 OpenAI Codex 模型
Cursor 已與所有最先進的 AI(人工智慧)程式碼模型完成整合。
每個模型都需要我們在 Agent 框架中加入特定指令並進行微調,以提升輸出品質、避免敷衍回應,並更有效率地呼叫工具。
我們一直與 OpenAI 合作,讓開發者能在 Cursor 的 Agent 中使用他們的模型。這篇文章將介紹我們如何更新 Agent 框架,以支援他們最新一代的程式碼模型 GPT-5.1-Codex-Max。
建立穩健的 Agent 框架
在 Cursor 的 Agent 框架中,每個模型都會搭配特定的指令與工具,以便在 Cursor 環境中最佳化該模型的表現。
AI(人工智慧)實驗室會使用各種不同的指令與工具來訓練新模型。在像程式開發這類的特定領域中,模型可能會偏好與其訓練資料中較為相似的模式。當我們將新模型加入 Cursor 時,我們的任務是同時整合模型熟悉的指令與工具,以及 Cursor 專屬的指令與工具,並再依據 Cursor Bench(我們的內部評測套件)進行調校。
我們會依據模型的成功率、呼叫工具的能力,以及在使用者間的整體採用程度來衡量其品質與穩健性。以下是我們在 Codex 的 Agent 框架上做出的部分更新。
更新為最新的 Codex 模型
OpenAI 的 Codex 模型是其最新 frontier 模型的變體,專門為具代理能力(agentic)的程式碼撰寫進行訓練。
OpenAI 團隊與我們緊密合作,將工具和提示詞調整為與 Codex CLI harness 保持一致。以下是我們所做的一些變更:
更偏向 shell 的作法
OpenAI 的 Codex CLI 著重於以 shell 為主的工作流程。因此,Codex 模型在訓練期間只接觸到少數幾個工具,並改而學會使用 shell 來搜尋、讀取檔案以及進行編輯。
如果模型在處理複雜的編輯時遇到困難,有時會退而改用內嵌的 Python 指令碼來寫入檔案。這些指令碼功能強大,但在 Cursor 中進行編輯時,透過工具呼叫的方式既更安全,也能提供更佳的使用者體驗。
為了鼓勵使用工具呼叫,我們將 Cursor 中工具的名稱與定義調整得更接近其 shell 對應工具,例如 rg(ripgrep)。我們已對測試框架中所有模型套用這項變更,同時也新增了如下指示:
如果某個操作有對應的工具可用,請優先使用該工具
而非 shell 命令(例如使用 read_file 而非 `cat`)。
Cursor 中的沙盒機制,可在無需使用者手動核准每一條指令的情況下,阻止未經授權的檔案存取與網路活動,即使模型仍然選擇執行 shell 指令,也有助於在此進一步提升安全性。
前言
與主流 GPT-5 系列模型不同,Codex 模型系列目前會在工作過程中使用推理摘要向使用者傳達進度更新。這些摘要可以是一行標題,也可以是一則完整訊息。
對於這些推理摘要,我們希望在讓使用者能跟上 Agent 的進度並及早識別不佳的執行路徑,與避免過度干擾而讓使用者選擇忽略之間取得平衡。我們為模型提供了指引,要求將推理摘要限制在 1 到 2 句,在發現新資訊或採用新策略時加以註記,並避免評論自己溝通的行為(例如「我正在向使用者解釋……」)。
由於 Codex 模型在一個 Agent 回合結束之前無法以一般對話方式「與使用者交談」,我們移除了提示中所有與在回合中途與使用者溝通相關的語句。我們發現這改善了模型最終程式碼輸出的表現。
讀取 Lint 報告
Cursor 在我們的測試框架中,為所有模型提供了讀取 linter 錯誤(例如 ESLint、Biome)的工具,並允許代理自動修復這些錯誤。
我們發現,只提供工具定義本身,無法讓 Codex 傾向於呼叫我們的 read_lints 工具。相反地,若明確且直接地說明「何時應該呼叫它」,則能讓 Codex 顯著受益:
在進行實質性編輯後,使用 read_lints 工具檢查
最近編輯的檔案是否有 linter 錯誤。如果你引入了
任何錯誤,且能輕鬆找出修復方法,請修復它們。
保留推理軌跡
OpenAI 的推理模型會在工具呼叫之間輸出內部推理軌跡,這實際上是一條「思維鏈」(chain of thought),用來說明模型為何選擇每一步動作。Responses API 的設計目的是擷取並傳遞這些推理項目(或在敏感情境中傳遞加密的推理項目),讓模型可以在多輪互動中維持推理的連貫性,而不需要每次都從零開始重建計畫。
Codex 尤其依賴這種連貫性。當推理軌跡被丟棄時,模型必須自行推斷先前的思考過程,往往會導致子目標遺失、規劃品質下降、工具呼叫順序錯亂,或一再重新推導先前的步驟。在我們的 Cursor Bench 實驗中,從 GPT-5-Codex 中移除推理軌跡導致效能下降 30%。作為對照,OpenAI 在 GPT-5 上的 SWE-bench 測試中觀察到,當省略推理軌跡時,效能僅下降 3%。
考量這種影響的幅度,我們加入了警示機制,以確保推理軌跡始終能被正確保留並轉送。這可以維持代理的內部計畫不被破壞,並避免在模型被迫在工具呼叫之間「自行腦補缺漏」時產生的效能退化。
讓模型更傾向主動採取行動
在 Cursor 的預設 Agent 模式下,你會希望 Agent 能依據使用者的請求,自主地閱讀與編輯檔案。當你切到別的分頁,一回來卻發現 Agent 一直在等你點頭才能繼續時,確實會讓人感到很挫折。
我們一直在嘗試使用更具體的指示來引導 Codex:
除非使用者明確要求提供計劃或其他明顯表示不應撰寫程式碼的意圖,否則應假設使用者希望你進行程式碼變更或執行工具來解決問題。在這些情況下,不應在訊息中輸出你提議的解決方案,而應直接實作變更。如果遇到挑戰或阻礙,應嘗試自行解決。
在我們的非同步遠端工作流程 Cloud Agents 中,我們進一步強化這套語言。
訊息順序
OpenAI 模型經過訓練,會遵守並優先考量訊息的先後順序。舉例來說,system prompt 總是會優先於使用者訊息與 tool 結果。
這雖然很有幫助,但也意味著我們必須調整自己的 harnesses,確保由 Cursor 提供的 prompt 不會包含可能不經意與使用者訊息相互矛盾的指示。否則,Codex 可能會進入一種不想遵從使用者請求的狀態。
例如,有一段時間我們告訴 Codex 應該注意節省 token、不要浪費。但我們發現這則訊息影響到模型願不願意執行更具野心的工作或大規模探索。有時它會直接停下來,固執地說:我不應該浪費 token,而且我覺得沒有必要繼續這個任務!
展望未來
模型推出的節奏正不斷加快。我們的目標是,在 Cursor Agent 的執行架構中充分發揮每一個最先進模型的效能。還有許多工作要完成,我們也會持續分享我們為 Cursor 帶來的各項改進。