我們如何設置雲代理環境 · Cursor
Cursor 為他們的單體倉庫開發了一個雲代理環境,包括將雲環境與本地開發匹配、通過 anydev CLI 簡化界面、通過 Cursor Cloud MCP 實現自愈,以及改善代理體驗。最終,雲代理現已負責超過一半的合併 PR。
Cursor 團隊在決定讓雲代理能夠自主測試代碼變更後,首先着手優化自身代碼庫的測試環境。他們發現,開發環境本身就是一個產品,只不過其用户是代理。為了讓雲代理高效工作,必須使雲環境與本地開發環境一致,讓代碼庫足夠清晰以便代理無需隱性知識即可運行和測試代碼,並且隨着代碼庫的變化保持環境健康。
最初,Cursor 的開發者主要在 Mac 上工作,而云虛擬機運行 Linux,因此團隊將各種開發工具和設置腳本適配到 Ubuntu 虛擬機,並創建了專用的 Dockerfile 作為雲代理的起始鏡像。同時,安全團隊添加了網絡出口限制、代理 Git 遠程訪問、提交和提交消息中的秘密掃描以及工具結果中的秘密編輯等功能,確保秘密安全。
即便環境就緒,代理仍然不擅長運行代碼。為此,團隊開發了名為 anydev 的命令行工具,代理可通過它啓動所有服務。anydev 提供了多重幫助菜單,幷包含一個監控進程,可自動重啓長時間運行的構建命令,從而減輕模型負擔。代理因此能夠可靠地運行代碼,並通過 screen 錄製功能在 Slack 或 PR 中分享演示,工程師無需本地檢出分支即可合併和部署代碼。
為了維護環境健康,Cursor 構建了 Cursor Cloud MCP,提供動態可發現的工具接口,使代理能夠檢測和修復環境問題。基於 MCP,團隊設置了 Cloud Doctor 自動化程序,定期檢查故障,進行根因分析,並自動打開 PR 修復高置信度問題。此外,Cloud Doctor 還通過檢查代理軌跡來改進技能和工作流,從而不斷提升代理的開發體驗。
通過這一系列努力,雲代理在 Cursor 單體倉庫中的採用率大幅提升:2024 年 12 月,代理撰寫了約十分之一的合併 PR,而現在這一比例超過一半。團隊總結道,環境是關鍵,並建議其他團隊從三個問題入手:代理是否擁有與開發者相同的工具和數據?代理是否能找到記錄實際工作方式的技能?代理是否能測試和驗證核心工作流?