Symphony: Codex Orchestrationのためのオープンソース仕様
Symphony: Codex Orchestrationのためのオープンソース仕様
概要
Symphonyは、イシュートラッカーをコントロールプレーンとして使用して、コーディングエージェントをオーケストレーションする方法を定義するオープンソースの仕様です。これにより、すべてのオープンなタスクに対して、タスクが完了するまで継続的に実行される専用のエージェントワークスペースを割り当てることが可能になり、個々のCodexセッションに対する人間の監視の必要性を軽減します。
技術仕様
Symphonyの仕様は、言語に依存しないサービスを記述する単一の SPEC.md ファイルです。ワークフローローダー、イシュートラッカークライアント、オーケストレーター、ワークスペースマネージャー、エージェントランナー、およびオプションのステータスサーフェスなどのコアコンポーネントの概要を記述しています。実装は以下の安全性に関する不変条件を遵守する必要があります:エージェントは各イシューのワークスペースパス内でのみ実行され、ワークスペースキーは [A-Za-z0-9._-] にサニタイズされ、ワークスペースパスは設定されたルート内に留まります。
ワークフローの定義 (WORKFLOW.md)
各リポジトリは、YAMLフロントマターとプロンプトテンプレートを含む WORKFLOW.md ファイルを追加することでSymphonyを採用します。フロントマターでは、トラッカーの種類(現在は linear)、ポーリング間隔、ワークスペースのルート、フック、およびエージェント/Codexの設定を宣言します。プロンプトテンプレートは、正規化されたイシューオブジェクトとオプションの attempt 変数を受け取り、初回実行、継続、およびリトライに対して異なる指示を与えることができます。
オーケストレーションのメカニズム
Symphonyは、一定の間隔でトラッカーをポーリングし、グローバルおよびステートごとの同時実行制限の範囲内で作業を割り当て、インメモリのランタイム状態を維持します。毎ティック実行中のエージェントを照合し、設定可能なタイムアウトを介して停滞を検出し、指数バックオフを伴うリトライを行います。成功した実行は、トラッカーが終了状態に達することを必要とせず、ワークフローで定義されたハンドオフ状態(例:Human Review)で終了する場合があります。
実装と採用
リファレンス実装は、その並行処理のプリミティブから選ばれたElixirで書かれていますが、仕様はエージェントが任意の言語でSymphonyを実装できるように意図的に最小限に抑えられています。OpenAIは内部でSymphonyを使用しており、一部のチームでは最初の3週間以内にマージされたプルリクエストが500%増加したことを確認しました。オープンソース化の後、リポジトリは4月23日時点で15K以上のGitHubスターを獲得し、Linearの創業者はリリース後に作成されたワークスペースの急増に言及しました。
影響と今後の課題
エージェントをマイクロマネジメントされるセッションではなく、目的駆動型のワーカーとして扱うことで、Symphonyはボトルネックを「コードを書くこと」から「エージェントの作業を管理すること」へとシフトさせます。チームは、推測的なタスクを安価に作成し、エージェントにアイデアを探索させ、人間の労力をより困難な探索的問題に集中させることができます。OpenAIはSymphonyをリファレンス実装として位置づけており、開発者が自身の環境に合わせてカスタマイズされたバージョンを構築するために、コーディングエージェントをこの仕様とリポジトリに向けることを推奨しています。