Cursor Agent 現在可以控制他們自己的電腦了

Jonas Nelle & Alexi Robbins產品

Agent 的能力上限取決於其執行環境。若無法實際使用自己建立的軟體,Agent 很快就會碰到天花板。

在過去幾個月裡,我們先在內部解決這個問題:讓 Agent 擁有自己的虛擬機,內建完整開發環境,並具備測試更動與產出成果物(影片、螢幕截圖與記錄檔)的能力,讓你可以快速確認它們的工作品質。

今天,我們將全新的 Cursor Cloud Agent 帶到你工作的各個地方,包括網頁、行動裝置、桌面應用程式、Slack,以及 GitHub。Cloud Agent 會自動接入你的程式碼庫,產出可直接合併的 PR(拉取請求),並附上示範其更動的成果物。你也可以直接操作 Agent 的遠端桌面來使用已修改的軟體,並自行進行編輯,而不必在本機檢出該分支。

這是自從我們從 Tab 自動補全,進化到與 Agent 同步協作以來,在軟體開發方式上最大的變革。目前在 Cursor 內被合併的 PR 中,已有超過 30% 是由在雲端沙箱中自主運行的 Agent 所建立。

目前有 30% 的內部已合併 PR 由 Cloud Agent 建立目前有 30% 的內部已合併 PR 由 Cloud Agent 建立

自主能力的下一個層級

本機代理讓你可以輕鬆開始產生程式碼,但它們很快就會互相衝突,還會彼此(以及和你)競爭電腦資源。Cloud agents 透過為每個代理提供獨立的 VM 來消除這項限制,因此你可以同時平行執行許多個代理。

Cloud agents 也可以在自己的 sandbox 中直接建置並操作軟體,讓它們能不斷迭代,直到驗證自己的輸出結果,而不是在第一次嘗試後就交付。下方影片展示了我們先前在強化電腦使用方面研究中的一個概念驗證。

你可以看到代理在瀏覽器中瀏覽網頁、操作像試算表這樣的工具、解讀資料並做出決策,以及在複雜的 UI 環境中解決問題。

代理在其 VM 中錄下自己與桌面應用程式互動的過程。

在 Cursor 中使用雲端代理

過去一個月,我們在內部使用雲端代理,這徹底改變了我們開發軟體的方式。與其把工作拆成小任務並對代理進行微觀管理,我們現在會委派更大型的任務,讓它們自行完成。

以下是我們使用雲端代理的一些方式:

打造新功能

我們使用雲端代理來協助開發我們最近在 Cursor Marketplace 上線的 plugins。以下是其中一個我們給出的提示:

對於某個 plugin 頁面上顯示的每一個 component,我們希望附上一個指向其原始程式碼的連結。對於 skills、commands、rules 和 subagents,對應的來源是 .md 檔案。對於 hooks,則是 hooks.json。對於 MCPs,則是 .mcp.json 或其被定義的 manifest。當我們為某個 plugin 建立所有 components 的索引時,請追蹤各 component 的來源檔案,並根據底層的 GitHub URL 建立指向該檔案的連結。將這些資訊提供給前端,並讓前端使用這個圖示連到 GitHub。在本機使用 https://github.com/prisma/cursor-plugin 進行測試

這個代理實作了功能,並錄製自己瀏覽匯入的 Prisma plugin,逐一點擊每個 component 來驗證 GitHub 連結。

代理錄製自己點擊按鈕以驗證它們是否連到正確的原始檔案。

在本機測試時,代理會暫時繞過控管 Marketplace 頁面的 feature flag,並在推送前還原。它會 rebase 到 main,解決合併衝突,並將變更壓縮成單一 commit。

重現漏洞

我們從 Slack 啟動了一個雲端代理,提示內容是「請幫我詳細分類並解釋這個漏洞」,後面接著對剪貼簿資料外洩漏洞的描述。當代理執行完畢,它會在同一個 Slack 討論串中回覆一則摘要,說明自己完成了哪些事情。

雲端代理重現一個漏洞

代理建立了一個 HTML 頁面,透過一個外露的 API 來利用該漏洞。它啟動了一個後端伺服器,在本機提供這個示範頁面,並在 Cursor 的內建瀏覽器中載入此頁面。

影片紀錄完整呈現了整個攻擊流程:代理先將測試用的 UUID 複製到系統剪貼簿,再在 Cursor 的瀏覽器中載入示範頁面,然後點擊按鈕來竊取並顯示該 UUID。它也擷取了一張螢幕截圖,顯示剪貼簿成功被竊取,並將示範用的 HTML 檔案提交到 repo。

代理錄製自己逐步走過攻擊流程以示範這個漏洞。

處理快速修正

我們請一個雲端代理把靜態的「Read lints」標籤改成依據 lint 結果動態顯示。它為零筆診斷結果實作了「No linter errors」,為 N 筆診斷結果實作了「Found N errors」,並套用與現有 CSS 一致的樣式。

代理在 Cursor 桌面應用程式中測試了兩種情況:一個包含多個型別錯誤的檔案,以及一個沒有錯誤的乾淨檔案。影片紀錄顯示代理驗證了乾淨檔案的展開群組會顯示「No linter errors」。

代理錄製自己以展示它正確實作了 lint 標籤修正。

測試 UI

我們啟動了一個雲端代理來檢查 cursor.com/docs 上的一切是否正常運作。它花了 45 分鐘完整走訪我們的文件網站。代理提供了一份測試過所有功能的摘要,包括側邊欄、頂部導覽列、搜尋、複製頁面按鈕、意見回饋對話框、目錄,以及主題切換。

代理錄製自己在 Cursor 文件網站上測試 UI 的過程。

既然代理已能處理大部分實作工作,我們發現開發者的角色更多轉向負責設定方向與決定要發佈哪些內容。

接下來的發展

我們正朝著自駕程式碼庫的未來前進,在那樣的世界裡,代理會合併 PR(拉取請求)、管理發佈流程並監控正式環境。我們將從一個開發者使用代理來產生 diff 的世界,走向由代理端到端交付經過測試的功能的世界。

要完全實現這種轉變,需要改進工具、模型和互動模式。我們短期內的重點是協調多個代理之間的工作,並打造能從過往執行中學習、隨著經驗累積而變得更有效的模型。

cursor.com/onboard 開始使用,看看 Agent 如何自行完成設定並錄製示範影片。或在文件中進一步了解。

歸檔於: 產品

作者s: Jonas Nelle & Alexi Robbins

Cursor Agent 現在可以控制他們自己的電腦了 · Cursor