케이스 스터디: Claude Code와 Codex
이론에서 현실로
섹션 제목: “이론에서 현실로”앞선 챕터들에서 루프의 구조, 패턴, 실패 모드를 이론적으로 다뤘다. 12절은 실전이다. 수백만 명이 매일 사용하는 두 코딩 에이전트 — Anthropic의 Claude Code와 OpenAI의 Codex — 가 실제로 루프를 어떻게 구현했는지 해부한다. 이 두 시스템은 서로 다른 설계 철학을 가지고 있으면서도, 동일한 핵심 문제들을 풀어야 했다.
Boris Cherny, Claude Code 책임자의 말을 다시 떠올려 보자.
“나는 더 이상 Claude에 프롬프트하지 않는다. 루프를 돌리며 무엇을 할지 알아내게 한다. 내 일은 루프를 작성하는 것이다.”
이 한 문장이 현대 코딩 에이전트의 철학을 담고 있다.
Claude Code: 단일 스레드 마스터 루프
섹션 제목: “Claude Code: 단일 스레드 마스터 루프”Claude Code는 하나의 메인 스레드에서 돌아가는 마스터 루프를 중심으로 설계되어 있다. 사용자가 터미널에서 claude 를 실행하면 이 루프가 시작된다.
┌─────────────────────────────────────────────────────────────────┐│ Claude Code 마스터 루프 │└─────────────────────────────────────────────────────────────────┘
사용자 입력 │ ▼ ┌──────────────────────────────┐ │ 컨텍스트 구성 │ │ - 시스템 프롬프트 │ │ - CLAUDE.md 파일들 로드 │ │ - 이전 대화 히스토리 │ │ - 현재 도구 목록 │ └──────────────┬───────────────┘ │ ▼ ┌──────────────────────────────┐ │ Claude 호출 (Sonnet/Opus) │ └──────────────┬───────────────┘ │ stop_reason? ├── end_turn ──▶ 사용자에게 응답 출력, 대기 │ └── tool_use ──▶ 도구 실행 │ ┌────┴────┐ │bash │read_file│write_file│··· └────┬────┘ │ tool_result │ 컨텍스트 창에 추가 │ ▼ 컨텍스트 92% 임계치 도달? ├── 아니오 ──▶ Claude 재호출 └── 예 ──▶ Compaction 실행 (압축 요약 + 중요 파일 유지 + 컨텍스트 초기화 후 재개)파일 기반 메모리
섹션 제목: “파일 기반 메모리”Claude Code는 CLAUDE.md 파일 시스템을 장기 메모리로 활용한다. 프로젝트 루트의 CLAUDE.md에는 프로젝트 규칙, 자주 사용하는 명령어, 코드 컨벤션이 저장된다. 이 파일은 매 루프 시작 시 컨텍스트에 주입된다. 루프가 새로 시작되어도 중요한 맥락이 유지되는 이유다.
92% Compaction: 컨텍스트 수명 관리
섹션 제목: “92% Compaction: 컨텍스트 수명 관리”루프가 오래 돌수록 컨텍스트 창이 차오른다. Claude Code는 컨텍스트가 임계치(약 92%)에 도달하면 압축(compaction)을 실행한다. 현재 대화를 요약하고, 최근에 수정한 파일들의 내용을 보존하고, 컨텍스트를 초기화한 뒤 루프를 계속한다. 5-3절에서 다룬 compaction 전략의 실제 구현이다.
서브에이전트와 깊이 제한
섹션 제목: “서브에이전트와 깊이 제한”복잡한 작업에서 Claude Code는 서브에이전트를 스폰할 수 있다. 하지만 **깊이 제한(depth cap)**을 두어 에이전트 트리가 무한히 깊어지는 것을 방지한다. 각 서브에이전트는 독립적인 컨텍스트를 가지며, 부모 에이전트에게 결과만 반환한다. 컨텍스트 격리로 에러 전파를 차단한다.
OpenAI Codex: Plan-Execute-Verify-Fix
섹션 제목: “OpenAI Codex: Plan-Execute-Verify-Fix”OpenAI Codex는 클라우드 컨테이너에서 실행되는 코딩 에이전트로, 명시적인 4단계 루프를 따른다.
┌─────────────────────────────────────────────────────────────────┐│ Codex 루프 구조 │└─────────────────────────────────────────────────────────────────┘
사용자 태스크 │ ▼ ① PLAN 저장소 구조 파악, 문제 이해 단계별 실행 계획 수립 │ ▼ ② EXECUTE 파일 읽기, 코드 수정, 명령 실행 각 단계를 격리된 컨테이너에서 실행 │ ▼ ③ VERIFY 수정된 코드에 테스트 실행 린트, 타입 체크, 빌드 확인 │ ▼ ④ FIX (필요 시) 검증 실패 → 오류 분석 코드 수정 → VERIFY로 돌아감 │ ▼ 모든 검증 통과 → PR 생성·제출RL 기반 훈련: “테스트 통과까지 반복”
섹션 제목: “RL 기반 훈련: “테스트 통과까지 반복””Codex의 특이점 중 하나는 모델(codex-1) 자체가 강화학습으로 코딩 루프를 반복하는 행동을 학습했다는 것이다. 단순히 코드를 생성하는 것이 아니라, 테스트를 실행하고, 실패를 확인하고, 수정하고, 다시 실행하는 전체 사이클을 보상 신호로 학습했다. 11-5절의 학습 루프가 추론 루프에 내재화된 형태다.
클라우드 컨테이너 격리
섹션 제목: “클라우드 컨테이너 격리”각 Codex 세션은 독립된 클라우드 컨테이너에서 실행된다. 이는 7-5절의 샌드박싱 원칙을 철저히 적용한 것이다. 에이전트가 임의의 명령을 실행해도 다른 세션이나 실제 시스템에 영향을 미치지 않는다. 블래스트 반경(blast radius)을 컨테이너 경계로 제한한다.
두 시스템의 공통 원칙
섹션 제목: “두 시스템의 공통 원칙”설계 철학이 다른 두 시스템에서 반복되는 패턴이 있다.
| 원칙 | Claude Code | Codex |
|---|---|---|
| 명확한 종료 조건 | stop_reason end_turn | 모든 테스트 통과 |
| 컨텍스트 관리 | 92% compaction | 단계별 클린 컨텍스트 |
| 격리 | 서브에이전트 격리 | 컨테이너 격리 |
| 검증 통합 | 도구 실행 결과 관찰 | 명시적 verify 단계 |
| 파일 기반 상태 | CLAUDE.md | 컨테이너 파일시스템 |
모든 구체적 구현이 다르지만, 근본적인 원칙은 같다. 루프를 단순하게, 종료 조건을 명확하게, 상태를 외부에 저장하고, 검증을 루프에 내장하라.
다음 챕터에서는 SWE-agent를 케이스 스터디로, ACI(에이전트-컴퓨터 인터페이스) 설계가 루프 효율에 어떤 차이를 만드는지 살펴본다.
참고 자료
- OpenAI — Unrolling the Codex agent loop — 접속 2026-06-30
- Anthropic — Effective context engineering for AI agents — 접속 2026-06-30
- Addy Osmani — Loop Engineering — 접속 2026-06-30