봇 코드를 고치고 싶을 때마다 매번 이 S9에 직접 붙어서 작업하기는 번거로웠습니다. 그래서 브라우저로 접속해서 자연어로 요청하면 실제로 코드를 고쳐주는 원격 코딩 어시스턴트를 만들게 됐습니다. 이번 글은 그 구축 과정입니다.

1차 버전: 웹 터미널

처음 만든 버전은 단순했습니다. ttyd로 웹 터미널을 띄워서, 브라우저에서 이 폰의 셸에 직접 접속할 수 있게 했습니다. 터미널에서 평소처럼 AI 코딩 도구를 실행하면 되는 구조였습니다. 동작은 했지만, 실제로 써보니 터미널 UI 자체가 진입장벽이었습니다 — 매번 정확한 명령어를 기억해서 입력해야 했고, 모바일에서 터미널을 조작하는 것도 불편했습니다.

요청: 터미널 말고 채팅으로

터미널 대신 카카오톡처럼 메시지를 주고받는 채팅 UI로 만드는 쪽으로 방향을 바꿨습니다. 터미널의 자유도를 포기하는 대신, “메시지를 보내면 AI가 알아서 처리한다"는 훨씬 단순한 경험을 만드는 쪽으로 다시 설계했습니다.

구축 과정

커스텀 채팅 서버 + aider

Gemini 와 연결된 URL로 접속하면 채팅창이 뜨고, 메시지를 보내면 그 내용이 백엔드로 전달되어 aider CLI(AI가 실제 코드베이스를 읽고 수정하는 오픈소스 도구)를 거쳐 Gemini 모델을 호출합니다. 응답으로 돌아온 코드 수정 사항은 곧바로 적용되고, 문법 검사를 통과하면 봇이 재시작되어 변경 사항이 실제로 반영됩니다. 채팅창에 메시지 하나 보내는 것만으로 “요청 → 코드 수정 → 검증 → 배포"까지 이어지는 구조입니다.

설치 과정에서 겪은 삽질

이 과정에서 순탄하지만은 않았습니다. 이 환경의 기본 파이썬이 3.14로 꽤 최신이라, aider가 의존하는 일부 오래된 라이브러리들이 설치 단계에서 실패하는 문제를 겪었습니다. 이 부분은 다음 글에서 따로 자세히 다루겠습니다. 결론만 말하면 공식 설치 스크립트가 내부적으로 격리된 파이썬 환경을 따로 관리해주는 방식으로 우회했습니다.

돌아보며

“터미널 대신 채팅으로"라는 요청은 겉보기엔 단순한 UI 변경처럼 보였지만, 실제로는 자유도가 높은 셸 접근을 포기하고 그만큼 백엔드에서 더 많은 판단(어떤 파일을 건드릴지, 검증을 어떻게 할지)을 대신 해줘야 하는 구조 전환이었습니다. 이렇게 AI가 실제 운영 코드를 직접 고치는 구조를 만들다 보니, 자연스럽게 “잘못 고치면 어떻게 하나"라는 안전장치 문제가 따라왔는데, 그 이야기는 이 시리즈의 마지막 글에서 다루겠습니다.

핵심 요약

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