이 시리즈의 마지막 글입니다. Gemini 원격 코딩 어시스턴트는 “채팅으로 요청하면 관리자 검토 없이 바로 라이브 봇 코드가 고쳐진다"는 구조입니다. 편리하지만 동시에 가장 위험할 수 있는 구조이기도 합니다. 이번 글은 그 위험을 어떻게 관리했는지에 대한 기록입니다.
왜 안전장치가 특히 중요했나
관리자가 매번 코드를 리뷰하고 승인하는 구조였다면 위험 부담이 훨씬 적었을 겁니다. 하지만 채팅으로 요청하면 곧바로 적용되는 구조를 원했기 때문에, “AI가 실수로 코드를 망가뜨리면 어떻게 할 것인가"라는 질문에 관리자 개입 없이도 답할 수 있는 장치가 필요했습니다.

운영 코드와 분리된 별도 저장소
첫 번째 장치는 위치 분리입니다. 실제로 봇이 돌고 있는 디렉터리에는 비밀 키와 DB 파일들이 함께 섞여 있어서, 그 디렉터리를 그대로 git으로 관리하면 실수로 민감한 정보가 커밋되거나, git 관련 작업 중에 운영 중인 파일이 손상될 위험이 있습니다. 그래서 AI가 실제로 편집하는 곳은 운영 디렉터리와는 별도의 위치에 마련한 git 저장소입니다. 이 저장소에서 편집이 끝나고 검증까지 통과한 뒤에야 운영 디렉터리로 반영됩니다.
편집 → 커밋 → 검증 → 배포, 실패 시 자동 롤백
전체 흐름은 이렇습니다.
- AI가 별도 git 저장소에서 요청받은 내용대로 코드를 수정합니다.
- 수정 즉시 자동으로 커밋합니다 — 이 시점의 상태가 그대로 git 히스토리에 남습니다.
- 문법 검사를 실행합니다.
- 통과하면 운영 디렉터리로 배포하고 봇을 재시작합니다.
- 문법 검사든 배포 이후 동작이든 실패가 감지되면, git 히스토리를 이용해 바로 직전의 정상 상태로 자동 롤백합니다.
핵심은 “실패했을 때 관리자가 직접 수동으로 되돌리지 않아도 된다"는 점입니다. 모든 변경이 커밋으로 기록되기 때문에, 문제가 생기면 그 직전 커밋으로 되돌리기만 하면 됩니다.
부수적으로 해결된 문제: 토큰 사용량
이 파이프라인을 만드는 과정에서 예상치 못한 문제도 하나 겪었습니다. 초기에는 메시지 하나가 들어올 때마다 코드 파일 9개 전체(대략 10만 토큰)를 통째로 AI에 넘기고 있었는데, 이러다 보니 몇 번 대화하지 않아도 금방 무료 API의 분당 토큰 한도(약 25만 토큰)에 걸려버렸습니다. 해결책은 AI가 편집하는 디렉터리 자체를 진짜 git 저장소로 만들어서, aider의 repo-map 기능(코드베이스 전체가 아니라 관련 있는 파일만 골라 컨텍스트에 포함하는 기능)을 활용하는 것이었습니다. 이 변경만으로 토큰 사용량이 대략 10분의 1 수준으로 줄어들었습니다.
시리즈를 마치며
루팅부터 시작해서 서버 환경, 챗봇 포팅, 각종 버그, 마지막으로 AI가 직접 코드를 고치는 구조까지 — 이 시리즈는 결국 “제한된 하드웨어와 불안정한 환경 위에서, 그래도 안정적으로 돌아가게 만드는 방법을 하나씩 찾아나간” 기록이었습니다. 이 블로그의 다른 시리즈(유휴 휴대폰 서버 구축기)와 비슷한 결의 이야기지만, 루팅된 기기 특유의 제약과 가능성이 만든 또 다른 종류의 삽질이었다고 생각합니다.

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


💬 댓글