피드로 돌아가기
I Tried to Run Symphony for Real on Rentello. It Broke in Exactly the Right Place.
Dev.toDev.to
Backend

I Tried to Run Symphony for Real on Rentello. It Broke in Exactly the Right Place.

엔지니어가 OpenAI의 Symphony를 Claude Code로 포팅한 후 실제 프로젝트(Rentello)에서 테스트하여 공유 워크플로우 파일과 런타임별 래퍼를 분리해야 한다는 아키텍처 결함을 발견

Alessio Masucci2026년 3월 26일12advanced

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)의 진입점과 세션 프로토콜은 별도의 어댑터로 분리하면 단일 저장소에서 여러 에이전트 서피스를 결정론적으로 지원할 수 있다.

원문 읽기