OpenAI는 2026년 4월 27일 Symphony를 공개하며 이슈 트래커 중심의 Codex orchestration 흐름을 설명했다.
이 글의 결론부터 말하면,
Symphony는 새로운 코딩 에디터가 아니다.
Symphony는 “AI 코딩 세션을 더 많이 띄우는 법”도 아니다.
핵심은 작업의 중심을 터미널 세션에서 이슈 트래커로 옮기는 것이다.
말하자면 개발자가 Codex 창 세 개를 붙잡고 “너는 이거, 너는 저거” 하던 상황에서,
Linear 같은 작업 보드가 에이전트들의 작업판이 된다.
이 표현이 살짝 거창하게 들릴 수 있는데,
실무적으로는 꽤 단순하다.
티켓이 있으면 에이전트가 붙는다.
티켓 상태가 바뀌면 에이전트 실행 조건도 바뀐다.
작업이 막히면 재시도하거나 사람에게 넘긴다.
PR이 생기면 CI와 리뷰 상태를 본다.
완료 기준에 닿으면 다음 상태로 넘어간다.
즉 Symphony의 관심사는 “코드를 잘 짜는 모델”보다 “작업이 계속 굴러가는 운영 구조”에 가깝다.
여기서 TECHTAEK식 질문은 하나다.
이걸 우리 같은 개인, 작은 팀, 블로그 자동화, 사이드 프로젝트에 붙이면 진짜 이득일까?
무턱대고 붙이면 멋있기는 한데,
멋있음은 비용 청구서가 아니다.
도입 기준을 좀 차갑게 봐야 한다.
지금 판단
OpenAI Symphony는 대규모 AI 코딩 운영의 방향을 보여준다.
다만 모든 팀이 바로 설치할 도구라기보다는,
에이전트 작업을 티켓 단위로 안정적으로 반복하려는 팀이 참고할 운영 스펙에 가깝다.
내 기준에서 Symphony가 맞는 경우는 네 가지다.
첫째, 같은 종류의 구현 티켓이 계속 쌓인다.
둘째, 테스트와 CI가 최소한의 판정자 역할을 한다.
셋째, 사람은 세션을 직접 운전하기보다 리뷰와 우선순위 조정에 집중하고 싶다.
넷째, 실패한 작업을 버리거나 재시도하는 문화가 있다.
반대로 Symphony가 과한 경우도 분명하다.
티켓 품질이 낮고,
테스트가 없고,
승인 경계가 흐리고,
에이전트가 만든 PR을 누가 리뷰할지도 애매하면,
Symphony는 생산성 도구가 아니라 혼란 증폭기가 된다.
작업판 위에 컨베이어벨트를 깔았는데,
정작 물건 이름표가 다 틀린 상태가 되는 셈이다.
이건 기술 문제가 아니라 운영 문제다.
OpenAI 공식 글에서도 중요한 포인트는 바로 여기에 있다.
Symphony는 에이전트에게 더 많은 자유를 주는 대신,
이슈 상태,
작업공간,
워크플로 문서,
로그,
재시도,
CI,
사람 리뷰를 더 명확하게 요구한다.
Symphony가 하려는 일
공식 글에서 Symphony는 Linear 같은 프로젝트 관리 보드를 코딩 에이전트의 control plane으로 바꾸는 orchestrator로 설명된다.
여기서 control plane은 “모든 일을 직접 하는 곳”이 아니다.
무엇을 실행할지,
언제 멈출지,
어떤 상태에서 사람이 봐야 할지,
어떤 작업이 막혀 있는지,
어떤 실행이 재시도되어야 하는지를 결정하는 층이다.
기존 AI 코딩 흐름은 보통 세션 중심이다.
개발자가 Codex CLI나 웹 세션을 연다.
프롬프트를 넣는다.
중간 결과를 본다.
다시 지시한다.
패치를 읽는다.
테스트를 돌린다.
PR을 만든다.
이 방식은 한두 개 작업에는 좋다.
문제는 작업 수가 늘어날 때다.
공식 글은 사람이 편하게 관리할 수 있는 동시 세션 수가 대략 3개에서 5개 수준에서 부담스러워진다고 설명한다.
나도 체감상 비슷하다.
터미널 탭이 다섯 개만 넘어가도,
“아까 이 친구가 어떤 파일 읽고 있었더라” 상태가 온다.
기억력이 아니라 탭 이름이 문제다.
Symphony의 아이디어는 세션을 사람이 관리하지 말고,
작업 티켓이 에이전트 실행의 기준점이 되게 하자는 것이다.
열린 티켓이 있으면 작업공간을 만든다.
작업공간 안에서 에이전트가 돈다.
이슈 상태를 보고 시작하거나 멈춘다.
로그와 상태를 남긴다.
CI와 리뷰를 따라간다.
사람은 세션을 계속 찌르지 않고 결과와 다음 결정을 본다.
세션 관리에서 작업 관리로 바뀐다
Symphony를 이해할 때 제일 중요한 문장은 이것이다.
AI 코딩의 병목은 모델 속도가 아니라 사람의 attention이 된다.
모델이 빨라질수록 사람은 더 많은 결과물을 받는다.
결과물이 많아지면 리뷰와 추적이 병목이 된다.
리뷰와 추적이 병목이 되면 세션을 직접 운전하는 방식은 금방 피곤해진다.
그래서 Symphony는 “작업을 세션에 배정”하지 않는다.
“세션을 작업에 붙인다.”
말장난 같지만 차이가 크다.
세션 중심 흐름에서는 사람이 주인공이다.
사람이 세션을 만들고,
사람이 지시하고,
사람이 다음 행동을 기억한다.
작업 중심 흐름에서는 티켓이 주인공이다.
티켓 안에 목표와 제약이 있다.
티켓 상태가 실행 가능 여부를 말한다.
티켓 링크가 PR과 로그를 묶는다.
티켓이 끝나면 실행도 끝난다.
이 구조에서는 에이전트가 여러 개 떠도 사람이 덜 흔들린다.
중요한 것은 “몇 개의 세션이 떠 있나”가 아니라,
“어떤 티켓이 어떤 상태인가”다.
작은 팀에서는 이 변화가 특히 중요하다.
사람이 적을수록 세션 관리 비용이 바로 체력 비용으로 바뀐다.
하루 종일 에이전트를 부리는 것 같지만,
실제로는 에이전트 출석부를 쓰고 있는 경우가 많다.
Symphony류 구조는 그 출석부를 티켓 보드로 옮긴다.
공식 스펙에서 봐야 할 핵심
openai/symphony 저장소의 핵심은 구현체라기보다 SPEC.md 중심의 언어 비의존 스펙이다.
공식 글도 이 점을 강조한다.
복잡한 감독 시스템을 먼저 만든 것이 아니라,
문제를 정의하고,
원하는 해법을 문서화하고,
에이전트가 따를 수 있는 높은 수준의 steering을 준 것이다.
스펙에서 눈에 띄는 요소는 여섯 가지다.
첫째, issue tracker client가 후보 이슈를 가져온다.
둘째, orchestrator가 polling, dispatch, retry, stop, release를 결정한다.
셋째, workspace manager가 이슈별 격리 작업공간을 만든다.
넷째, agent runner가 이슈와 workflow prompt를 합쳐 코딩 에이전트를 실행한다.
다섯째, status surface와 logging이 운영자가 볼 수 있는 상태를 만든다.
여섯째, WORKFLOW.md가 팀별 정책과 검증 기준을 담는다.
이게 중요한 이유는 간단하다.
AI 코딩 운영에서 진짜 반복되는 문제는 “모델이 못 알아들음”만이 아니다.
같은 파일을 두 에이전트가 동시에 고친다.
작업이 실패했는데 아무도 모른다.
CI가 깨졌는데 세션은 끝났다고 말한다.
리뷰 대기인지 재시도 대기인지 구분이 안 된다.
프롬프트가 개인 노트에만 있고 repo에는 없다.
환경변수와 권한이 세션마다 달라진다.
이 문제들은 모두 운영 상태 문제다.
Symphony 스펙은 이 문제를 코딩 능력이 아니라 coordination 문제로 본다.
그래서 에이전트에게 필요한 것은 좋은 prompt 하나가 아니라,
작업 단위,
상태 머신,
격리 워크스페이스,
재시도 규칙,
관측 로그,
검증 게이트다.
작은 팀 도입 기준표
아래 표는 내가 작은 팀 기준으로 Symphony류 구조를 붙일지 판단할 때 쓰는 기준이다.
| 항목 | 붙여도 되는 신호 | 아직 이른 신호 |
|---|---|---|
| 작업량 | 반복 구현 티켓이 매주 10개 이상 나온다 | 가끔 큰 작업 하나만 한다 |
| 티켓 품질 | 목표, 범위, 완료 기준이 있다 | 제목만 있고 설명이 없다 |
| 테스트 | unit, integration, smoke 중 하나라도 있다 | 사람 눈검사가 유일한 검증이다 |
| CI | PR마다 자동 판정이 돈다 | 로컬에서만 가끔 돌린다 |
| 권한 | sandbox, secrets, approval 경계가 있다 | 에이전트가 아무 명령이나 친다 |
| 리뷰 | PR 리뷰 담당자가 명확하다 | 만든 뒤 누가 볼지 모른다 |
| 상태 | todo, doing, review, blocked, done이 구분된다 | 모든 것이 “진행중”이다 |
| 로그 | 실패 이유를 나중에 볼 수 있다 | 터미널 닫으면 역사가 사라진다 |
| 비용 | 실패한 실험을 버릴 여유가 있다 | 한 번 실패하면 일정이 바로 터진다 |
| 문화 | agent output은 초안으로 본다 | agent output을 정답으로 믿는다 |
이 표에서 초록불이 여섯 개 이상이면 파일럿을 해볼 만하다.
세 개 이하라면 먼저 티켓과 CI부터 정리하는 편이 낫다.
왜냐하면 Symphony류 시스템은 지저분한 작업을 깨끗하게 만들어주지 않는다.
지저분한 작업을 더 빠르게 지저분하게 만들 수 있다.
이런 말은 별로 낭만적이지 않지만,
서버비보다 사람이 먼저 녹는다.
개인 자동화에는 어떻게 바꿔 붙일까
OpenAI의 공식 예시는 Linear와 Codex 중심이다.
하지만 개인이나 작은 팀은 꼭 같은 구성을 쓸 필요가 없다.
중요한 것은 Linear라는 제품명이 아니라 control plane의 역할이다.
개인 블로그 자동화라면 control plane은 Google Sheet일 수 있다.
Obsidian inbox일 수도 있다.
GitHub Issues일 수도 있다.
Notion database일 수도 있다.
다만 어떤 도구를 쓰든 최소 속성은 있어야 한다.
작업 ID가 있어야 한다.
상태가 있어야 한다.
우선순위가 있어야 한다.
소스 링크가 있어야 한다.
완료 기준이 있어야 한다.
실행 로그 링크가 있어야 한다.
사람 리뷰 상태가 있어야 한다.
내 블로그 파이프라인에 대입하면 이런 식이다.
Inbox 노트는 raw input이다.
blog idea sheet는 control plane이다.
draft 파일은 workspace 산출물이다.
preflight check는 CI다.
WordPress publisher는 deploy step이다.
mark-published는 state transition이다.
sync script는 reconciliation이다.
이렇게 보면 Symphony가 갑자기 먼 이야기가 아니다.
“AI가 글을 써준다”가 아니라,
“글감에서 발행까지 어떤 상태를 거쳐야 하는지 정한다”가 핵심이다.
코딩도 마찬가지다.
issue에서 PR까지 어떤 상태를 거치는지 정하지 않으면,
에이전트가 아무리 빨라도 결과는 작업더미가 된다.
워크플로 파일은 작게 시작해야 한다
Symphony 스펙에서 WORKFLOW.md는 팀 정책을 담는 중요한 자리다.
처음부터 거대한 운영 헌장을 만들 필요는 없다.
작게 시작하려면 아래 정도면 충분하다.
---
tracker: linear
active_states:
- Ready
- In Progress
handoff_state: Human Review
max_concurrency: 3
required_checks:
- test
- lint
- smoke
---
목표:
- 이슈 설명을 먼저 읽는다.
- 범위가 불명확하면 질문 코멘트를 남기고 멈춘다.
- 코드 변경은 이슈 범위 안에서만 한다.
- 테스트를 추가하거나 기존 테스트를 실행한다.
- PR 설명에는 변경, 검증, 남은 리스크를 적는다.
- 보안 키나 개인 데이터는 읽지 않는다.
이 정도만 있어도 무질서한 세션 여러 개보다 낫다.
중요한 것은 문서의 길이가 아니다.
실행자가 반복해서 따를 수 있느냐가 중요하다.
정책은 repo에 있어야 한다.
정책은 버전 관리되어야 한다.
정책은 사람이 리뷰할 수 있어야 한다.
정책은 에이전트가 읽을 수 있어야 한다.
정책은 실패를 반영해서 바뀌어야 한다.
프롬프트를 개인 메모 앱에만 두면,
팀은 그 사람의 기억력에 의존하게 된다.
그 기억력은 월요일 오전 9시에 특히 약하다.
이건 과학이라기보다 경험칙이다.
CI가 없으면 Symphony는 빨리 망가진다
Symphony류 구조에서 CI는 선택 장식이 아니다.
CI는 사람이 모든 세션을 보지 않아도 되는 이유다.
에이전트가 여러 개 돌면 산출물도 여러 개 생긴다.
산출물이 많아지면 사람은 전부 읽을 수 없다.
그래서 자동 판정이 필요하다.
lint가 깨졌는지 본다.
unit test가 깨졌는지 본다.
타입 체크가 깨졌는지 본다.
build가 되는지 본다.
간단한 smoke test가 되는지 본다.
보안 스캔이 치명적인 것을 잡는지 본다.
이 자동 판정이 있어야 사람은 중요한 판단에 집중한다.
없으면 사람은 에이전트가 만든 모든 파일을 수동으로 훑게 된다.
그 순간 Symphony의 장점은 사라진다.
작은 팀의 최소 CI는 모든 것을 갖출 필요가 없다.
하지만 “깨지면 빨간불이 뜬다” 정도는 있어야 한다.
블로그 자동화라면 Markdown frontmatter 검사도 CI다.
금지 헤더 검사도 CI다.
링크 수 검사도 CI다.
발행 전 줄 수 검사도 CI다.
코드 프로젝트라면 더 엄격해야 한다.
특히 migration, auth, billing, data deletion 같은 영역은 사람 리뷰를 강제해야 한다.
에이전트가 빠를수록 guardrail은 더 지루하게 튼튼해야 한다.
지루함은 운영의 보험료다.
권한 경계를 먼저 그어야 한다
Symphony는 이슈 단위로 isolated workspace를 전제로 한다.
이건 단순한 폴더 정리가 아니다.
에이전트가 볼 수 있는 파일,
실행할 수 있는 명령,
쓸 수 있는 토큰,
접근할 수 있는 repo,
변경할 수 있는 상태를 제한하는 문제다.
작은 팀은 여기서 자주 실수한다.
“일단 편하게 돌려보고 나중에 막자”는 생각이 든다.
그런데 나중은 늘 바쁘다.
처음부터 최소 경계를 잡는 편이 낫다.
읽기 전용 토큰과 쓰기 토큰을 나눈다.
issue comment 권한과 merge 권한을 나눈다.
CI 재시도 권한과 secrets 접근 권한을 나눈다.
workspace root를 이슈별로 나눈다.
로그에 secret이 남지 않게 한다.
dangerous command는 승인 게이트를 둔다.
production data를 직접 보지 않게 한다.
이게 귀찮으면 Symphony 도입은 아직 이르다.
오케스트레이션은 자동화의 속도를 올린다.
권한 경계가 없으면 사고 속도도 같이 오른다.
자동화가 빠른 건 좋은데,
삭제도 빠르면 기분이 아주 현대적이다.
현대적일 필요가 없는 순간이 있다.
어떤 작업이 Symphony에 잘 맞나
Symphony류 구조는 반복적이고 검증 가능한 작업에 강하다.
예를 들어 dependency upgrade가 있다.
React upgrade 전에 Vite migration이 필요하다면,
티켓 간 dependency를 걸고 순서를 만든다.
공식 글도 이런 DAG식 흐름을 언급한다.
또 다른 예는 작은 버그 수정이다.
재현 조건이 있고,
테스트를 추가할 수 있고,
수정 범위가 좁다면 에이전트에게 맡기기 좋다.
문서 정리도 잘 맞는다.
API 변경 후 docs 예제를 업데이트하는 일은 사람에게는 지루하지만 에이전트에게는 괜찮은 작업이다.
테스트 보강도 맞는다.
이미 동작은 아는데 회귀 테스트가 부족한 경우,
에이전트가 케이스를 추가하고 CI로 확인할 수 있다.
리팩터링도 조건부로 맞는다.
범위가 명확하고,
타입 체크가 강하고,
작은 PR로 쪼갤 수 있으면 괜찮다.
반대로 애매한 제품 판단은 덜 맞는다.
사용자 경험의 맛,
가격 정책,
브랜드 톤,
법무 리스크,
보안 설계,
데이터 모델의 장기 방향은 사람이 앞에서 잡아야 한다.
Symphony는 손을 늘려준다.
머리를 대체한다기보다는,
머리가 반복 작업에 덜 끌려가게 만든다.
언제 과한가
Symphony가 과한 첫 번째 경우는 하루 작업량이 적을 때다.
하루에 티켓 하나 처리하는 팀은 orchestration보다 좋은 체크리스트가 먼저다.
두 번째는 티켓 품질이 낮을 때다.
“로그인 좀 개선” 같은 티켓은 에이전트에게도 사람에게도 나쁘다.
세 번째는 테스트가 없을 때다.
테스트가 없으면 에이전트의 완료 선언을 사람이 계속 검증해야 한다.
네 번째는 repo 구조가 불안정할 때다.
빌드 방법이 매번 다르고,
환경변수 설명이 없고,
local setup이 사람마다 다르면 에이전트는 계속 넘어질 수밖에 없다.
다섯 번째는 리뷰 문화가 없을 때다.
AI가 만든 PR이라도 PR은 PR이다.
리뷰가 없으면 자동화는 품질 부채를 빠르게 만든다.
여섯 번째는 권한 설계가 없을 때다.
특히 private repo, customer data, billing, deployment가 얽힌 팀은 먼저 sandbox와 approval을 봐야 한다.
일곱 번째는 “우리가 뭘 만들지”가 정해지지 않았을 때다.
Symphony는 방향을 정해주는 제품 전략 도구가 아니다.
모호한 방향을 빠르게 구현하면,
빠르게 잘못 갈 뿐이다.
빠른 길치 모드다.
표현은 귀엽지만 결과는 별로 귀엽지 않다.
실무 파일럿 2주 플랜
Symphony류 방식을 바로 전사 도입하지 말고 2주 파일럿으로 보는 편이 좋다.
1일차에는 티켓 상태를 정한다.
Ready,
Running,
Blocked,
Human Review,
Done,
Abandoned 정도면 충분하다.
2일차에는 WORKFLOW.md 초안을 만든다.
목표,
금지사항,
검증 명령,
PR 작성 규칙,
사람에게 넘기는 조건을 적는다.
3일차에는 작은 작업 5개를 고른다.
모두 테스트 가능해야 한다.
4일차에는 에이전트 실행을 수동으로 하되 티켓 상태만 엄격히 맞춘다.
5일차에는 실패 로그를 모은다.
6일차에는 티켓 템플릿을 고친다.
7일차에는 CI나 preflight를 하나 추가한다.
8일차에는 동시 실행을 2개로 늘린다.
9일차에는 충돌 난 파일과 원인을 기록한다.
10일차에는 권한과 secret 노출 가능성을 점검한다.
11일차에는 PR 설명 포맷을 고친다.
12일차에는 review packet 형식을 만든다.
13일차에는 버릴 작업을 일부러 하나 만든다.
14일차에는 유지할지 접을지 결정한다.
이 플랜의 핵심은 “자동화 구현”보다 “운영 마찰 관찰”이다.
2주 동안 봐야 할 지표는 단순하다.
사람이 세션을 덜 열었는가.
리뷰할 PR의 품질이 유지되었는가.
실패 원인을 나중에 찾을 수 있었는가.
충돌이 줄었는가.
버린 실험의 비용이 낮았는가.
이 다섯 개가 좋아졌다면 계속 가도 된다.
아니면 멈추는 게 이득이다.
Symphony와 기존 Codex 사용법의 차이
기존 Codex 사용은 대체로 “나와 한 에이전트의 대화”다.
Symphony식 사용은 “작업 시스템과 여러 에이전트의 계약”이다.
이 차이는 프롬프트 수준이 아니다.
운영 단위가 다르다.
Codex CLI는 한 세션에서 강력하다.
OpenAI Codex open-source docs를 보면 Codex CLI, SDK, app server 같은 구성 요소가 공개되어 있다.
Symphony는 이런 Codex 실행 능력을 작업 보드와 묶는 상위 운영 아이디어로 보면 된다.
즉 “Codex를 더 잘 쓰는 법”의 다음 단계다.
첫 단계는 좋은 프롬프트다.
두 번째 단계는 repo 문서와 AGENTS.md다.
세 번째 단계는 테스트와 승인 게이트다.
네 번째 단계는 티켓과 PR 중심의 반복 운영이다.
다섯 번째 단계가 Symphony류 orchestration이다.
이 순서를 건너뛰면 고생한다.
특히 repo 문서가 약한 상태에서 orchestration만 붙이면,
에이전트는 매번 같은 질문을 다시 한다.
사람은 매번 같은 답을 다시 한다.
그건 자동화가 아니라 반복 수업이다.
수업료는 집중력으로 낸다.
하네스 엔지니어링과 연결되는 지점
OpenAI의 Harness Engineering 글은 Symphony를 이해하는 배경으로 중요하다.
그 글의 핵심은 사람이 코드를 직접 쓰지 않는 상황에서,
엔지니어의 일이 환경 설계,
의도 명세,
피드백 루프 구축으로 이동한다는 점이다.
Symphony는 그 다음 병목을 건드린다.
환경과 피드백 루프를 어느 정도 만들었더니,
이제 사람이 여러 에이전트 세션을 관리하는 것이 병목이 된 것이다.
그래서 Symphony는 하네스 위에 올라가는 작업 조율 레이어처럼 보인다.
하네스는 에이전트가 안정적으로 일하게 하는 실행 환경이다.
Symphony는 어떤 작업을 어느 에이전트에게 언제 맡길지 정하는 운영 흐름이다.
이 둘을 섞어 생각하면 안 된다.
하네스 없이 Symphony를 붙이면 실행이 불안정하다.
Symphony 없이 하네스만 있으면 사람이 계속 작업을 배정해야 한다.
작은 팀은 둘 다 한 번에 만들 필요가 없다.
먼저 하네스의 작은 버전을 만든다.
setup 문서를 정리한다.
test 명령을 고정한다.
권한 경계를 정한다.
작업 로그를 남긴다.
그 다음 티켓 중심 실행을 붙인다.
이 순서가 덜 아프다.
도구 도입은 치과 치료가 아니다.
그래도 아프면 순서가 잘못된 경우가 많다.
블로그 운영에 대입한 예시
내 블로그 자동화 관점에서도 Symphony는 꽤 유용한 프레임이다.
예를 들어 inbox에 유튜브 요약 노트가 들어온다.
그 노트가 blog idea sheet로 넘어간다.
idea sheet에는 channel,
priority,
source,
status,
strategy_fit,
evidence_plan이 붙는다.
여기서 sheet는 Linear와 비슷한 control plane 역할을 한다.
drafting 상태가 되면 원고 파일이 생긴다.
preflight가 실패하면 다시 draft로 돌아간다.
QC가 통과하면 publish로 넘어간다.
발행 후 published_url을 sheet에 기록한다.
이게 작동하면 사람은 “다음 글 뭐였지”를 덜 생각한다.
상태가 말해준다.
반대로 상태가 없으면 inbox는 늪이 된다.
좋은 글감도 늪에 빠지면 그냥 촉촉한 죄책감이다.
Symphony가 말하는 것은 바로 이 늪 방지다.
작업이 어디에 있고,
누가 처리 중이고,
무엇이 막혔고,
다음 사람이 뭘 보면 되는지 남기는 것이다.
코드든 블로그든 운영 원리는 비슷하다.
작업이 많아질수록 시스템이 기억해야 한다.
사람이 다 기억하려고 하면,
사람은 결국 커피를 기억하고 작업을 잊는다.
비용과 시간 관점
Symphony류 구조의 비용은 모델 사용료만이 아니다.
작업 보드를 정리하는 비용이 있다.
티켓 템플릿을 만드는 비용이 있다.
WORKFLOW.md를 관리하는 비용이 있다.
CI를 손보는 비용이 있다.
권한 경계를 나누는 비용이 있다.
실패 로그를 읽는 비용이 있다.
PR 리뷰를 하는 비용이 있다.
이 비용을 내고도 남는 팀이 Symphony를 써야 한다.
그럼 남는 것은 무엇인가.
첫째, 반복 구현을 동시에 진행할 수 있다.
둘째, 사람이 세션 운전에서 벗어난다.
셋째, 실험 티켓을 싸게 던져볼 수 있다.
넷째, 작업 기록이 이슈에 남는다.
다섯째, CI와 리뷰가 자동화 흐름에 붙는다.
여섯째, 에이전트가 만든 follow-up을 다시 작업으로 만들 수 있다.
이 이득은 작업량이 많을수록 커진다.
작업량이 적으면 setup 비용이 더 크다.
그래서 개인 프로젝트는 “완전한 Symphony”가 아니라 “Symphony식 상태 관리”부터 시작하는 편이 좋다.
작게는 blog sheet status만 제대로 써도 효과가 있다.
코드 프로젝트라면 GitHub Issues에 상태 라벨을 붙이는 것부터 시작해도 된다.
도구는 나중에 커져도 된다.
상태 설계는 먼저 작아야 한다.
실패 사례로 미리 보는 함정
첫 번째 함정은 티켓이 너무 크다는 것이다.
“결제 시스템 개선”은 Symphony에게 좋은 작업이 아니다.
“결제 실패 시 retry banner 추가, unit test 포함”은 더 낫다.
두 번째 함정은 완료 기준이 없다는 것이다.
완료 기준이 없으면 에이전트는 그럴듯한 곳에서 멈춘다.
그럴듯함은 테스트 결과가 아니다.
세 번째 함정은 사람이 중간에 계속 끼어드는 것이다.
Symphony식 흐름은 mid-flight micromanagement를 줄이려는 구조다.
계속 찌를 거면 그냥 interactive session이 낫다.
네 번째 함정은 PR을 너무 크게 만드는 것이다.
AI가 한 번에 많이 바꾸면 리뷰 비용이 폭증한다.
작은 PR 규칙이 필요하다.
다섯 번째 함정은 “에이전트가 follow-up issue를 만들면 무조건 좋은 것”이라고 믿는 것이다.
follow-up은 신호다.
일감 확정은 아니다.
사람이 우선순위를 잡아야 한다.
여섯 번째 함정은 실패를 프롬프트 탓으로만 보는 것이다.
실패 원인은 테스트 부재,
문서 부족,
권한 오류,
환경 불일치,
티켓 모호성일 수 있다.
프롬프트만 바꾸면 같은 일이 반복된다.
일곱 번째 함정은 tool chain이 너무 많아지는 것이다.
Linear,
GitHub,
Slack,
Notion,
CI,
로그 대시보드,
로컬 워크스페이스가 모두 연결되면 멋있다.
하지만 처음부터 다 연결하면 디버깅도 멋있게 어려워진다.
멋있게 어려운 것은 보통 그냥 어렵다.
바로 쓸 수 있는 점검표
Symphony를 붙이기 전 아래 질문에 답해보면 된다.
-
우리 팀의 “Ready” 상태는 정확히 무엇을 뜻하나?
-
에이전트가 시작해도 되는 티켓 조건은 무엇인가?
-
에이전트가 멈춰야 하는 조건은 무엇인가?
-
사람이 반드시 봐야 하는 파일 유형은 무엇인가?
-
secret이 노출될 가능성은 어디에 있나?
-
PR이 너무 커지는 기준은 무엇인가?
-
실패한 작업공간은 며칠 보관할 것인가?
-
CI 실패 후 자동 재시도는 몇 번까지 허용할 것인가?
-
flaky test는 사람이 봐야 하나, 에이전트가 재시도해도 되나?
-
에이전트가 새 이슈를 만들 수 있나?
-
만들 수 있다면 어떤 라벨을 붙여야 하나?
-
agent-generated PR에는 어떤 설명이 필수인가?
-
리뷰어는 누구인가?
-
merge 권한은 누구에게 있나?
-
production deploy는 자동인가 수동인가?
-
이 시스템이 멈췄을 때 누가 알아차리나?
-
로그는 어디에 남나?
-
비용 초과 알림은 있나?
-
개인 정보나 고객 데이터는 차단되어 있나?
-
이 자동화가 없어도 하루를 버틸 수 있나?
마지막 질문이 은근히 중요하다.
자동화는 편해야 하지만,
자동화가 멈췄을 때 조직도 같이 멈추면 위험하다.
Symphony류 시스템은 생산성을 올리는 장치이지 생명 유지 장치가 아니다.
내가 고른 최소 구현 방향
내가 작은 팀에 추천한다면 전체 Symphony를 바로 구현하지 않는다.
먼저 ticket-first discipline을 만든다.
모든 AI 작업은 티켓이나 아이디어 row에서 시작한다.
두 번째로 workspace naming을 고정한다.
작업 ID가 파일명,
브랜치명,
로그명,
PR 제목에 들어가게 한다.
세 번째로 preflight를 만든다.
글이면 frontmatter와 링크를 검사한다.
코드면 test, lint, typecheck를 검사한다.
네 번째로 handoff state를 만든다.
사람이 보는 상태와 에이전트가 계속 도는 상태를 구분한다.
다섯 번째로 retry rule을 작게 둔다.
같은 실패를 세 번 반복하면 사람이 본다.
여섯 번째로 audit log를 남긴다.
무엇을 읽었고,
무엇을 바꿨고,
무엇을 실행했고,
무엇이 실패했는지 남긴다.
이 정도가 잡히면 그 다음에 daemon orchestrator를 생각해도 된다.
도구는 마지막에 온다.
운영 습관이 먼저 온다.
이 순서를 지키면 Symphony를 쓰든 안 쓰든 얻는 게 있다.
FAQ
OpenAI Symphony는 Codex의 새 제품인가?
공식 글과 저장소 기준으로는 새 에디터나 일반 SaaS 제품이라기보다 Codex agent orchestration을 위한 open-source spec 성격이 강하다.
핵심은 Linear 같은 issue tracker를 coding agents의 control plane으로 쓰는 운영 방식이다.
Linear가 없으면 못 쓰나?
공식 스펙 버전은 Linear를 기준으로 설명한다.
하지만 개념적으로는 GitHub Issues, Notion database, Google Sheet 같은 도구도 control plane 역할을 할 수 있다.
다만 adapter, 상태 매핑, 권한 처리, 로그 연결은 직접 설계해야 한다.
개인 개발자도 써볼 만한가?
완전한 orchestrator를 바로 만들 필요는 없다.
개인은 “모든 AI 작업을 issue나 sheet row에서 시작한다” 정도만 해도 효과를 볼 수 있다.
세션을 많이 띄우기 전에 상태 관리를 먼저 잡는 쪽이 낫다.
Symphony를 쓰면 PR 수가 무조건 늘어나나?
OpenAI 공식 글은 일부 팀에서 landed PR이 크게 증가한 사례를 말한다.
하지만 그 배경에는 agent-friendly repository, 테스트, guardrail, 하네스, 리뷰 문화가 있다.
그 기반 없이 PR 수만 늘리면 품질 부채가 늘 수 있다.
가장 먼저 준비할 것은 무엇인가?
나는 WORKFLOW.md보다도 티켓 템플릿과 CI를 먼저 본다.
티켓이 모호하고 검증이 없으면 어떤 orchestrator도 안정적으로 굴러가기 어렵다.
그 다음에 WORKFLOW.md, workspace isolation, retry rule, logging을 붙이는 순서가 좋다.
Claude Code나 Cursor를 쓰는 팀에도 의미가 있나?
의미는 있다.
Symphony의 핵심은 특정 모델보다 작업 중심 운영 방식이다.
다만 공식 스펙은 Codex와 app-server 형태의 실행을 전제로 설명하므로, 다른 도구에 붙일 때는 실행 프로토콜과 승인 경계를 따로 맞춰야 한다.
제일 위험한 오해는 무엇인가?
“에이전트를 많이 띄우면 생산성이 오른다”는 오해다.
에이전트를 많이 띄우면 결과물이 많아진다.
생산성이 오르려면 결과물이 추적되고, 검증되고, 리뷰되고, 필요 없으면 버려져야 한다.
Symphony의 진짜 메시지는 동시 실행보다 coordination이다.
관련 글
공식 출처
-
OpenAI, An open-source spec for Codex orchestration: Symphony, 2026년 4월 27일, https://openai.com/index/open-source-codex-orchestration-symphony/
-
OpenAI GitHub, openai/symphony repository, 2026년 5월 8일 확인, https://github.com/openai/symphony
-
OpenAI, Harness engineering: leveraging Codex in an agent-first world, 2026년 2월 11일, https://openai.com/index/harness-engineering/
-
OpenAI Developers, Codex Open Source docs, 2026년 5월 8일 확인, https://developers.openai.com/codex/open-source
마지막 판단
OpenAI Symphony의 진짜 의미는 “코딩 에이전트가 더 똑똑해졌다”가 아니다.
“에이전트를 굴리는 팀의 운영 방식이 바뀐다”가 더 정확하다.
세션 중심 AI 코딩은 시작하기 쉽다.
작업 중심 AI 코딩은 커지기 쉽다.
Symphony는 그 차이를 분명하게 보여준다.
개인이나 작은 팀은 전체 스펙을 바로 따라 할 필요가 없다.
대신 티켓,
상태,
완료 기준,
검증 명령,
작업공간,
사람 리뷰,
발행 또는 merge 기록을 먼저 잡으면 된다.
그 다음에 자동 실행을 붙여도 늦지 않다.
AI 코딩의 다음 생산성은 “프롬프트 잘 쓰기”보다 “일이 어디까지 갔는지 잊지 않는 시스템”에서 나올 가능성이 크다.
도구 이름은 Symphony지만,
작은 팀에게 필요한 첫 음은 의외로 단순하다.
작업을 티켓으로 만들고,
티켓이 상태를 갖게 하고,
상태가 사람과 에이전트를 덜 헷갈리게 하는 것.
여기서부터 시작하면 된다.