AI가 쓴 코드를 서로 다른 두 AI가 번갈아 검사하는 구조입니다. 원래는 Claude Code(코딩을 돕는 AI 도구)가 자기 코드를 스스로 QA(품질 검사)했습니다. 여기에 OpenAI가 만든 다른 AI인 Codex를 검사자로 하나 더 붙였습니다. 사람이 자기 글의 오타를 잘 못 찾듯, AI도 자기가 쓴 코드의 빈틈은 스스로 보기 어렵습니다. 그 사각지대를 다른 AI가 대신 잡아냅니다.
Claude는 이 프로젝트만의 규칙을 잘 압니다. '이건 절대 하지 말라'고 정해둔 금지 규칙, 프로젝트마다 다른 코드 패턴과 작성 스타일, 자료형(타입)이 서로 어긋나지 않는지를 검사합니다. 프로젝트의 맥락을 깊이 이해하는 것이 강점입니다.
Codex는 같은 코드를 다른 관점에서 봅니다. Claude가 놓친 패턴, 보안 허점, 드물게만 터지는 예외 상황(엣지 케이스)을 잡아냅니다. 특히 일부러 약점을 찾아 공격하듯 살펴보는 검토(adversarial-review)로 숨은 결함을 파고듭니다.
codex review --uncommitted 명령이 자동으로 돕니다. 아직 저장(커밋)하지 않은 코드를 검사합니다. 가장 심각한 결함(CRITICAL)이 0건이면 통과(PASS) 증거 파일을 남깁니다.decision: "block" 이면 Claude는 답변을 멈추지 못하고 문제를 계속 고쳐야 합니다..qa-cycle-passed + .codex-review-passed — 이 두 개의 통과 증거 파일이 모두 있어야만 코드를 서버에 올릴(push) 수 있습니다.코드에 오류가 났을 때 고치는 순서를 3단계에서 4단계로 늘렸습니다. 새로 넣은 3번째 단계에서는 문제를 통째로 Codex(OpenAI의 AI, GPT-5.4 모델)에게 넘깁니다. 서로 다른 AI는 문제를 푸는 방식도 달라서, 앞 단계에서 막혔던 부분을 새로운 방법으로 풀어낼 수 있습니다.
네 단계를 모두 시도해도 실패하면, 텔레그램 메시지로 사용자에게 알려 직접 판단을 맡깁니다.
| 상황 | Review Gate | Stop Gate | Push Gate | 강제 수준 |
|---|---|---|---|---|
| 직접 처리 (작업 위임 Task 사용) | O | O | O | 3단계 모두 강제 |
| /team | O | O | O | 3단계 모두 강제 |
| /manager | O | O | O | 3단계 모두 강제 |
| 직접 처리 (작업 위임 Task 안 씀) | X | O | 차단* | Stop 검문소만 |
| slash command | 불확실 | O | 불확실 | Stop 검문소만 확실 |
* 하위 작업(Task)을 쓰지 않으면 통과 증거 파일(.codex-review-passed)이 만들어지지 않습니다. 그러면 코드를 서버에 올리는(push) 길이 영구히 막힙니다. 이때는 /codex:review 명령을 직접 실행해 검사를 통과시켜야 합니다.
| Hook | 차단 방식 | 분류 |
|---|---|---|
| qa-gate-before-push.sh .qa-cycle-passed | exit 2 | HARD |
| qa-gate-before-push.sh .codex-review-passed | exit 2 | HARD |
| stop-review-gate-hook.mjs | decision: "block" | HARD |
| scaffold-violation-check.sh | '절대 금지(NEVER DO)' 패턴이 보이면 차단 | HARD |
| no-env-commit.sh | exit 2 | HARD |
| failure-counter.sh | 3번 실패하면 codex:rescue를 쓰라고 안내 (막지는 않음) | SOFT |
| codex-review-gate.sh | 통과 증거 파일만 만들고 막지는 않음 | SOFT |
| agent hook prompts | 말로 된 지시라 Claude의 판단에 맡김 | SOFT |