이 시리즈의 마지막 글입니다. Gemini 원격 코딩 어시스턴트는 “채팅으로 요청하면 관리자 검토 없이 바로 라이브 봇 코드가 고쳐진다"는 구조입니다. 편리하지만 동시에 가장 위험할 수 있는 구조이기도 합니다. 이번 글은 그 위험을 어떻게 관리했는지에 대한 기록입니다.

왜 안전장치가 특히 중요했나

관리자가 매번 코드를 리뷰하고 승인하는 구조였다면 위험 부담이 훨씬 적었을 겁니다. 하지만 채팅으로 요청하면 곧바로 적용되는 구조를 원했기 때문에, “AI가 실수로 코드를 망가뜨리면 어떻게 할 것인가"라는 질문에 관리자 개입 없이도 답할 수 있는 장치가 필요했습니다.

안전장치 파이프라인

운영 코드와 분리된 별도 저장소

첫 번째 장치는 위치 분리입니다. 실제로 봇이 돌고 있는 디렉터리에는 비밀 키와 DB 파일들이 함께 섞여 있어서, 그 디렉터리를 그대로 git으로 관리하면 실수로 민감한 정보가 커밋되거나, git 관련 작업 중에 운영 중인 파일이 손상될 위험이 있습니다. 그래서 AI가 실제로 편집하는 곳은 운영 디렉터리와는 별도의 위치에 마련한 git 저장소입니다. 이 저장소에서 편집이 끝나고 검증까지 통과한 뒤에야 운영 디렉터리로 반영됩니다.

편집 → 커밋 → 검증 → 배포, 실패 시 자동 롤백

전체 흐름은 이렇습니다.

  1. AI가 별도 git 저장소에서 요청받은 내용대로 코드를 수정합니다.
  2. 수정 즉시 자동으로 커밋합니다 — 이 시점의 상태가 그대로 git 히스토리에 남습니다.
  3. 문법 검사를 실행합니다.
  4. 통과하면 운영 디렉터리로 배포하고 봇을 재시작합니다.
  5. 문법 검사든 배포 이후 동작이든 실패가 감지되면, git 히스토리를 이용해 바로 직전의 정상 상태로 자동 롤백합니다.

핵심은 “실패했을 때 관리자가 직접 수동으로 되돌리지 않아도 된다"는 점입니다. 모든 변경이 커밋으로 기록되기 때문에, 문제가 생기면 그 직전 커밋으로 되돌리기만 하면 됩니다.

부수적으로 해결된 문제: 토큰 사용량

이 파이프라인을 만드는 과정에서 예상치 못한 문제도 하나 겪었습니다. 초기에는 메시지 하나가 들어올 때마다 코드 파일 9개 전체(대략 10만 토큰)를 통째로 AI에 넘기고 있었는데, 이러다 보니 몇 번 대화하지 않아도 금방 무료 API의 분당 토큰 한도(약 25만 토큰)에 걸려버렸습니다. 해결책은 AI가 편집하는 디렉터리 자체를 진짜 git 저장소로 만들어서, aider의 repo-map 기능(코드베이스 전체가 아니라 관련 있는 파일만 골라 컨텍스트에 포함하는 기능)을 활용하는 것이었습니다. 이 변경만으로 토큰 사용량이 대략 10분의 1 수준으로 줄어들었습니다.

시리즈를 마치며

루팅부터 시작해서 서버 환경, 챗봇 포팅, 각종 버그, 마지막으로 AI가 직접 코드를 고치는 구조까지 — 이 시리즈는 결국 “제한된 하드웨어와 불안정한 환경 위에서, 그래도 안정적으로 돌아가게 만드는 방법을 하나씩 찾아나간” 기록이었습니다. 이 블로그의 다른 시리즈(유휴 휴대폰 서버 구축기)와 비슷한 결의 이야기지만, 루팅된 기기 특유의 제약과 가능성이 만든 또 다른 종류의 삽질이었다고 생각합니다.

핵심 요약

🤖 이 포스팅은 AI의 도움을 받아 작성되었습니다.