Crashlytics 크래시를 AI가 분석하고 코드까지 고쳐주는 플랫폼 만들기

소개

시도하고자 했던 것

모바일 앱 운영 중 발생하는 크래시 대응 프로세스를 AI로 완전 자동화하는 플랫폼을 구축했습니다.

기존에는 크래시가 발생하면 다음 과정을 거쳐야 했습니다:

기존 프로세스

소요 시간

Crashlytics에서 크래시 발견

수동 모니터링

스택 트레이스 분석 및 원인 파악

30분 ~ 수 시간

코드 수정 및 PR 생성

30분 ~ 1시간

코드 리뷰 요청 및 반영

수 시간 ~ 1일

전체 사이클

반나절 ~ 하루 이상

이 모든 과정을 크래시 감지 → AI 분석 & 코드 수정 → AI 코드 리뷰 → PR 자동 생성 → Slack 알림으로 자동화하여, 개발자는 생성된 PR을 확인하고 머지하는 것만으로 크래시에 대응할 수 있도록 만들었습니다.


진행 방법

사용한 도구

도구

용도

Claude Code (CLI)

프로젝트 전체 구현 — 설계, 코딩, 디버깅, 배포까지

Claude Agent SDK

크래시 분석 엔진 — 레포지토리 클론 후 소스코드를 직접 읽고 수정

OpenAI Codex SDK

코드 리뷰 게이트 — Claude의 수정 결과를 독립적으로 검증

Claude Code 활용 방법

1단계: 프로젝트 설계 (SPEC 작성)

Claude Code에게 프로젝트의 목표와 요구사항을 설명하고, 전체 기능 스펙 문서를 작성했습니다.

프롬프트: "Firebase Crashlytics 크래시를 자동 감지하여 AI로 분석하고 코드 수정 PR을 자동 생성하는
플랫폼을 만들려고 합니다. 기존 AI Review 프로젝트와 동일한 기술스택(Next.js 16, Prisma, shadcn/ui)을
사용합니다. 전체 기능 스펙을 작성해주세요."

결과물: docs/SPEC.md (700줄+) — DB 스키마, API 스펙, 파이프라인 플로우, 프롬프트 설계까지 포함된 상세 스펙

2단계: 팀 구성 및 병렬 구현

Claude Code의 에이전트 Team기능을 활용하여 4명의 AI 에이전트가 병렬로 작업하도록 했습니다.

팀 구성:
  - Leader: 프로젝트 셋업 + DB 스키마 + 태스크 관리
  - crashlytics-dev: Firebase Crashlytics 연동 + Slack 알림
  - ai-pipeline-dev: Claude/Codex 분석기 + 분석 큐 오케스트레이터
  - github-pr-dev: GitHub 레포 관리 + PR 생성 + Docker 인프라
  - dashboard-dev: 관리자 대시보드 UI + API 라우트

Leader가 Phase 1~2(기반 인프라)를 완료한 후, 공통 인터페이스를 정의하고 4명의 teammate를 동시에 작업하여 Phase 3~8을 병렬 처리했습니다.

프롬프트 (Leader): "SPEC.md와 TEAM_PLAN.md를 참조하여 프로젝트를 구현합니다.
Phase 1(프로젝트 셋업)과 Phase 2(DB 스키마 & 기본 CRUD)를 먼저 완료하고,
공통 인터페이스 정의 후 4명의 teammate를 spawn하여 Phase 3~8을 병렬로 진행합니다."

3단계: 파이프라인 고도화

초기 설계는 Claude + Codex 듀얼 분석 → 결과 비교/머지 방식이었으나, 실제 구현하면서 더 효과적인 구조로 리팩토링했습니다.

최종 파이프라인 (10단계):
  ① 큐 등록 → ② 설정 로드 → ③ 레포 클론 → ④ 브랜치 생성
  → ⑤ Claude Agent 실행 (소스코드 직접 탐색 & 수정)
  → ⑥ 수정 불필요 판단? → ⑦ Codex 코드 리뷰 (git diff 기반 검증)
  → ⑧ 리뷰 결과 → ⑨ Commit & Push → ⑩ PR 생성 + Slack 알림

변경 이유: Claude Agent가 레포를 직접 탐색하며 코드를 수정하는 것이 정확하고, Codex는 수정 결과를 리뷰하는 게이트 역할이 더 적합

프롬프트: "현재 듀얼 분석(Claude + Codex 동시 분석 → 결과 비교) 구조를 변경합니다.
Claude Agent가 레포를 클론해서 직접 소스코드를 읽고 수정한 후,
그 git diff를 Codex가 코드 리뷰하는 방식으로 바꿔주세요.
Codex 리뷰가 승인되면 PR 생성, 거절되면 수동 확인 요청."

4단계: 배포 및 운영 설정

프롬프트: "기존 AI Review Platform이 운영 중인 서버(EC2)에 AI AutoDebug도 배포합니다.
Nginx 리버스 프록시로 도메인별 라우팅하고, Docker Compose로 관리합니다.
배포 가이드 문서도 작성해주세요."

결과물: docs/DEPLOY.md + Dockerfile + docker-compose.yml + Nginx 설정 + 배포 스크립트

핵심 프롬프트: Claude Agent 크래시 분석

AI 분석의 핵심인 Claude Agent 프롬프트는 플랫폼별로 특화되어 있습니다:

당신은 Android(또는 iOS) 크래시 디버깅 전문가입니다.

