전 Facebook 엔지니어 Christopher Chedeau (Vjeux)가 Pokemon Showdown 배틀 엔진(약 10만 줄 TypeScript)을 Claude Code를 활용해 Rust로 포팅한 실험

프로젝트 목표

  • Pokemon 배틀 AI 학습용 고속 오라클(참조 시스템) 구축
  • 기존 TypeScript 구현 → 너무 느림 (수백만 배틀 시뮬레이션 불가능)
  • 목표 언어: Rust (고성능) → 하지만 본인 Rust 경험 제로

주요 성과

  • 1개월 (실제 작업 약 2~4주) 만에 약 10만 줄 포팅 완료
  • 약 5,000 커밋 생성
  • 실행 속도 3.5배 향상
  • 차분 테스트 결과 일치율 99.96% (200만 랜덤 배틀 기준)
    • 나머지 0.04%는 원본 TS 코드의 버그로 추정

성공의 핵심 전략

  • 차분 테스트 (differential testing) 도입
    • TS 원본 vs Rust 버전 동시 실행 → 결과 비교
    • 불일치 사례 → Claude에게 로그 보여주며 수정 지시
  • Rust 문법 거의 모르는 상태에서도 검증 가능

Claude가 겪은 주요 어려움

  • 개별 파일 포팅은 잘함 ↔ 파일 간 통합에서 빈번한 문제 발생
    • 예: 동일 개념(‘move’)을 서로 다른 구조체로 정의
  • 컨텍스트 윈도우 한계 → 중간 요약 과정에서 중요 정보 손실
  • “더 좋게” 만들려는 경향 → 명시적 “라인 바이 라인 포팅” 지시 무시하고 리팩토링 시도 → 버그 양산
  • 최적화 요청 → 계획은 훌륭해 보였으나 실제 성능 개선 거의 없음 (일부는 오히려 느려짐)

특이한 워크플로우 해킹

  • Claude의 사용자 승인 요청 자동화
    • AppleScript로 몇 초마다 Enter 자동 입력 → 24시간 무인 실행
    • (보안 위험 있지만, 일회성 오라클 목적이라 감수)

AI 코딩 도구의 현주소 (평가)

  • 기계적 변환·대량 포팅 작업 → 매우 강력
  • 성능 최적화, 아키텍처 설계 등 고차원 작업 → 아직 부족
  • Hacker News 논쟁
    • 회의론: 유지보수 불가능, “컴파일만 되는” 코드
    • 옹호론: 차분 테스트로 충분히 신뢰 가능 + 인간 대비 시간 단축 극대

실무 적용 교훈 3가지

  • 철저한 자동화된 테스트 체계 필수 (차분 테스트 없으면 실패 확률 매우 높음)
  • 명확하고 좁은 범위의 지시가 가장 잘 먹힘 (“라인 바이 라인 포팅” O vs “개선해줘” X)
  • AI는 도구일 뿐 → 개발자가 여전히 문제 진단·질문 설계·방향성 유지해야 함

→ Rust 전혀 모르는 사람이 10만 줄 규모 코드를 한 달 만에 실용 수준으로 옮긴 사례 → AI 코딩의 실용성 입증 사례이면서 동시에 한계도 명확히 드러낸 대표적인 실험

https://aisparkup.com/posts/8701