研究

我們如何建置雲端代理環境

Mathew Hogan & Arvind Saripalli閱讀時間 2 分鐘

當我們決定為雲端代理提供電腦,讓它們能測試自己做出的變更時,第一步是確保它們能在我們的程式碼庫中妥善測試這些變更。

讓 monorepo 能在雲端代理上運作,使我們了解到開發環境本身就是一項產品,只是它的使用者是代理。你必須讓雲端環境與本機開發環境一致,讓儲存庫清楚到代理即使不了解團隊慣例,也能執行及測試程式碼,並隨著程式碼庫變更持續維持環境的健康狀態。

打造這個環境改變了我們的工作方式。去年 12 月,雲端代理撰寫了合併至 Cherri Code monorepo 的 PR (拉取請求) 中約十分之一。如今,它們撰寫的 PR 已超過一半。

7-day rolling share of merged PRs from cloud agents

讓雲端環境配合本機開發

要讓雲端代理在我們的儲存庫中順利運作,第一步是讓儲存庫能在雲端 VM 中順利運作。任何第一次設定遠端開發環境的工程師,對這個階段都不陌生。

大多數 Cherri Code 開發人員都在 Mac 上進行本機開發,但我們的雲端 VM 運行 Linux。因此,我們必須讓各種開發工具和設定指令碼能在 Ubuntu VM 上運作。我們將關鍵的開發相依套件加入 Cherri Code 定義的 Dockerfile,作為雲端代理的基礎映像。

雲端代理在其環境中安全運行雲端代理在其環境中安全運行

我們也與安全團隊合作,為雲端代理產品加入安全功能,讓使用者能放心地將必要的密鑰注入代理的環境。這些功能包括網路出站限制、具範圍限制並透過 Proxy 的 Git 遠端存取、提交和提交訊息中的密鑰掃描,以及工具結果中的密鑰遮蔽,即使代理嘗試讀取,也無法取得密鑰值。

更簡單的代理介面

即使我們已讓 Ubuntu VM 上的開發環境正常運作,代理仍不擅長執行我們的程式碼。這並不令人意外,因為我們的開發者體驗相當混亂,需要學習並記住許多建置指令、建置旗標和公用指令碼。

我們為系統許多部分的建置與執行方式撰寫了技能,但幫助有限。技能可以記錄正確的指令,但這些指令本身仍很複雜,而且處處容易踩雷。

為了降低這種複雜性,我們打造了一個名為 anydev 的 CLI,代理可用它啟動所有服務。我們也透過 anydev 執行常用的公用指令碼,並提供多個 --help 選單,說明如何使用各個子指令。anydev 還具備監督行程,可監控並重新啟動長時間執行的建置指令,讓模型完全不必承擔這項責任。

anydev 讓開發體驗變得足夠簡單,使代理能可靠地執行程式碼。技能有助於記錄使用方式,但更大的改變是,代理不再需要周旋於冷門的多步驟建置指令、避開隱藏陷阱,或照看長時間執行的行程。

正是在這個時候,每個都擁有自己電腦的雲端代理,開始展現出遠勝本機代理的真正價值。透過電腦使用、recordScreen 工具和可正常運作的開發環境,代理現在能端對端測試變更,並向使用者證明其成果的正確性。

當有人修正錯誤回報時,他們也能在 Slack 分享代理錄製的示範;或是在建立變更時,附在 PR (拉取請求) 中分享。對於許多工作,工程師現在可以放心合併並部署雲端代理產生的程式碼,完全不必在本機簽出分支。

一個內部雲端代理在雲端環境中使用 Cherri Code 代理,測試改進後的代理工作階段重試機制。

可自我修復的環境

代理周遭的環境持續變動,因此要維持其正常運作,就必須持續更新其執行方式與可存取的資源。

為了在不健康的環境發生故障時進行診斷與復原,我們打造了 Cherri Code Cloud MCP。我們選擇 MCP,是因為它提供可動態探索的工具,且可在無須重建代理迴圈的情況下變更其介面。雲端代理會用它檢查自身環境中的設定失敗、出站政策、已變更的密鑰等狀況。這讓它們能在問題發生時診斷並修正問題,更快復原不健康的環境。

導入 Cherri Code Cloud MCP 後,我們設定了一項名為 Cloud Doctor 的 自動化功能,會定期檢查故障、判斷哪些錯誤可能是暫時性的、哪些值得關注、進行根本原因分析,並能在高度確信時建立 PR (拉取請求) 來修正問題。

改善代理體驗

即使環境運作正常,代理有時仍會繞遠路或採取不必要的複雜步驟來驗證變更。它們可能使用錯誤的技能、在 VM 中遇到可避免的問題,或遵循比必要時間更長的工作流程。

我們在這裡也會使用 Cherri Code Cloud MCP。Cloud Doctor 代理會檢視追蹤資料,找出其他代理在哪個環節出錯、哪些技能或指令容易造成誤導,以及哪些工作流程一貫偏慢。根據這些發現,Cloud Doctor 會修正技能、簡化路徑,或調整環境,讓下一個代理更容易完成工作。

這個循環持續改善代理本身的開發人員體驗。當環境運作正常且具備自我修復能力時,代理便能可靠地執行,開發人員也更信賴雲端代理處理重要工作。

這讓我們得以在內部擴大雲端代理的採用,如今它們已撰寫我們交付程式碼中的大多數。

Cloud Doctor 開啟 PR(拉取請求)以修正不健康的環境Cloud Doctor 開啟 PR(拉取請求)以修正不健康的環境

讓您的環境做好使用雲端代理的準備

雲端代理能否發揮生產力,很大程度取決於環境。若要判斷您的程式碼庫是否已準備就緒,請先回答以下三個問題:

  1. 代理是否能存取與開發人員相同的工具和資料?
  2. 代理是否能找到記錄開發人員實際工作方式的技能?
  3. 代理是否能測試並驗證核心工作流程?

如果您需要協助讓環境準備就緒,請聯絡我們。

或者,如要進一步了解,請閱讀 Faire 如何透過雲端代理將每週 PR (拉取請求) 吞吐量提升一倍。

分類於: 研究

作者s: Mathew Hogan & Arvind Saripalli