다음 Crashlytics 크래시 정보를 분석하고, 이 레포지토리의 소스 코드를 직접 탐색하여
원인을 파악하고 수정 코드를 적용하세요.

## 크래시 정보
- 제목: {title}
- 스택트레이스: {stackTrace}
- 발생 횟수: {eventCount}회
- 영향 사용자: {userCount}명

## 분석 지침
1. 스택트레이스에서 앱 코드(com.myrealtrip.*)가 포함된 프레임을 중점 분석
2. 관련 소스 파일을 찾아 코드 컨텍스트를 파악
3. 크래시 원인을 명확히 식별
4. 수정 코드를 생성하되 최소 변경 원칙 준수
5. 사이드이펙트 검토

## 출력 형식
반드시 JSON 형태로 분석 결과를 반환하세요.

Claude Agent는 --max-turns 30, --max-budget-usd 10 설정으로 실행되며, 실제 클론된 레포 내에서 파일을 읽고 수정합니다.

핵심 프롬프트: Codex 코드 리뷰 게이트

당신은 시니어 모바일 개발자이자 코드 리뷰어입니다.

AI가 크래시를 분석하고 코드를 수정했습니다.
수정 내역(git diff)을 검토하여 안전한지 판단하세요.

## 검증 항목
✓ 수정이 근본 원인을 해결하는가?
✓ 새로운 버그나 회귀를 유발하지 않는가?
✓ 수정이 최소한이고 집중적인가?
✓ 스레드 안전성, 메모리, 성능 문제는 없는가?

## 출력: { approved, reason, concerns[], suggestions[], riskLevel }

구현 결과 — 기술 스택

영역

기술

프레임워크

Next.js 16 (App Router) + React 19 + TypeScript

ORM

Prisma 7 + PostgreSQL (pg 네이티브 드라이버)

인증

NextAuth v5 + GitHub OAuth (@myrealtrip.com 도메인 제한)

AI 분석

Claude Agent SDK

AI 리뷰

OpenAI Codex SDK

Git 자동화

Octokit + simple-git

크래시 데이터

Firebase Crashlytics (BigQuery Export)

알림

Slack Incoming Webhook (Block Kit)

UI

Tailwind CSS 4 + shadcn/ui + Radix UI

배포

Docker (Node 20 Alpine) + PM2 + AWS ECR/EC2

구현 결과 — 분석 파이프라인

 ① 큐 등록 (WAITING → PROCESSING)
 │
 ② 설정 로드 (AI 모델, Git 레포, 예산 등)
 │
 ③ 레포지토리 클론 (/tmp/autodebug-{uuid})
 │
 ④ 브랜치 생성 (fix/crash-{issueId})
 │
 ⑤ Claude Agent 실행
 │   ├─ 소스 코드 읽기 & 분석
 │   ├─ 근본 원인 파악
 │   └─ 코드 직접 수정 (파일 편집)
 │
 ⑥ 수정 불필요 판단?
 │   ├─ YES → NO_FIX_NEEDED 상태 → Slack 알림 → 종료
 │   └─ NO → 계속
 │
 ⑦ Codex 코드 리뷰
 │   ├─ git diff 기반 수정 내역 검토
 │   ├─ 리스크 레벨 평가 (LOW/MEDIUM/HIGH)
 │   └─ 승인/거절 결정
 │
 ⑧ 리뷰 결과
 │   ├─ REJECTED → REVIEW_REJECTED → Slack 알림 → 종료
 │   └─ APPROVED → 계속
 │
 ⑨ Commit & Push (origin에 브랜치 푸시)
 │
 ⑩ PR 생성 → 분석 완료 → Slack 알림

Google 검색 페이지의 스크린샷

결과와 배운 점

배운 점

1. AI Agent의 코드 수정 능력은 크래시 디버깅에 적합

Claude Agent에게 클론된 레포지토리 경로를 작업 디렉토리로 주면, 스택 트레이스에서 관련 파일을 찾아 코드 컨텍스트를 파악하고 수정까지 자율적으로 수행합니다. 단순 API 호출 방식보다 훨씬 정확한 분석이 가능합니다.

2. 듀얼 AI 구조: "분석 + 리뷰"가 "분석 vs 분석"보다 효과적

초기 설계는 Claude와 Codex가 독립적으로 분석한 후 결과를 비교하는 방식이었으나, 실제로는 Claude가 분석 & 수정하고 Codex가 리뷰하는 역할 분리 구조가 더 실용적이었습니다. 두 AI가 같은 일을 하면 비용만 2배이고 비교 로직이 복잡해지지만, 역할을 분리하면 각 AI의 강점을 살릴 수 있습니다.

시행착오

1. 초기 설계에서 파이프라인 구조 변경

처음에는 Claude + Codex 듀얼 분석 → 결과 머지 방식으로 설계했으나, Claude Agent가 레포를 직접 수정하는 방식이 API 기반 분석보다 월등히 정확해서 파이프라인을 "Claude 분석/수정 → Codex 리뷰" 구조로 전면 변경했습니다.

2. 빈 커밋/PR 방지

Claude Agent가 분석 후 "코드 수정이 불필요하다"고 판단하는 경우, 실제 파일 변경 없이 커밋/PR을 시도하면 에러가 발생했습니다. git diff로 실제 변경 사항을 확인하는 체크 로직과 NO_FIX_NEEDED 상태를 추가하여 해결했습니다.

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요