DoorDash以兩階段的多代理LLM系統自動清除過期功能旗標,在50個測試案例中有45個產出了工程師核准的拉取請求,平均每個旗標花費4.79美元、耗時13.8分鐘;同樣的工作交給人力,內部基準是一到兩小時。相關成果發表於DoorDash工程師Atharv Chandratre與Jai Datar撰寫的ICSME 2026產業議程論文。
重點摘要
- 系統把50個過期旗標中的45個整理成可用的拉取請求,整體成功率90%,最複雜的案例也有85%。
- 由Claude Sonnet擔任協調代理,透過MCP規劃每次清理;實際改動程式碼的是Claude Opus代理,一次最多四個並行,各自在獨立的git worktree中作業。
- 在本機通過建置、測試、95%修補程式碼覆蓋率與靜態分析之前,系統不會開啟任何拉取請求。
623個儲存庫裡的死旗標為何成了維護包袱
功能旗標是一種執行期設定:它控制漸進式推出、切分實驗組,也充當人工的緊急關閉開關。功能完全上線之後,旗標就不再有存在價值,但分支邏輯仍以死重的形式留在程式碼裡,而一條沒人測試的休眠路徑可能被誤開。
讓人力難以招架的是規模。論文統計,623個儲存庫中有超過5萬6000個功能旗標,其中1659個在2025年5月處於過期狀態。DoorDash自家的工程部落格指出,平台目前的動態設定值已超過6萬個,每月還新增約2300個。作者寫道,規則式的清理工具在DoorDash的程式碼庫面前力有未逮,因為正確移除旗標需要推理周邊條件式最終收斂成什麼,而不是比對某個符號的樣式。
兩階段代理系統如何運作
第一階段是規劃。以Claude Sonnet運行的協調代理會拉取Jira工單,透過MCP查詢實驗平台上的即時推出數據,對整個儲存庫做一次語意掃描,接著輸出一份結構化的清理計畫,明確指出旗標該被換成哪個值。在任何程式碼被動到之前,工程師必須確認這個目標值——這是整個流程中唯一的人工檢查點。
第二階段是動刀。每個確認過的值配一個移除代理,以Claude Opus運行,每個儲存庫最多四個並行,各自在獨立的git worktree裡工作,避免平行改動彼此碰撞。Gradle以--no-daemon執行,防止建置狀態在worktree之間外洩,每個代理還帶有一小時的硬性逾時上限。
真正值得注意的是那些關卡。代理要開拉取請求,得先通過建置、測試套件、JaCoCo設下的95%修補程式碼覆蓋率門檻,以及Detekt靜態分析;任何一關沒過,PR就不會出現。模型分工的理由則直白地基於成本:便宜的模型負責蒐集中繼資料與規劃,昂貴的模型只留給呼叫鏈推理與實際修改。
50個旗標的評測實際說明了什麼
評測集並未挑軟柿子吃。其中包含41個布林值、6個字串與3個整數型別,並分成只動到一兩個檔案的簡單案例6件、橫跨三到五個檔案的中等案例18件,以及牽涉巢狀條件式與跨檔相依的複雜案例26件。
首輪成功率幾乎完全跟著複雜度走:簡單100%、中等94%、複雜85%。成本也是如此。簡單清理平均7.5分鐘、2.69美元,中等為10.4分鐘、3.46美元,複雜則是17.7分鐘、6.20美元。45個獲核准的拉取請求中,有14個需要一次小幅修正,另有5件必須由工程師親自接手。
失敗模式具體得足以借鑑。六次返工源於修補覆蓋率不足,八次來自移除不完整——殘留的變數,���是在呼叫鏈更深處仍然存活的參照。五次人工介入全都與呼叫鏈深度、以及參數跨介面傳遞有關,而這正是只擁有單一檔案視野的程式碼代理最不擅長的推理。
這對真正落地的代理部署說明了什麼
讀過架構就會發現模式並不陌生:以工作單位為界的隔離、範圍收得很窄的人工核准點,以及代理無法用話術繞過的機械式關卡。Cloudflare用四個拒絕共享脈絡的代理把Astro未結issue砍掉85%時,形狀完全一樣。模型選擇只是帳單上的一行,關卡才是產品本身。
就算在最糟的級距,這筆帳仍然划算:6.20美元、不到18分鐘,對上一到兩個工程師小時。要保留的是樣本規模。50個旗標是試點,不是1659個旗標的待辦清單;而成本與失敗都集中在複雜級距,那正是待辦清單的大宗。85%在面對完整佇列後是否守得住,才是值得盯的數字。
常見問題
DoorDash的清理系統用了哪些模型?
兩個,按職責拆分。Claude Sonnet協調代理負責取用Jira、以MCP查詢即時推出數據並擬定計畫;Claude Opus代理執行程式碼修改,因為呼叫鏈推理正是更強模型值回票價的地方。
什麼機制阻止代理弄壞建置?
每個代理都在隔離的git worktree中作業,且必須通過建置、測試套件、JaCoCo的95%修補覆蓋率門檻與Detekt靜態分析,才能建立拉取請求。若代理停滯,一小時的硬性逾時會將其中斷。
整個清理流程是全自動的嗎?
不是。規劃階段結束時,工程師要先確認替換值,程式碼才會開始變動,產出的拉取請求同樣要走正常審查。評測中50件也有5件需要工程師直接介入。






