隆重推出 Projects
今天我們在 Cursor 推出 Projects。有了 Projects,你可以承接規模更大的工作,例如一項功能、一次遷移,或一個完整的應用程式。它能在長達數月的工作中維持上下文、將任務委派給數以千計的 sub代理,並在無需提示詞的情況下自動執行週期性工作。
今年二月,我們闡述了對軟體開發第三個時代的願景:由代理組成的 fleet 承接完整的工作。Projects 正是這項願景的具體實作。藉由提升一層抽象,它讓開發者不必再費心管理代理,而能直接指揮工作本身。
在 Cursor,我們已經使用 Projects 數個月,用它完成數百個 PR (拉取請求) 規模的遷移、維持設計系統的一致性,並打造出 Projects 本身。我們發現它能大幅提升生產力:新使用者合併的 PR (拉取請求) 數量多出 30%,而主要使用 Projects 的使用者更是達到六倍之多。
透過單一協調者指揮數千個代理
你可以透過與 Project 的協調者代理對話來管理 Project。協調者本身不寫程式碼,而是指揮其他負責寫程式的代理。由於它只負責委派而不親自執行,因此永遠不會被卡住,隨時都能回應你的指示。
Projects 之所以可行,來自三項核心能力:
預設在雲端執行,需要時才在本機執行。 Project 在專屬的電腦上執行,因此闔上筆電也不會中斷。這讓 Project 能並行執行的 sub代理數量,遠超過你的筆電所能負荷。當有東西需要在你的機器上測試時,協調者會啟動一個本機代理在該處執行。
共享上下文。 你不該每次開始新任務時,都得重新讓代理熟悉狀況。每個 Project 都會維護一組檔案,並在其代理所使用的每一台雲端與本機機器之間同步。代理會加入研究成果與產物,以及它們對 codebase 的了解,還有你偏好的做事方式。舉例來說,只要有一個代理找出測試某項服務的方法,日後所有代理都能沿用那些指示。這些上下文會隨著 Project 一同累積,讓協調者愈來愈得心應手。
Subscriptions。 協調者可以監看 Slack 頻道、依排程執行,或追蹤你所有的 PR (拉取請求) ,在它們開啟或合併時修正 CI 並採取動作。如此一來,它便能依據偵測到的訊號主動採取動作,不必等你下提示詞。
我們在 Cursor 如何使用 Projects
以下三種模式,涵蓋了我們的工程師運用 Projects 的絕大多數情境。
功能開發
大多數工程師會為規模較大的工作建立一個 Project。功能開發通常從代理研究系統開始,並把學到的內容記錄下來,作為共享的上下文。接著協調者會擬定規劃,並派出多個代理並行實作與測試其中的不同部分。
隨著每一輪意見回饋,Project 會逐漸熟悉你的架構與偏好。當功能可以試用時,協調者可以在你的電腦上啟動代理,在本機執行。功能上線後,同一個 Project 還能監控日誌,並在完整掌握原始決策脈絡的情況下處理錯誤回報。
遷移
Projects 特別適合那些容易開始、卻難以收尾的遷移工作。在 Cursor,我們用它導入新的 framework,並在數百個 PR(拉取請求)中替換樣式系統。
你會與協調者一起確立一套安全的做法,接著由它在整個 codebase 中逐步套用。一開始,你會仔細審查每一個 PR(拉取請求);等這些修正證實可靠後,你就能減少審查,讓協調者自行持續推進整個遷移。
園丁式維護
Projects 非常適合處理那些永遠做不完的工作,例如維護程式碼品質或留意回歸問題。你可以讓協調者追蹤新的 PR(拉取請求)、留意 Slack 中的錯誤回報,或依排程執行,只要有新工作出現,它就會主動處理。
我們團隊中就有一位工程師以這種方式運行一個設計系統的 Project。一開始,這位工程師會審查每一項修正,並更正做錯的部分。現在協調者會掃描每一個新的 PR(拉取請求),抽出應歸入設計系統的元件,並在同樣的錯誤出現第二次時加入一條 lint 規則。這個 Project 預計每天將處理 20 到 100 個 PR(拉取請求),因此由協調者統籌這些工作,工程師只需在需要關注之處介入確認。
開始使用 Projects
Projects 目前為測試版,自今日起逐步開放給所有使用者。你可以從左側導覽列建立 Project,описать描述你想打造的內容,剩下的就交給協調者處理。它最適合用在無法在單一 chat 內完成的工作,例如需要多個 PR (拉取請求) 的功能、一次遷移,或是你希望在離線期間代為完成的職責。