在 LangChain,我們透過終端機、Slack、Linear、GitHub 和 CI 來與軟體工程 Agent 互動。
不同的工作流程需要不同的 Agent。本機端編碼應該具備互動性。雲端編碼則應在背景執行並開啟 PR。程式碼審查必須仔細且與 GitHub 整合。儲存庫文件應該緊貼程式碼,為 Agent 提供有用的上下文。
我們將這個系統打造成一套開源工具:
- dcode — 用於本機端編碼
- OpenSWE — 用於雲端編碼 Agent
- OpenSWE Review — 用於自動化程式碼審查
- OpenWiki — 用於儲存庫文件與 Agent 記憶
這些工具共同構成了我們的軟體工程 Agent 工廠。這是我們內部使用的架構:本機 Agent、雲端 Agent、審查 Agent、儲存庫記憶、開源模型,以及貫穿整個系統的 LangSmith 追蹤。
為什麼開源很重要
軟體工程 Agent 需要讀取程式碼、編輯程式碼、審查 PR,並參與工程工作流程。團隊需要理解並控制這些 Agent 的行為。
如果 Agent 是一個封閉系統,這就很難做到。你會受限於供應商支援的模型、審查行為、整合功能以及可觀測性。
我們希望 Agent 能讓團隊檢查、修改,並根據自己的工作流程進行調整,包括自家的審查標準、儲存庫慣例、模型選擇和內部工具。這就是為什麼這些專案都是開源的。
各個元件
dcode
dcode 是我們從終端機使用的本機端編碼 Agent。

CLI 和 Agent 執行環境在本機端運作,而模型仍然可以託管在遠端。這讓開發者可以直接在本機儲存庫上工作,同時使用可能無法在筆電上運行的大型編碼模型。
我們使用 dcode 進行互動式編碼工作:探索儲存庫、進行編輯,以及從終端機執行實作任務。
OpenSWE
OpenSWE 是我們在需要背景運作時使用的雲端編碼 Agent。
許多工程工作並非始於終端機。錯誤可能在 Slack 上出現。功能請求可能在 Linear 中。儲存庫維護任務可能需要排程執行。
OpenSWE 可以從 Slack、Linear、GitHub 或網頁 UI 觸發。它在雲端運行,處理程式碼,並在完成後開啟 pull request。
在內部,這已經成為我們最常使用的 Agent 工作流程之一。僅在過去一週,我們就從 Slack 觸發了 OpenSWE 將近 1,000 次,這還不包含 Linear 或 UI 的使用次數。
由於 OpenSWE 在雲端的沙箱中運行,我們可以平行執行許多編碼 Agent,而不會佔用任何人的本機環境。
OpenSWE 也包含一個 UI,用於檢查 Agent 的工作、與雲端編碼 Agent 對話、配置模型和提示、查看分析數據,以及設定排程自動化。

OpenSWE Review
OpenSWE Review 連接到 GitHub,並自動審查 pull request。它能在程式碼合併前找出錯誤和回歸問題。

它在外部基準測試中也表現出色。在 Offline Code Review Benchmark 中,OpenSWE Review 使用 GPT-5.5 搭配中等推理能力 時,得分 47%。這使其位列 整體第 6 名,並且是 開源程式碼審查 Agent 中的第 1 名。
程式碼審查與組織高度相關。不同的團隊在意不同的問題、使用不同的措辭,以及對 Agent 何時應阻擋、建議或保持沉默,也有不同的期望。
OpenSWE Review 為我們提供了一個強大的預設方案,我們可以透過調整提示、工作流程、模型選擇和儲存庫特定行為來加以適應。
OpenWiki
OpenWiki 使用 Google 的 Open Knowledge Format 來生成並維護程式碼庫文件。
文件與程式碼共存,並透過 GitHub Action 自動保持更新。這為人類和 Agent 提供了儲存庫的持續維護知識層,而無需擔心文件維護問題(OpenWiki 會幫你處理!)。

如果 Agent 每次運行都得重新探索儲存庫的架構,它會浪費 token 並錯過重要的慣例。OpenWiki 為編碼和審查 Agent 提供了更好的起點,同時支援自動更新流程,讓你從此無需再考慮維護 Agent 文件。
技術堆疊
Deep Agents
dcode、OpenSWE、OpenSWE Review 和 OpenWiki 都建立在 Deep Agents 之上。
工作流程各不相同,但它們共享相同的底層 Agent 基礎。這為我們提供了一致的方式來建構、自訂和改進跨本機編碼、雲端編碼、審查和文件的 Agent。當它們都在同一個框架中建構時,共享程式碼、資源和工程知識就變得更加容易。
開源模型
我們針對開源模型優化了這個技術堆疊。
SWE Agent 在整個組織中運行時,成本會迅速增加。本機編碼、雲端編碼、程式碼審查、文件、排程維護和重複的儲存庫分析都會消耗 token。
開源模型讓我們能更好地控制成本(這是最關鍵的原因)、延遲和部署選擇。它們也讓團隊可以將不同的任務分配給不同的模型、實驗開源編碼模型,甚至可以針對自己的儲存庫和工作流程進行微調。
LangSmith
我們使用 LangSmith 來追蹤這些 Agent。
當 Agent 開啟 PR、留下審查評論或任務失敗時,追蹤記錄會顯示它檢查過的檔案、載入的上下文、進行的工具呼叫,以及在哪裡卡住。
這些追蹤記錄幫助我們偵錯單次運行,並隨著時間改善系統。我們使用它們來識別失敗模式、改進提示、比較模型,並將更高品質的範例饋入 LangSmith Engine 的持續改進工作流程。
Engine 用於編碼 Agent 是一個我們正在實驗的新工作流程:讓 Engine 遍歷編碼 Agent 的追蹤記錄,識別不足之處,並提出優化建議。由於 LangChain 每位員工的每次編碼 Agent 運行都會被追蹤,Engine 能夠從宏觀視角(而非針對個別工程師的追蹤記錄)來識別並執行這些優化。
打造你自己的軟體工程 Agent 工廠
這個技術堆疊反映了我們在 LangChain 使用軟體工程 Agent 的方式,但這些元件都是開源的,因此其他團隊可以加以調整,並對你自己的軟體工廠保留完整控制權。
你可以從小處著手:
- 使用 dcode 進行本機編碼。
- 加入 OpenSWE 以從 Slack、Linear、GitHub 或網頁 UI 運行編碼 Agent。
- 啟用 OpenSWE Review 以進行自動化 PR 審查。
- 使用 OpenWiki 為人類和 Agent 維護儲存庫知識。
- 將追蹤記錄連接到 LangSmith,以便在整個系統中獲得可觀測性和改進循環。
目標不是將每個工程工作流程都塞進一個 Agent 介面,而是將正確的 Agent 放置到工程工作已經發生的地方,並提供足夠的控制權,讓它們能夠融入你的儲存庫、模型和團隊慣例。





