打造你的專屬程式碼助手:Open SWE 讓你也能擁有「Stripe 級」的開發體驗!
嘿,台灣的開發者們! 想不想擁有一個像 Stripe、Ramp 或是 Coinbase 這樣頂尖公司才會有的內部程式碼助手? 這些助手能幫你處理繁瑣的程式碼修改、文件撰寫,甚至自動建立 PR(Pull Request),讓你把時間花在更具創造力的工作上! 現在,這個夢想不再遙不可及,因為 Open SWE 來了!
什麼是 Open SWE?
Open SWE 是一個 開源框架,讓你能夠輕鬆打造屬於你自己的程式碼助手。 它基於 LangGraph 和 Deep Agents 構建,這兩個框架也是許多頂尖公司內部使用的。 簡單來說,Open SWE 就像是一個工具箱,裡面有各種元件,你可以依照你的需求,組裝出一個專屬於你的程式碼助手,為你處理程式碼相關的任務,例如:
- 自動化程式碼修改: 根據你的要求,自動修改程式碼,例如修復 bug、重構程式碼等。
- 文件產生: 根據程式碼自動生成或更新文件。
- 自動建立 PR: 當程式碼修改完成後,自動建立 PR,方便你進行程式碼審查。
- 與 Slack、Linear 整合: 你可以在 Slack 或 Linear 上直接與你的程式碼助手互動,方便快捷。
為什麼 Open SWE 如此特別?
Open SWE 並不是簡單的抄襲或翻譯。 它提供了一個 可定制的、模組化的架構,讓你能夠根據自己的需求,打造出最適合你的程式碼助手。 以下是一些 Open SWE 的核心優勢:
- Deep Agents 框架: Open SWE 基於 Deep Agents 構建,這意味著你可以享受到持續的更新和改進,並且可以根據自己的需求進行自定義。
- 隔離的雲端沙盒: 每個任務都在一個獨立的雲端沙盒中運行。 這就像是給每個任務一個獨立的房間,確保任何錯誤都不會影響到你的主要程式碼庫。 Open SWE 支援多種沙盒供應商,如 Modal、Daytona 等,你也可以自定義。
- 精選的工具集: Open SWE 提供的工具集是經過精心挑選的,而不是像某些框架那樣提供大量的工具。 這使得你的程式碼助手更容易使用和管理。 提供的工具包括:
execute:在沙盒中執行 Shell 命令。fetch_url:將網頁抓取為 Markdown 格式。http_request:進行 API 調用。commit_and_open_pr:提交 Git 更改並打開 GitHub 草稿 PR。linear_comment:在 Linear ticket 上發佈更新。slack_thread_reply:在 Slack 線程中回覆。
- 上下文感知: Open SWE 能夠從多個來源收集上下文資訊,包括:
- AGENTS.md: 存放在你的程式碼庫中的
AGENTS.md文件,包含你的團隊的編碼規範、測試要求等,讓程式碼助手更好地理解你的專案。 - 原始碼上下文: 程式碼助手可以獲取 Linear issue 或 Slack 線程的完整上下文資訊,包括標題、描述、評論等。
- AGENTS.md: 存放在你的程式碼庫中的
- 可擴展的編排: Open SWE 使用子代理和中間件來編排任務。 你可以讓程式碼助手 spawn 出子代理來處理並行任務,並且可以添加自定義的中間件來實現額外的功能,例如程式碼檢查、視覺驗證等。
- 多種觸發方式: 你可以使用 Slack、Linear 或 GitHub 來觸發你的程式碼助手。
如何開始使用 Open SWE? 給初學者的快速指南
對於初學者來說,Open SWE 可能會有一些複雜。 但是,不要擔心! 我們可以把 Open SWE 想像成樂高積木,你只需要按照說明書一步一步組裝,就能打造出屬於自己的程式碼助手。 以下是一個簡單的步驟,讓你快速上手:
- 安裝 Open SWE:
首先,你需要在你的開發環境中安裝 Open SWE。 參考官方的 安裝指南 (英文)。 裡面會引導你完成 GitHub App 建立、LangSmith 設定,以及與 Linear/Slack/GitHub 的整合。 雖然是英文的,但步驟非常清晰,一步步跟著做就好。
-
配置你的環境:
- 選擇沙盒: 選擇一個你喜歡的雲端沙盒供應商,例如 Modal 或 Daytona。
- 配置 GitHub 應用程式: 你需要建立一個 GitHub App,讓 Open SWE 能夠存取你的程式碼庫。
- 設定 Slack/Linear 整合: 設定 Slack 和 Linear,讓你可以透過這些平台與你的程式碼助手互動。
- 定義你的程式碼助手行為:
- 建立 AGENTS.md: 在你的程式碼庫的根目錄下建立一個
AGENTS.md文件。 在這個文件中,你可以定義你的程式碼助手的行為,例如編碼規範、測試要求等。 參考 Customization Guide (英文),學習如何自定義你的程式碼助手。 - 撰寫 System Prompt: system prompt 決定了程式碼助手的行為。 你可以根據你的需求,修改系統提示,讓你的程式碼助手更好地完成任務。
- 建立 AGENTS.md: 在你的程式碼庫的根目錄下建立一個
- 測試你的程式碼助手:
- 在 Slack 或 Linear 上觸發任務: 在 Slack 或 Linear 上,使用
@openswe標記你的程式碼助手,並提供你的指令。 例如,你可以要求它修復一個 bug 或者產生一個新的 PR。 - 觀察結果: 檢查你的程式碼助手是否按照你的期望執行任務,並檢查產生的結果。
- 在 Slack 或 Linear 上觸發任務: 在 Slack 或 Linear 上,使用
- 自定義和擴展:
- 修改工具: 如果預設的工具不能滿足你的需求,你可以自定義或添加新的工具。 參考 Customization Guide,了解如何定制 Open SWE 的各個方面。
- 添加中間件: 使用中間件來擴展 Open SWE 的功能,例如增加自動程式碼檢查或視覺驗證。
個人實作心得與錯誤排除指南
在我的實際操作中,我發現 Open SWE 的確是一個功能強大的工具。 但在使用過程中,我也遇到了一些挑戰。 這裡分享一些我的經驗,希望能幫助你少走彎路:
- 理解 Deep Agents 的核心概念: Open SWE 建立在 Deep Agents 框架之上。 花時間學習 Deep Agents 的核心概念,例如 agents, tools, 和 middleware,可以讓你更好地理解 Open SWE 的工作原理,並更容易地進行自定義。
- 仔細閱讀官方文件: Open SWE 的官方文件非常詳盡,提供了大量的示例和說明。 在遇到問題時,請務必先仔細閱讀官方文件,往往可以找到解決方案。
- 從簡單的任務開始: 不要一開始就嘗試處理複雜的任務。 從簡單的任務開始,例如修改單行程式碼或者生成簡單的文件,逐步熟悉 Open SWE 的工作流程。
- 注意沙盒環境: 確保你的沙盒環境配置正確。 沙盒環境的配置錯誤,可能會導致 Open SWE 無法正常工作。
- 監控日誌: Open SWE 會產生詳細的日誌。 在遇到問題時,請仔細檢查日誌,通常可以找到錯誤的原因。
- 錯誤排除:
- GitHub App 權限問題: 確保你的 GitHub App 具有足夠的權限,可以存取你的程式碼庫。
- 環境變數設定錯誤: 檢查你的環境變數是否設定正確,例如 GitHub token、 API keys 等。
- 網路連線問題: 確保你的網路連線正常,特別是在使用雲端沙盒時。
- 模型限制: 你使用的 LLM 模型可能有限制。 請參閱 API 文件了解限制。
Open SWE 的未來展望
Open SWE 是一個快速發展的框架。 未來,我們可以期待 Open SWE 會有更多令人興奮的功能:
- 更強大的工具集: Open SWE 可以整合更多工具,例如程式碼分析工具、程式碼格式化工具等。
- 更好的上下文感知: Open SWE 可以整合更多來源的上下文資訊,例如 issue 之間的關聯、程式碼的變更歷史等。
- 更智能的代理: Open SWE 可以使用更先進的 AI 技術,例如多模態模型,來提升程式碼助手的智能程度。
結論
Open SWE 為我們提供了一個強大的工具,讓我們能夠打造自己的程式碼助手,提高開發效率。 雖然上手可能需要一些時間,但是 Open SWE 的潛力是巨大的。 趕快開始你的 Open SWE 之旅,為你的開發工作帶來更棒的體驗吧!
參考閱讀
https://github.com/langchain-ai/open-swe