왜 Claude Code 메인 + Codex 리뷰인가
단일 LLM 에이전트의 사각지대를 다른 모델로 메우는 이중 구조의 출발점을 정리해요.
이 챕터를 끝내면 Claude Code 메인 + Codex 리뷰 구조가 어떤 문제를 푸는지 한눈에 파악할 수 있어요.
- Claude Code 정기결제 + ChatGPT Plus(또는 Codex API) 두 가지를 모두 쓸 의향이 있어야 해요
- VSCode + Claude Code 익스텐션을 메인 작성 환경으로 가정해요
- 비개발자 입문 트랙이 아니에요. 적어도 한 번은 Claude Code로 작은 프로젝트를 끝내본 경험을 권장해요
단일 에이전트의 사각지대
Claude Code 하나로도 작성·리팩터·테스트까지 다 돌아가요. 그런데 같은 모델에게 자기가 쓴 코드를 다시 검토하라고 시키면 한계가 생겨요.
- 자기 출력에 대한 확신이 강해서 놓친 가정을 잘 못 잡아요
- 같은 컨텍스트에서 같은 추론 경로를 다시 밟으니 블라인드 스폿이 그대로 남아요
- 리팩터를 '제안'하는 순간부터 자기 변경의 정당성을 옹호하는 방향으로 기울어요
코드 리뷰에서 사람도 같은 이유로 작성자 본인이 아닌 다른 사람이 리뷰하잖아요. 에이전트도 같아요.
다른 모델, 다른 시점
해결책은 의외로 단순해요. 다른 모델을 다른 역할로 붙이는 거예요. 예를 들어 이렇게 분리할 수 있어요.
- Claude Code (메인 작성자) — 기획·구현·리팩터·테스트 모든 작성 작업
- Codex (advisory 리뷰어) — 작성된 변경분에 대해 독립된 시점으로 second opinion
Codex가 같은 사고 패턴에 갇혀 있지 않으니, Claude가 자연스럽게 받아들인 가정을 의심해요. 반대로 Codex가 작성하면 Claude가 같은 역할을 해주고요. 핵심은 모델이 다르다는 것이지, 어느 쪽이 더 똑똑하냐가 아니에요.
Advisory — 보조이지 게이트가 아니에요
이 구조에서 가장 중요한 룰: Codex 리뷰는 advisory예요. 절대 작업을 차단하지 않아요.
- 리뷰가 실패해도, 타임아웃돼도, Codex CLI가 설치되지 않아도 → 메인 파이프라인은 그대로 진행
- Codex가 CRITICAL을 잡아도 사람이 판단하지, 자동으로 푸시가 막히지 않아요
- 두 도구가 서로의 게이트가 되는 순간 워크플로우가 깨져요. 어느 한쪽이 다운되면 작업이 멈추니까요
예를 들어 advisory 원칙을 그대로 표현한 래퍼 스크립트라면, Codex가 설치돼 있지 않거나 인증이 안 풀려 있어도 {"status":"skipped"} 같은 JSON만 뱉고 exit 0으로 조용히 빠지게 만들어요. 다음 챕터들에서 이 패턴을 직접 만들어봐요.
비용을 정당화하는 기준
정기결제 두 개는 가벼운 결정이 아니에요. 두 도구 병용이 정말 필요한 신호:
- 매주 머지하는 PR이 2~3개 이상이고, 자기 코드를 본인이 리뷰하는 데 피로를 느낀다
- 팀 리뷰어가 부족하거나 회사 코드 외부에 못 보내는 환경이다
- 도메인 로직이 복잡해서 놓친 엣지 케이스의 비용이 정기결제비보다 크다
위 셋 중 하나라도 해당 안 되면 일단 단일 도구로 충분해요. 이 트랙은 "정말 필요해진 사람"을 위한 거예요.
다음 챕터에서 환경부터 잡아요
개념은 여기까지예요. 다음 챕터에서는 VSCode + Claude Code 익스텐션 + Codex CLI를 같은 머신에 깔고, 두 인증을 함께 통과시키는 베이스 셋업을 해요.