카테고리 없음

Open ai Codex cli 사용기 (mac)

Solo.dev 2025. 4. 21. 23:11
Codex CLI 실행 및 사용기

macOS에서 Codex CLI 실행 방법

실행 명령어

  • 명령어:
    nvm use 22
    Codex -m gpt-4.1-mini
                

단계별 설정

  1. Node.js 설치 및 nvm 설정:
    • nvm으로 Node.js 22 설치 및 활성화:
      nvm install 22
      nvm use 22
      node --version  # 확인: v22.x.x
                          
    • nvm 미설치 시 설치:
      curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
      source ~/.zshrc
                          
  2. Codex CLI 설치:
    npm install -g @openai/codex
    Codex --version
                
  3. OpenAI API 키 설정:
    echo 'export OPENAI_API_KEY="your-api-key"' >> ~/.zshrc
    source ~/.zshrc
                
  4. Codex CLI 실행:
    • 기본 실행:
      Codex -m gpt-4.1-mini
                          
    • 자동 패치 모드(full-auto):
      Codex -m gpt-4.1-mini -a full-auto
                          

주의사항

  • nvm 환경: nvm use 22로 Node.js 22를 활성화해야 실행 가능

4월 21일 Codex CLI 사용기 (DateP 프로젝트)

사용 환경

  • 프로젝트: DateP (React Native Expo 기반, Android 중심, iOS 구독 로직 패치 목표)
  • 목표: iOS/Android 구독 로직 분기 처리 자동 패치
  • 도구: Codex CLI, Node.js 22, nvm
  • 날짜: 2025년 4월 21일

사용 과정

  1. 초기 설정 및 문제:
    • approval 모드: 자동 패치(apply_patch) 실패
    • auto-edit 모드: 패치 적용 안 됨
    • 조치: Git 커밋 후 full-auto 모드로 전환
  2. full-auto 테스트 결과:
    • 테스트 1: test.js 생성
      Codex -m gpt-4.1-mini -a full-auto "create a file named test.js"
                          

      결과: test.js 생성 성공

      console.log("Hello, World!");
                          
    • 테스트 2: iOS 구독 로직 패치

      명령: iOS/Android 분기 처리 패치 요청

      대상 파일: src/purchases/PurchaseScreen.tsx, src/purchases/SubscriptionProvider.tsx

      // src/purchases/PurchaseScreen.tsx
      function startPurchase(plan) {
        if (Platform.OS === 'ios') {
          initiatePurchase({ purchaseToken: plan.token });
        } else if (Platform.OS === 'android') {
          initiatePurchase({ transactionId: plan.id });
        }
      }
      
      // src/purchases/SubscriptionProvider.tsx
      async function checkSubscriptionStatus() {
        const purchases = await getAvailablePurchases();
        if (Platform.OS === 'ios') {
          return purchases.map(p => ({ token: p.purchaseToken }));
        } else if (Platform.OS === 'android') {
          return purchases.map(p => ({ id: p.transactionId }));
        }
        return [];
      }
                          

      문제: 문법 오류(예: Platform 임포트 누락, 변수 이름 불일치)로 패치 실패

      할 일: 오류 수정 후 재적용

장점

  • 자동화 가능성: full-auto 모드에서 간단한 작업 성공
  • 컨텍스트 이해: 구독 로직 패치 방향 적절히 파악
  • 실험적 가치: React Native 프로젝트에서 자동화 워크플로우 테스트 가능

단점

  • 비용: 2시간(~30회 질문)으로 0.3달러(~500원) 소모
  • 설정 복잡성: 초기 설정(nvm, API 키) 장벽 높음
  • 실험적 한계: 문법 오류로 패치 불완전, 안정성 부족
  • 사용자 숙련도: 프롬프트 최적화와 CLI 동작 이해 필요

비용 분석

  • 소모: 0.3달러/2시간 (~500원, ~30회 질문)
  • 원인: 긴 컨텍스트(예: src/purchases/ 전체)와 반복 명령
  • 개선 제안:
    • .codexignore로 불필요한 파일 제외:
      echo -e "node_modules/\ndist/\n.expo/" > .codexignore
                          
    • 구체적 프롬프트:
      Codex -m gpt-4.1-mini -a full-auto -f src/purchases/ "apply iOS branching to PurchaseScreen.tsx"
                          
    • 비용 모니터링: OpenAI API 대시보드(https://platform.openai.com/usage)

종합 정리

macOS에서 Codex CLI 실행

  • 명령어:
    nvm use 22
    Codex -m gpt-4.1-mini -a full-auto
                
  • 필수: Node.js 22(nvm), OpenAI API 키
  • 설정:
    • nvm으로 Node.js 22 활성화
    • API 키 설정:
      echo 'export OPENAI_API_KEY="your-api-key"' >> ~/.zshrc
      source ~/.zshrc