OpenSwarm 是一個自主 AI 代理協調器,支援 Codex、GPT、OpenRouter(任何模型)、本地模型(Ollama/LM Studio)以及 Claude Code(claude-p)。
OpenSwarm 將多個 AI 代理協調為自主程式碼工作者。它會從 Linear 或內建的本地追蹤器中拾取問題,執行 Worker/Reviewer 配對管道,透過可插拔的通知器(Discord、Slack、Telegram、webhook)報告,並透過 LanceDB 維持長期記憶。Worker 可在 OpenAI Codex/GPT、任何 OpenRouter 模型、本地開源模型(Ollama、LM Studio)或 Claude Code(claude-p,可選)上運行 — 並透過 L0–L6 的基準測試階梯進行成本感知路由。
在真實 GitHub 問題上經過驗證:代理框架解決了由官方框架評分的 SWE-bench Lite 實例。混合模式 — 一個邊緣模型進行唯讀診斷,一個輕量級模型實施並帶有驗證迴圈 — 解決了所有輕量級模型都失敗的 3/3 個嘗試實例,而成本僅為邊緣模型模式的一小部分。Worker 還會隨著時間學習每個儲存庫:任務結果會以每個儲存庫的知識形式儲存,並在未來的提示中回憶起來。(基準評分標準與結果)
OpenSwarm 獲得了 Atlas Cloud 的大力支持 — 這是一個企業級 AI 基礎設施平台,提供快速穩定的 LLM、圖像和影片 API(與 OpenRouter 和 SGLang 合作)。
作為官方供應商贊助商,Atlas Cloud 內建了 atlascloud 轉接器(OpenAI 相容的聊天補全,ATLASCLOUD_API_KEY),並提供持續的每月 API 點數,以維持專案的自主運行。要在 Atlas Cloud 上運行 OpenSwarm,請在 atlascloud.ai 獲取金鑰,設定 ATLASCLOUD_API_KEY,然後選擇 adapter: atlascloud。
openswarm init 會引導您完成供應商身份驗證、可選的 Linear OAuth(團隊/專案選擇器),並寫入一個經過驗證的 config.yaml。偏好手動連接供應商?您需要先進行身份驗證:openswarm auth login(ChatGPT OAuth,由 codex / gpt 使用)、openswarm auth login --provider openrouter(或匯出 OPENROUTER_API_KEY=…),或者只需在 PATH 中有一個已驗證的 claude。
透過 openswarm auth status 查看已連接的內容,並透過 openswarm doctor 診斷任何缺失的部分。
精靈會詢問三個問題,偵測您已有的內容,並為您編寫設定檔:
然後它會寫入 .env(機密資訊,chmod 600)、config.yaml(經過驗證),以及 — 如果您映射了一個 Linear 專案 — openswarm.json(此儲存庫 → Linear 團隊/專案)。最後,它會列印後續步驟,並可以啟動瀏覽器 OAuth。
在已有 config.yaml 的儲存庫中重新運行會被拒絕,除非您傳遞 --force,並且 init 會拒絕覆寫連結到守護程式全域設定檔的 config.yaml。對於 CI / 非互動式使用,openswarm init --yes 只會寫入一個範例設定檔。
狀態列顯示:供應商 · 模型 · 訊息計數 · 累計成本
review 設計為作為 CI 合併閘門,CI 只讀取退出代碼:
將任何非零退出視為檢查失敗。1 / 2 的分割讓工作流程在閘門根本無法運行時(例如配額視窗已滿 — stderr 命名原因,並在已知時,重置時間)進行重試或進行不同的警報。
一個複合動作包裝了整個流程 — 安裝、與 PR 的基礎進行差異比較、審查,並將退出代碼映射到作業結果:
輸入:path(要審查的簽出)、base(預設為 PR 頭部及其基礎分支的合併基礎)、adapter、read-only、version、sarif-file,以及 fail-on-gate-not-run — 後者預設為 true,因為未發生的審查不應被視為通過。
輸出:decision、gate-ran、sarif-file。
審查器使用您環境中的供應商憑證來讀取攻擊者編寫的檔案。兩個屬性可以防止其變成程式碼執行:
read-only 預設為 true,這會拒絕審查器使用所有變更工具,包括 bash。它會針對每個轉接器強制執行,而無法強制執行的轉接器會拒絕運行,而不是默默忽略該標誌:
被審查的簽出永遠不會成為工作目錄。OpenSwarm 首先在當前目錄中尋找自己的 config.yaml,因此提交到 pull request 的設定檔會選擇運行時的轉接器、模型和 MCP 伺服器。該動作從運行器臨時目錄運行,並將 --path 指向簽出而不是當前目錄。
從受信任的 ref 運行動作的程式碼。uses: unohee/OpenSwarm@main 已經這樣做了 — 動作程式碼來自此儲存庫,而不是來自 pull request。只有 uses: ./ 是不安全的,因為在簽出 pull request 後,該路徑會持有貢獻者編寫的 action.yml,並在您的機密資訊範圍內。如果您自託管動作,請將其從預設分支簽出到自己的路徑,並將 pull request 簽出到另一個路徑,然後將 path 指向後者 — 請參閱 .github/workflows/review-gate.yml,它正是這樣做的,以進行此儲存庫的內部測試。
要自動運行它,觸發器是 pull_request_target。來自 fork 的 pull_request 運行沒有機密資訊,因此供應商金鑰將是空的,並且每個 fork PR 都會因 gate-not-run 而失敗。
對於沒有動作的腳本編寫,--json 會在 stdout 上以版本化的結構列印判決(人類報告被抑制,以便 openswarm review --json | jq 可以工作),並且 --sarif <file> 會寫入 SARIF 2.1.0 以進行程式碼掃描。發現報告為警告:判決是阻礙因素,而個別的後續跟進是建議性的,有些會伴隨批准。
此儲存庫中的 .github/workflows/review-gate.yml 對動作進行了內部測試。它僅為 workflow_dispatch — 閘門每次運行都會調用付費模型,因此將其啟用於每個 pull request 都留待明確選擇。
自主管道預設啟用基準差異驗證:OpenSwarm 運行儲存庫的測試/類型檢查命令一次,將失敗的頭部與合併基礎進行比較,並為審查器提供結構化證據,以便現有的失敗不會阻止無關的工作。添加 .openswarm/verify.yaml 以進行儲存庫特定的命令(請參閱 templates/verify.example.yaml),或讓 OpenSwarm 發現標準的 Node、Python、Rust 和 Go 檢查。在 autonomous.verify 下配置行為;舊的 guards.qualityGate 全樹檢查已棄用。
在 Linux 上,驗證會在 bubblewrap 內部運行每個命令,並在無法運行時關閉失敗 — 在未沙盒化的環境中運行工作者的程式碼來決定是否信任它會破壞其意義。在 macOS 上,它使用平台沙盒,無需任何設置。
安裝套件並不總是足夠的,而 CI 是問題所在:
當沙盒不可用時,OpenSwarm 會說明適用於以下哪種情況,而不是報告純粹的失敗:它運行 bwrap 來找出原因,而不是從 sysctls 猜測,引用 bwrap 自己的錯誤,並列印匹配的修復方法。
有關崩潰恢復、圍欄執行租賃、發件箱語義、推出模式和儲存庫准入策略,請參閱耐用的自主迴圈。
退出代碼:0 成功 · 1 失敗 · 2 超時
對於自主操作(Linear 問題處理、Discord 控制、PR 自動改進),您需要一個完整的設定檔:
在全域安裝後,在您希望守護程式管理的目錄中運行精靈 — 它會為您編寫所有內容:
請參閱 What openswarm init sets up 以了解提示。偏好手動編輯?config.yaml 支援 ${VAR} / ${VAR:-default} 替換(從 .env 解析)並使用 Zod 進行驗證。一個最小的 .env(精靈只會寫入您選擇所需的內容):
Claude Code(claude-p)被支援為可選的備用方案(並為 claude-p 的聊天路徑提供支援)— 安裝 claude CLI 並進行身份驗證;openswarm init 和 openswarm doctor 會偵測到它。它是一個有效的轉接器:值,但可選:沒有東西會自動備用它。當另一個供應商配額用完時,使用 openswarm provider claude 切換到它。
openrouter 轉接器運行 OpenSwarm 自有的代理工具迴圈(帶有驗證防護的讀取/搜尋/編輯/bash),啟用 ZDR(data_collection: deny)用於非 OpenAI 模型,並自動應用 Anthropic 提示快取。本地後端會在標準埠上自動偵測到(Ollama :11434、LM Studio :1234);使用 lmstudio 進行專用的 LM Studio 端點(LMSTUDIO_BASE_URL,預設為 http://localhost:1234)。
每個角色的轉接器覆寫(每個角色都可以選擇自己的有效轉接器 + 模型):
可選的積壓工作(backlog)梳理運行一個唯讀的 Planner,處理已獲取的映射專案的開放隊列狀態(待辦、進行中、審查中和積壓工作),並將其與當前儲存庫進行比較。保留模式:在驗證建議的同時進行評論;模式:應用可以更新漂移的描述,並將嚴重過時的問題移至完成。
原生 Codex 轉接器在沒有固定模型時使用 Terra。草稿分析使用 Luna,因為它對每個任務都運行;分解和硬審查保留在 Sol 上。
透過全域安裝,openswarm CLI 直接管理守護程式 — 無需儲存庫或 npm run 腳本:
從原始碼/開發(貢獻者):克隆儲存庫並使用 npm run … 腳本(npm run dev、npm start、npm run service:install 以用於 macOS launchd 服務、docker compose up -d)。請參閱 CONTRIBUTING.md。
混合檢索:0.60 × 相似度 + 0.25 × 重要性 + 0.15 × 時效性
記憶類型:信念 · 策略 · 使用者模型 · 系統模式 · 約束
背景:衰減、鞏固、矛盾檢測、蒸餾。
嵌入在本地透過 @huggingface/transformers 運行(ONNX,無外部服務)。預設為 Xenova/multilingual-e5-base(768d,int8),儲存的文字被嵌入為一個段落:並作為查詢進行搜尋:根據 E5 非對稱約定。權重被快取在 ~/.openswarm/models 中,因此重新安裝 OpenSwarm 不會丟棄它們。
更改其中任何一項都會使所有儲存的向量失效:儲存記錄了嵌入簽名,並在簽名不再符合活動編碼器時發出警告。使用 openswarm memory reembed 重新建構(先停止守護程式,或傳遞 --force)。
儲存庫知識迴圈 — 每個完成的任務都會寫入儲存庫範圍的知識(成功 → 系統模式,包含變更的檔案 + 方法,審查拒絕 → 約束陷阱),並且同一儲存庫上的下一個任務會將最相關的條目回憶到工作者提示中,作為「儲存庫知識」部分。工作者在處理某個程式碼庫時,會隨著時間的推移變得更好。工作者也可以在任務中透過 search_memory 工具主動查詢累積的儲存庫知識。
benchmarks/ 包含一個難度階梯,用於根據測量能力路由模型 — 具有確定性評分的合成 L0–L5 任務,以及 L6 = 由 OpenSwarm 框架解決並由官方 swebench 框架評分的真實 GitHub 問題(SWE-bench Lite)。重點:混合模式(邊緣唯讀診斷 + 帶有驗證迴圈的輕量級實施者)解決了所有輕量級模型都失敗的 3/3 個嘗試實例。請參閱 benchmarks/RUBRIC.md 以了解評分標準、測量結果以及基準測試發現的框架缺陷。
OpenSwarm 收集匿名的、可選擇退出的使用遙測數據,以了解其實際使用情況(npm 下載和 GitHub 點讚無法告訴我們)。每次命令調用都會發送一個事件。
永不發送:原始碼、提示、檔案路徑、儲存庫或問題名稱、Linear/Discord 內容、環境變數、API 金鑰或任何個人數據。
CI 環境(CI / GITHUB_ACTIONS)會被自動排除。收集器是一個 Cloudflare Worker,寫入私有的 D1 表;遙測數據永遠不會阻止或減慢 CLI(即發即忘,帶有短超時,並且失敗會被靜默忽略)。
完整的版本歷史記錄位於 CHANGELOG.md 和 GitHub Releases 頁面。
最新版本 — v0.17.7:openswarm stop 現在可以真正停止由 launchd 管理的守護程式,儀表板專案禁用可以在守護程式重新啟動後保留,失敗會話的部分工作會在保留工作區之前提交到其分支,並且 Lance 記憶寫入會重試而不是在 review --max 下發生衝突。添加了 Atlas Cloud 供應商轉接器。其餘內容請參閱 CHANGELOG.md。
如果聊天 TUI 顯示每個 Hangul(或其他多位元組)字元兩次 — 이이렇렇게 쓰쓰이는것 — 而 ASCII 字元看起來正常,原因幾乎總是客戶端的本地/預測回顯在行動 SSH 應用程式中繪製了寬字元的額外副本。按鍵一次到達 OpenSwarm;終端機繪製兩次。
Termius → 主機/終端機設定 → 關閉 Local Echo(又名預測回顯),並確保編碼為 UTF-8。
透過運行診斷來確認伺服器端是否正常:
輸入幾個韓文字元,然後檢查 ~/.openswarm/input-debug.log。如果單次按鍵記錄一個碼點(cp=[51060]),但您看到兩個字形,則加倍是終端機回顯(客戶端)。如果它在一個事件中記錄了兩次碼點,則是一個應用程式級別的問題 — 請將日誌附加到錯誤報告中。
歡迎貢獻 — OpenSwarm 採用 MIT 授權,並接受任何人的 pull request。請參閱 CONTRIBUTING.md 以了解開發設置、本地檢查閘門、分支/提交約定以及 PR 流程。參與即表示您同意行為準則。
OpenSwarm — 由 Claude Code CLI 驅動的自主 AI 開發團隊協調器。Discord 控制、Linear 整合、認知記憶。