MemoryLake
모든 글로 돌아가기
Tutorial2026년 8월 3일·7 분 소요

컨텍스트 손실 없이 Replit에서 Claude Code로 마이그레이션하는 방법 (2026)

프로토타입이 작동했습니다. Replit에서 앱을 설명하고, 에이전트가 이를 빌드하고 배포하는 것을 지켜본 뒤, 세 사람에게 보여주었습니다. 이제 이것은 테스트, CI, 팀이 검토할 수 있는 리포지토리, 직접 제어하는 터미널을 갖춘 진짜 소프트웨어가 되어야 합니다. 그래서 Claude Code로 이동합니다.

코드는 약 10분 만에 이동합니다. 하지만 빌드하는 동안 배운 모든 것은 이동하지 않습니다.

결론부터 말씀드리자면, Replit의 Git 연동을 통해 파일을 GitHub로 깔끔하게 가져올 수 있으며, Claude Code는 거기서부터 파일을 이어받습니다. 내보낼 방법이 없는 것은 바로 '추론'입니다. 왜 웹훅이 세 번 재시도하는지, 어떤 스키마 변경이 프로덕션을 망가뜨렸는지, 에이전트가 최종 배포된 방식 이전에 시도했던 두 가지 접근 방식은 무엇이었는지 등입니다. 이 모든 것은 Replit 채팅에 남아 있었고, 채팅은 이식 가능한 결과물이 아닙니다. 이 가이드에서는 기계적 마이그레이션, 지식 마이그레이션, 그리고 도구를 바꿀 때마다 지식 마이그레이션을 반복하지 않는 방법을 다룹니다.

이 이동이 컨텍스트를 잃는 이유

Replit의 가치는 환경에 있으며, 그 환경은 뒤에 남겨집니다

Replit은 아이디어와 배포된 URL 사이의 거리를 좁히는 데 가장 강력합니다. 런타임, 데이터베이스, 보안 비밀(secrets), 배포 대상이 모두 관리됩니다. 로컬 리포지토리와 터미널 에이전트로 이동하면서 여러분이 의도적으로 포기하는 것이 바로 이것입니다. 제어권을 원하기 때문이죠. 하지만 프로젝트의 실제 동작 중 상당 부분은 해당 관리형 환경에 의해 정의되었으며, 이러한 가정들은 내보내는 코드의 그 어디에도 기록되어 있지 않습니다.

결정은 리포지토리가 아닌 채팅에 남습니다

프로토타입이 어떻게 빌드되었는지 살펴보세요. 의도를 입력하면 에이전트가 코드를 생성하고, 이를 수정하면 그 수정 사항이 메시지가 되었습니다. 리포지토리는 최종 상태를 기록합니다. 채팅은 그 이유를 기록합니다. 리포지토리를 이동하면 무엇(what)은 유지되지만, 로그아웃하려는 플랫폼에 왜(why)는 남겨두게 됩니다.

Claude Code 역시 빈 상태로 시작합니다

이것은 대부분의 마이그레이션 가이드가 생략하는 부분입니다. Claude Code는 각 세션을 히스토리 없이 시작합니다. 프로젝트 루트의 CLAUDE.md와 사용자 수준의 ~/.claude/CLAUDE.md를 읽고, MCP를 통해 연결한 모든 것에 액세스할 수 있지만, Claude Code가 프로젝트 컨텍스트를 잊어버리는 이유에서 설명한 것처럼 세션이 종료되면 누적된 기억은 사라집니다. 컨텍스트가 머무는 위치를 바꾸지 않고 도구만 전환하는 것은 문제를 다른 곳으로 옮기는 것에 불과합니다.

수동 마이그레이션

1단계: 코드 가져오기

가능하면 zip 파일 대신 Replit 자체의 Git 경로를 사용하세요:

  1. Repl에서 Version Control (Git) 패널을 엽니다.
  2. GitHub 계정을 연결하고 원격 리포지토리를 생성합니다.
  3. 푸시(Push)합니다. 그 이후부터는 양방향 동기화가 가능해집니다. Replit의 변경 사항을 푸시할 수 있고, GitHub의 변경 사항을 풀(Pull)할 수 있습니다.

연결이 제대로 작동하지 않으면 Repl을 .zip 파일로 다운로드하여 새 리포지토리에 수동으로 푸시하세요. 그런 다음 로컬에 클론하고 해당 디렉터리에서 Claude Code를 실행합니다. 프로젝트 히스토리를 가져오기 위한 공식 Anthropic 마이그레이션 명령은 없습니다. Claude Code 프로젝트를 재배치하기 위한 몇 가지 커뮤니티 도구가 존재하지만, Replit 내보내기의 경우 일반 Git이 전부입니다.

탭을 닫기 전에 환경이 대신 처리해 주던 작업들을 캡처해 두세요. 환경 변수 및 보안 비밀 이름(값은 제외), 데이터베이스 및 연결 패턴, 배포 대상, 예약된 작업(scheduled jobs), 그리고 Replit이 암묵적으로 처리하던 포트나 빌드 구성 등입니다. 이것들이 로컬 머신에서 가장 먼저 깨지는 가정들입니다.

