📌 이 글은 제 Claude Code에 Codex(ChatGPT 쪽 코딩 AI)를 리뷰어로 붙인 과정을 짧게 정리한 것입니다. 결론부터 말하면, 생각보다 너무 단순했어요. 결론만 궁금하시면 맨 아래 최종 요약으로 가셔도 됩니다.
지난 글에서 맥미니의 로컬 LLM에게 일을 넘긴 이야기를 했죠. 그 실험 계획을 꼬치꼬치 따져 준 게 Codex였어요. 오늘은 그 "남의 회사 AI에게 검토받기"를 어떻게 붙였는지 이야기해 볼게요.
왜 리뷰어를 다른 AI로?
Claude가 코드를 짜고, 같은 Claude가 검토하면 어떨까요? 같은 모델은 같은 부분을 같이 놓칠 수 있어요. 그래서 "꼬투리 잡는 역할(적대적 리뷰어)은 성향이 다른 모델에게 맡기는 게 좋다"는 얘기를 듣고, ChatGPT 쪽 모델인 GPT-6 Astra를 리뷰어로 쓰기로 했습니다.

💡 적대적 리뷰어(adversarial reviewer): 칭찬은 하지 않고 일부러 반대 입장에서 문제만 찾는 검토 담당입니다. "잘했어요"가 아니라 "이 경우에 터집니다"를 말해 주는 역할이에요.
처음엔 헤르메스가 있어야 되는 줄 알았다
사실 처음엔 어디서 주워들은 게 있어서, 헤르메스(Hermes) 같은 별도 에이전트 도구를 깔아야만 Claude와 Codex 모델을 동시에 쓸 수 있는 줄 알았어요. 두 회사 AI를 한 판에 올리려면 뭔가 거창한 중간 다리가 필요할 거라고 생각했죠.

그런데 막상 해 보니 Codex CLI 하나 깔고, 명령어 한 줄을 Claude에게 쥐여 주면 끝이었습니다.
1단계: Codex CLI 설치하고 로그인
Codex는 터미널에서 쓰는 CLI 버전이 있어요. 설치하고 ChatGPT 계정으로 로그인만 하면 됩니다. 저는 9월 말에 설치했어요.
💰 요금제는 일단 ChatGPT Plus. 저는 Codex를 리뷰에만 쓸 거라 가장 싼 유료 요금제로 시작했어요. 별도 API 키나 결제 없이 구독 한도 안에서 돌아갑니다.
2단계: 리뷰 명령어 한 줄 만들기
핵심은 codex exec예요. 대화창 없이 질문 하나 던지고 답만 받아 오는 명령입니다. 이걸 작은 스크립트(adversarial-review.sh)로 감쌌어요. 실제로 하는 일은 사실상 이 한 줄이에요.
--sandbox read-only: 리뷰어는 읽기만. 파일을 고칠 수 없어요.--ephemeral: 리뷰할 때마다 기록을 남기지 않는 일회용 대화.model_reasoning_effort="high": 대충 보지 말고 깊게 생각하라는 설정.
리뷰어에게 주는 지시문(프롬프트)도 짧아요. 실제 문구는 이렇습니다.
"칭찬 금지, 돌려 말하기 금지, 문제가 없으면 지어내지 말 것." 이 세 줄이 은근히 중요해요. 마지막 줄이 없으면 리뷰어가 뭐라도 찾으려고 억지 지적을 만들거든요.
쓰는 법도 간단합니다. 바뀐 코드를 파이프로 넘기면 끝이에요.
3단계: Claude에게 "리뷰는 이걸로 받아 와"라고 알려 주기
마지막으로 Claude Code 쪽에 리뷰어 서브에이전트(adversarial-reviewer)를 하나 만들어서, 이 스크립트를 실행하고 결과를 그대로 가져오게 했어요. 그리고 규칙 파일에 "중요한 변경을 끝내기 전엔 adversarial-reviewer"라고 한 줄 적었습니다.

심부름꾼은 가장 싼 Haiku로 뒀어요. 실제 판단은 Astra가 하니까 Claude 쪽 사용량은 거의 안 듭니다.
⚠️ 실패를 숨기지 않게 하기: Codex 한도가 바닥나거나 로그인이 풀리면 스크립트가 실패해요. 이때 심부름꾼이 슬쩍 자기가 리뷰한 척하지 않도록 "실패하면 SCRIPT NOT RUN이라고만 보고하라"는 규칙을 넣어 뒀어요. (이 문구가 나중에 웃긴 사고를 치는데, 그건 다음 글에서...)

