在過去一年中,許多工程組織都構建了內部編碼智慧體,以協助開發團隊工作。Stripe 開發了 Minions,Ramp 構建了 Inspect,Coinbase 建立了 Cloudbot。這些系統透過 Slack、Linear 和 GitHub 等現有工作流整合,無需工程師採用新介面。儘管這些系統獨立開發,但它們都收斂於相似的架構模式:隔離的雲沙箱、精選工具集、子智慧體編排以及開發人員工作流整合。這種趨同表明,在生產工程環境中部署 AI 智慧體存在一些共同要求。
今天,我們釋出了 Open SWE,這是一個開源框架,以可定製形式捕捉了這些模式。Open SWE 基於 Deep Agents 和 LangGraph 構建,提供了我們在這些實現中觀察到的核心架構元件。如果你的組織正在探索內部編碼智慧體,這可以作為一個起點。
生產部署中的模式
Stripe、Ramp 和 Coinbase 都構建了自己的內部編碼智慧體。Kishan Dahya 撰寫了一篇精彩的文章,闡述了這些編碼智慧體所做的不同架構決策。我們總結如下,然後深入探討 Open SWE 在這些維度上的表現。
- 隔離執行環境:任務在專用雲沙箱中執行,擁有完全許可權但受嚴格邊界限制。這隔離了任何錯誤對生產系統的影響範圍,同時允許智慧體無需每次操作都請求批准即可執行命令。
- 精選工具集:據 Stripe 工程團隊稱,他們的智慧體可訪問約 500 個工具,但這些工具是經過精心挑選和維護的,而非隨時間累積。工具精選比數量更重要。
- Slack 優先呼叫:這三個系統都將 Slack 整合作為主要介面,讓開發人員在現有的溝通工作流中工作,而無需切換到新應用程式。
- 啟動時豐富上下文:這些智慧體在開始工作前,會從 Linear 問題、Slack 執行緒或 GitHub PR 中拉取完整上下文,減少透過工具呼叫發現需求的開銷。
- 子智慧體編排:複雜任務會被分解並委派給專門的子智慧體,每個子智慧體擁有獨立的上下文和明確職責。
這些架構選擇已在多個生產部署中被證明有效,但組織可能需根據自身環境和需求調整具體元件。
Open SWE 的架構
Open SWE 提供了類似架構模式的開源實現。以下是框架與我們所觀察到的模式的對映:
- 智慧體框架:基於 Deep Agents 構建:Open SWE 並未復刻現有智慧體或從頭構建,而是基於 Deep Agents 框架組合而成。這種方法類似於 Ramp 的團隊在 OpenCode 基礎上構建 Inspect。組合提供了兩個優勢:升級路徑(當 Deep Agents 改進時,可整合改進而不必重建自定義內容)和無需復刻即可定製(可保留組織特定的工具、提示和工作流作為配置,而非修改核心智慧體邏輯)。
- 沙箱:隔離雲環境:每個任務在自己的隔離雲沙箱中執行,這是一個具有完整 shell 訪問許可權的遠端 Linux 環境。倉庫被克隆進去,智慧體獲得完全許可權,任何錯誤都被限制在該環境中。Open SWE 開箱即支援多種沙箱提供商:Modal、Daytona、Runloop、LangSmith,你也可以實現自己的沙箱後端。
- 工具:精選而非累積:Open SWE 附帶一組精選工具,包括執行 shell 命令、獲取網頁、API 呼叫、Git 提交和開啟 PR、更新 Linear 工單、回覆 Slack 執行緒,以及 Deep Agents 的內建工具。精心挑選的小型工具集更易於測試、維護和推理。當需要為組織新增額外工具時(內部 API、自定義部署系統、專用測試框架),可以顯式新增。
- 上下文工程:AGENTS.md + 源上下文:Open SWE 從兩個來源收集上下文。AGENTS.md 檔案(如果倉庫根目錄存在)會被讀入沙箱並注入到系統提示中,編碼每個智慧體執行應遵循的約定、測試要求、架構決策和團隊特定模式。源上下文:完整的 Linear 問題(標題、描述、評論)或 Slack 執行緒歷史會在智慧體啟動前組裝並傳遞給智慧體,無需額外工具呼叫即可提供任務特定上下文。這種雙層方法平衡了倉庫範圍的知識與任務特定資訊。
- 編排:子智慧體 + 中介軟體:Open SWE 的編排結合了兩種機制。子智慧體:Deep Agents 框架支援透過任務工具生成子智慧體。主智慧體可以將獨立的子任務委派給隔離的子智慧體,每個子智慧體擁有自己的中介軟體棧、待辦事項列表和檔案操作。中介軟體:確定性中介軟體鉤子在智慧體迴圈周圍執行,例如在模型呼叫前注入後續訊息、自動開啟 PR 的 safety net、以及工具錯誤處理。這種智慧體(模型驅動)與確定性(中介軟體驅動)編排的分離有助於平衡可靠性與靈活性。
- 呼叫:Slack、Linear 和 GitHub:Open SWE 遵循 Slack 作為主要呼叫介面的模式。在 Slack 中,@機器人 可在任何執行緒中提及,支援 repo:owner/name 語法指定倉庫。在 Linear 中,在問題上評論 @openswe 即可觸發。在 GitHub 中,在 PR 評論中標記 @openswe 可處理審查反饋。每次呼叫建立一個確定性執行緒 ID,後續訊息路由到同一正在執行的智慧體。
- 驗證:提示驅動 + 安全網:智慧體被指示在提交前執行 linter、格式化程式和測試。open_pr_if_needed 中介軟體作為後備,如果智慧體完成而未開啟 PR,則自動處理。可以透過新增確定性 CI 檢查、視覺驗證或審查門控來擴充套件驗證層。
為何選擇 Deep Agents
Deep Agents 提供了使此架構可組合且可維護的基礎。上下文管理:長時間執行的編碼任務可能產生大量中間資料,Deep Agents 透過基於檔案的儲存處理,將大型結果解除安裝而不是保留在對話歷史中,有助於防止上下文溢位。規劃原語:內建的 write_todos 工具提供了一種結構化的方式來分解複雜工作、跟蹤進度並根據新資訊調整計劃。子智慧體隔離:當主智慧體透過任務工具生成子智慧體時,該子智慧體獲得自己的隔離上下文,不同子任務不會互相汙染對話歷史。中介軟體鉤子:允許在智慧體迴圈的特定點注入確定性邏輯,例如訊息注入和自動 PR 建立。升級路徑:由於 Deep Agents 作為獨立庫積極開發,上下文壓縮、提示快取、規劃效率等改進可以流入 Open SWE,無需重建自定義內容。
為你的組織定製
Open SWE 旨在作為一個可定製的基礎,而非成品。每個主要元件都是可插拔的:沙箱提供商、模型、工具、觸發器、系統提示和中介軟體。定製指南詳細介紹了每個擴充套件點並提供示例。
與內部實現的比較
下表展示了 Open SWE 與 Stripe(Minions)、Ramp(Inspect)和 Coinbase(Cloudbot)在公開資訊基礎上的對比。核心模式相似,差異在於實現細節、內部整合和組織特定工具。
開始使用
Open SWE 現已託管在 GitHub 上。安裝指南指導你完成 GitHub 應用建立、LangSmith 設定、Linear/Slack/GitHub 觸發器和生產部署。定製指南展示如何為你的組織更換沙箱、模型、工具、觸發器、系統提示和中介軟體。該框架採用 MIT 許可,你可以復刻、定製並在內部部署。如果你在其基礎上構建了有趣的內容,我們很樂意聽取你的反饋。
多個工程組織已成功在生產中部署內部編碼智慧體。Open SWE 提供了類似架構模式的開源實現,旨在適用於不同的程式碼庫和工作流。我們仍在瞭解不同環境下的最佳實踐,但該框架為探索此方法的團隊提供了一個起點。