피드로 돌아가기
Dev.toBackend
원문 읽기
I Tried to Run Symphony for Real on Rentello. It Broke in Exactly the Right Place.
엔지니어가 OpenAI의 Symphony를 Claude Code로 포팅한 후 실제 프로젝트(Rentello)에서 테스트하여 공유 워크플로우 파일과 런타임별 래퍼를 분리해야 한다는 아키텍처 결함을 발견
AI 요약
Context
OpenAI의 Symphony 오케스트레이션 아키텍처를 Claude Code로 포팅한 후, 실제 Linear 보드와 연결된 Rentello 프로젝트에서 실행했을 때 WORKFLOW.md 파일이 두 가지 역할을 동시에 수행하고 있었다: 공유 실행 계약과 특정 오케스트레이터의 런타임 진입점.
Technical Solution
- 실행 소유권 레이블(exec:agent, exec:symphony)과 파동 레이블(wave:1, wave:2)을 도입하여 공유 실행 계약을 명시적으로 정의
- Codex App과 Symphony 모두에서 사용할 수 있는 제네릭 워크플로우 정의 작성: 오케스트레이터 선택이 작업 실행 방식은 영향을 주지만 작업 정의는 영향을 주지 않도록 설계
- 런타임별 어댑터(.codex/, .claude/ 디렉토리)를 도입하여 동일한 기본 규칙에 대한 런타임 관련 프롬프트만 분리
- 지속성 있는 단일 Workpad 댓글 모델 도입: 매 자동화 실행마다 새로운 댓글을 추가하지 않고 기존 댓글을 갱신
- 공유 실행 계약, 공유 동작 프롬프트 본문, 오케스트레이터/런타임 쌍별 런타임 래퍼로 아키텍처 재구성
Key Takeaway
크로스 에이전트 오케스트레이션 설계에서 "모든 것을 위한 단일 워크플로우 파일"은 잘못된 추상화이며, 공유 실행 계약은 안정적으로 유지하되 각 런타임 서피스(Codex, Claude)의 런타임 래퍼는 별도로 관리해야 실제로 신뢰할 수 있는 시스템이 된다.
실천 포인트
다중 AI 에이전트/오케스트레이터를 지원하는 워크플로우 시스템을 설계할 때, 작업 정의와 워크플로우 계약(레이블, 의존성, 템플릿)은 모든 런타임에서 공통으로 사용할 수 있게 제네릭하게 정의하되, 각 런타임(Codex, Claude, OpenAI Symphony)의 진입점과 세션 프로토콜은 별도의 어댑터로 분리하면 단일 저장소에서 여러 에이전트 서피스를 결정론적으로 지원할 수 있다.