Symphony: Codex 編排的開源規範

Symphony: Codex 編排的開源規範

概述

Symphony 是一個開源規範,定義了如何使用問題追蹤器(issue tracker)作為控制平面來編排編碼代理(coding agents)。它讓每個開放任務都能分配到專用的代理工作區,該工作區會持續運行直到任務完成,從而減少對單個 Codex 會話的人工監督需求。

技術規範

Symphony 規範是一個單一的 SPEC.md 檔案,描述了一個與語言無關的服務。它概述了核心組件,例如工作流載入器(workflow loader)、問題追蹤器用戶端、編排器(orchestrator)、工作區管理器(workspace manager)、代理執行器(agent runner)以及選用的狀態介面(status surface)。實作必須遵守安全性不變量:代理僅在每個問題專屬的工作區路徑內運行,工作區金鑰會被清理為 [A-Za-z0-9._-],且工作區路徑會保持在配置的根目錄內。

工作流定義 (WORKFLOW.md)

每個儲存庫透過新增一個包含 YAML front matter 和提示詞範本(prompt template)的 WORKFLOW.md 檔案來採用 Symphony。front matter 宣告了追蹤器類型(目前為 linear)、輪詢間隔、工作區根目錄、鉤子(hooks)以及代理/Codex 設定。提示詞範本接收標準化後的問題物件和一個選用的 attempt 變數,允許針對首次運行、續行和重試提供不同的指令。

編排機制

Symphony 以固定的節奏輪詢追蹤器,根據全域和每個狀態的並發限制來派遣工作,並維護記憶體中的運行時狀態。它在每次跳動(tick)時對齊正在運行的代理,透過可配置的超時來檢測停滯,並使用指數退避(exponential backoff)重試失敗的嘗試。成功的運行可能會在工作流定義的移交狀態(例如 Human Review)結束,而不是要求追蹤器達到終止狀態。

實作與採用

參考實作是用 Elixir 編寫的,選擇它是因為其並發原語,但該規範刻意保持極簡,以便代理可以用任何語言實作 Symphony。OpenAI 在內部使用了 Symphony,並觀察到某些團隊在最初三週內合併的 pull requests 增加了 500%。開源後,截至 4 月 23 日,該儲存庫已獲得超過 15K 個 GitHub stars,Linear 的創辦人也注意到發布後建立的工作區數量激增。

影響與未來工作

透過將代理視為目標驅動的作業者而非微管理的會話,Symphony 將瓶頸從編寫程式碼轉移到管理代理工作。團隊現在可以廉價地提交推測性任務,讓代理探索想法,並將人力集中在更困難、探索性的問題上。OpenAI 將 Symphony 定位為參考實作,並鼓勵開發者將其編碼代理指向該規範和儲存庫,為自己的環境構建量身定制的版本。

Sources