진짜 이게 끝이에요. 설치, 로그인, 명령어 한 줄, 규칙 한 줄. 거창한 연동을 각오했던 게 민망할 정도였습니다.
4단계: 정말 잘 잡나? 버그 6개 심어서 시험
붙여 놓고 끝내면 섭섭하죠. 일부러 버그 6개(SQL 인젝션, 첫 페이지 누락, 환불 금액 10%만 합산 등)를 심은 연습용 코드를 만들어 리뷰시켜 봤어요. 정답지는 리뷰어가 못 보게 따로 숨겼고요.

첫 판에 6개 다 찾았고, 제가 심지도 않은 진짜 문제(미래 날짜를 "최근"으로 판정)까지 하나 더 찾아냈어요. 46초 걸렸습니다.
내친김에 Codex의 다른 모델 Sol(토큰당 가격이 Astra의 1/5)과도 3번씩 붙여 봤어요.
| Astra | Sol | |
|---|---|---|
| 심은 버그 6개 × 3회 | 17 / 18 (1번 놓침) | 18 / 18 |
| 평균 시간 | 50초 | 96초 |
| 평균 토큰 | 5,653 | 14,003 |
| 특징 | 빠르고 간결 | 코드를 직접 돌려 재현, 느리지만 꼼꼼 |
Sol이 조금 더 꼼꼼했지만 두 배 느렸어요. 실제 코드 리뷰에서는 서로 다른 문제를 찾아서 우열을 가리기 어려웠고요. 고민 끝에 Astra 유지로 결정했습니다.
써 보니: Plus가 점점 모자라다 ㅠ
리뷰에만 쓰니까 Plus면 충분할 줄 알았어요. 처음 확인했을 땐 5시간 한도의 4%밖에 안 썼더라고요.
그런데 Claude를 Max로 올리고 나서 사정이 달라졌어요. Claude가 일을 많이 하니까 리뷰 요청도 덩달아 늘어난 거죠. 어떤 날은 Astra를 세 번 부르고 나니 그날 Codex 한도가 바닥났더라고요. 그럴 땐 Claude 쪽 Fable이 대신 리뷰하게 해 뒀어요.

Codex 요금제를 올릴지는 아직 고민 중이에요. 😅
마치며
"두 회사 AI를 같이 쓴다"고 하면 거창해 보이는데, 실제로는 명령어 한 줄을 서로 넘겨주는 것이었어요. 리뷰어를 바꾸고 싶으면 --model 한 단어만 바꾸면 되고요.
그런데 이렇게 리뷰어까지 붙여서 서브에이전트 7개를 꾸려 놓고 나니 궁금해지더라고요. "이거 아무것도 안 한 기본 Claude Code보다 정말 나은가?" 그래서 같은 과제로 둘을 붙여 봤습니다. 리뷰어 Astra vs Fable 대결도 같이요. 다음 글에서 이어 갈게요.

최종 요약
✅ 결론만 보고 싶은 분
1. 리뷰어는 성향이 다른 모델로 → Claude가 짜고 ChatGPT 쪽 GPT-6 Astra가 검토.
2. 헤르메스 같은 별도 도구는 필요 없었다. Codex CLI 설치 + 로그인 + codex exec 한 줄이면 끝.
3. 읽기 전용(--sandbox read-only) + "칭찬 금지, 없는 문제 지어내지 말 것" 지시문.
4. 버그 6개 시험: Astra 17/18(평균 50초), Sol 18/18(96초) → Astra 유지.
5. 리뷰에만 쓰니 ChatGPT Plus로 시작. 근데 Claude Max로 올린 뒤로는 좀 모자라다 ㅠ
도움이 됐다면 공유 부탁드립니다! 질문은 댓글로 남겨주세요.
'AI 활용기' 카테고리의 다른 글
| 로컬 LLM(Ollama gemma)으로 Claude 토큰 아끼기|맥미니에 gemma4 올리고 Haiku랑 정확도 붙여 본 기록 (0) | 2026.10.13 |
|---|---|
| Claude Code에 서브에이전트 붙이기|혼자 다 하던 AI에게 팀을 만들어 줬습니다 (0) | 2026.10.12 |
| 한국에서 메타 뮤즈(Muse) 가입하기 — 완전 정복 가이드 (0) | 2026.10.07 |