2단계: CLAUDE.md에서 컨텍스트 재구축하기

이제 마이그레이션이 실제로 성과를 거둘지 결정하는 단계입니다. Replit 채팅 기록을 열고 지난 2주 동안의 내용을 읽으며 한 가지 질문을 떠올려 보세요. 내가 두 번 이상 설명해야 했던 것은 무엇인가? 그 반복이 바로 여러분의 지식 인벤토리입니다.

이를 CLAUDE.md에 다음 세 가지 그룹으로 작성하세요:

  • 프로젝트 형태(Project shape) — 서비스가 무엇인지, 데이터 모델은 어떻게 생겼는지, 무엇이 더 이상 사용되지 않는지(deprecated), Replit이 더 이상 처리하지 않는 상황에서 배포 시나리오는 어떻게 되는지.
  • 이유가 포함된 결정(Decisions with reasons) — 단순히 "멱등성 키(idempotency keys) 사용"이 아니라 "제공업체가 재시도하여 테스트 중 두 번 중복 결제되었으므로 웹훅에 멱등성 키 적용"과 같이 작성합니다.
  • 함정(Traps) — 백필(backfill) 전에 실행해야 하는 마이그레이션, 실패 시 200을 반환하는 엔드포인트, 부하가 걸릴 때 불안정한(flaky) 테스트 등.

개인적인 선호 사항은 ~/.claude/CLAUDE.md에 보관하고, 프로젝트 관련 사실은 리포지토리 파일에 보관하여 팀원들이 여러분의 개인적 습관 없이 프로젝트 정보만 물려받을 수 있도록 하세요.

이것은 아무것도 없이 시작하는 것에 비해 확실한 개선입니다. 하지만 한계도 있습니다. 마크다운 파일은 브리핑 자료일 뿐, 메모리가 아닙니다. 힘든 디버깅 세션이 끝난 후 아무도 이를 업데이트하지 않으며, 세션마다 토큰 비용을 소모할 때까지 크기가 커지고, 장애 검토에 사용하는 어시스턴트나 다음 달에 더 저렴한 모델로 라우팅할 에이전트에는 그 어떤 정보도 전달되지 않습니다.

더 나은 방법: 도구에 종속되지 않는 단일 메모리 레이어

이동 과정에서 실제로 살아남은 것이 무엇인지 주목해 보세요. 바로 파일입니다. CLAUDE.md는 다음 이동에서도 살아남을 것이며, 도구 외부에 보관하는 다른 모든 것도 마찬가지입니다. 이것이 바로 프로젝트 지식을 현재 사용 중인 에이전트 내부가 아닌 메모리 레이어에 두어야 하는 이유입니다. MemoryLake에 한 번 저장해 두면, Claude Code가 MCP를 통해 이를 읽을 수 있으며, 나중에 도입할 다른 도구들도 마찬가지로 읽을 수 있습니다.

1단계: API 키 생성

키를 생성하고 약 30초 만에 첫 번째 요청을 완료하세요.

MemoryLake API 키 생성
MemoryLake API 키 생성

2단계: 첫 번째 메모리 업로드

프로젝트의 컨텍스트를 담고 있는 문서, 이미지, 파일을 업로드하세요. 방금 작성한 CLAUDE.md, 1단계의 환경 인벤토리, 아키텍처 노트, 프로토타입 단계의 장애 보고서, API 사양서 등이 해당됩니다.

MemoryLake에 첫 번째 메모리 업로드
MemoryLake에 첫 번째 메모리 업로드

3단계: AI 및 에이전트 연결

Claude, Codex, OpenClaw 및 기타 에이전트가 MCP 또는 API를 통해 해당 메모리에 액세스할 수 있도록 하세요. 클라이언트별 단계는 Claude Code에 메모리를 추가하는 방법을 참조하세요. 그러면 프로젝트가 이미 로드된 상태로 새 세션이 시작되며, 다음 도구 변경 시 재구축 비용 대신 연결 비용만 발생합니다. 동일한 패턴이 다른 코딩 에이전트 이동에도 적용됩니다: Cursor에서 Claude Code로 마이그레이션GitHub Copilot에서 Claude Code로 마이그레이션.

MCP를 통해 AI 및 에이전트 연결
MCP를 통해 AI 및 에이전트 연결

이동에 드는 비용과 절약되는 비용

비용을 솔직하게 계산해 봅시다. Git 내보내기 및 로컬 설정: 1시간 미만. Replit이 처리하던 환경 가정을 복구하는 작업: 반나절(대부분은 실패 시 무언가 빠졌음을 발견하는 데 소요됨). 지식 인벤토리를 CLAUDE.md에 작성하는 작업: 또 다른 반나절(그리고 이 부분만이 복리로 누적되는 가치를 가집니다).

그다음으로 피할 수 있는 반복 비용이 있습니다. 고정된 프로젝트 컨텍스트가 2,000 토큰이고 세션과 에이전트 전반에 걸쳐 하루에 20번씩 다시 언급된다면, 이는 한 달에 약 120만 토큰을 반복하는 데 낭비하는 셈이며, 세션당 4~5분의 재브리핑 시간이 추가로 소요됩니다. 마이그레이션은 이를 해결할 가장 저렴한 타이밍입니다. 이미 재구축 비용을 한 번 지불하고 있기 때문입니다. 선택은 다음 도구와 함께 사라질 파일로 재구축할 것인지, 아니면 사라지지 않을 레이어로 재구축할 것인지뿐입니다.

전환을 위한 모범 사례

코드뿐만 아니라 환경도 내보내기

프로토타입은 관리형 환경에서 실행되었습니다. 떠나기 전에 보안 비밀(secrets)의 이름, 데이터베이스 토폴로지, 크론 작업(cron jobs), 빌드 단계를 적어두세요. 이것이 "Replit에서는 잘 작동했습니다" 버그의 가장 흔한 원인이며, 20분만 투자하면 완전히 예방할 수 있습니다.

채팅 로그가 아닌 결론을 마이그레이션하기

Replit 기록을 CLAUDE.md에 그대로 붙여넣지 마세요. 결정 사항(선택, 이유, 날짜)을 추출하여 저장하세요. 결론은 검색이 잘 되지만, 대화 기록은 핵심 신호를 묻어버리고 토큰 비용만 발생시킵니다.

잘 작동한다면 Replit에서 프로토타이핑을 계속하세요

많은 팀이 아이디어를 빠르게 검증하기 위해 Replit을 계속 사용하고, 프로덕션 강화(hardening)를 위해 Claude Code를 사용합니다. 이러한 분할은 양쪽 모두 동일한 프로젝트 메모리를 읽을 때만 원활하게 작동합니다. 그렇지 않으면 서로 다른 두 개의 진실 버전을 유지하게 되고, 동일한 함정을 두 번씩 다시 발견하게 됩니다.

결론

Replit에서 Claude Code로 이동하는 것은 하나의 이름을 공유하는 두 개의 마이그레이션입니다. 첫 번째는 기계적인 작업입니다. Git 패널을 연결하고, GitHub에 푸시하고, 클론하는 것으로 1시간 안에 끝납니다. 두 번째는 비용이 많이 드는 작업입니다. Replit이 조용히 처리하고 있던 환경 가정들과 에이전트 채팅에만 존재했던 추론 과정입니다.

두 가지 모두를 단 한 번, 의도적으로 재구축하세요. 하지만 지식은 에디터 외부의 무언가로 재구축해야 합니다. 오늘 이동하는 도구가 여러분이 이동할 마지막 도구는 아니기 때문입니다. 프로젝트 메모리가 에이전트가 읽는 레이어에 존재할 때, "마이그레이션"은 "모든 것을 다시 설명하는 것"을 의미하지 않고 "새로운 클라이언트가 동일한 소스를 가리키도록 하는 것"을 의미하게 됩니다.

자주 묻는 질문

Replit 프로젝트를 리포지토리로 가져오려면 어떻게 해야 하나요?

Repl에서 Version Control (Git) 패널을 열고, GitHub 계정을 연결하고, 원격 리포지토리를 생성한 뒤 푸시하세요. 그러면 이후에 양방향 동기화가 가능해집니다. 연결에 실패하면 Repl을 .zip 파일로 다운로드하여 새 리포지토리에 수동으로 푸시한 다음, Claude Code를 위해 로컬에 클론하세요.

Replit 에이전트 채팅 기록을 Claude Code로 내보낼 수 있나요?

Claude Code가 사용할 수 있는 형태로는 불가능합니다. 원본 대화 기록조차도 잘못된 형태일 것입니다. Claude Code는 다른 도구의 대화 로그가 아닌 지침 파일과 연결된 메모리를 읽습니다. 대신 지속 가능한 결정 사항들을 수동으로 추출하여 저장하세요.

Replit의 내장 컨텍스트에 해당하는 Claude Code의 기능은 무엇인가요?

프로젝트 루트의 CLAUDE.md, 개인 선호 사항을 위한 ~/.claude/CLAUDE.md, 그리고 MCP를 통해 연결하는 모든 것입니다. 오래된 지침 파일은 이를 읽는 모든 세션을 잘못된 방향으로 인도하므로, 리포지토리 파일을 코드와 동일한 검토 규율로 관리하세요.

Replit을 떠난 후 가장 자주 깨지는 것은 무엇인가요?

환경 가정들입니다. 플랫폼이 관리하던 보안 비밀(secrets), 데이터베이스 연결 패턴, 포트, 빌드 명령, 예약된 작업(scheduled jobs) 등입니다. 실패를 겪으며 하나씩 발견하기보다는 마이그레이션을 마치기 전에 인벤토리를 작성해 두세요.

Replit 사용을 완전히 중단해야 하나요?

꼭 그렇지는 않습니다. Replit에서의 빠른 검증과 Claude Code에서의 프로덕션 작업은 합리적인 역할 분담입니다. 다만 프로젝트의 지식을 공유 메모리 레이어에 보관하여 양쪽 모두 동일한 사실을 바탕으로 작업할 수 있도록 하세요.