구형에서 신형 메신저봇R로 복귀(?) 성공 - 부제 : 삽질은 계속된다.

메신저봇 개발의 함정: "성공했다"라는 착각

지난번 글에서 구형 메신저봇R로 우여곡절 끝에 성공했다고 뿌듯해했잖아요?

스터디장님이 떠먹여주는 밥을 구형 환경에 맞게 잘 바꿨다고, 드디어 첫 숟가락을 떴다고 생각했는데...

아니더라고요. 😭

막상 메신저봇을 실제 써보니 치명적인 문제가 하나 있었어요. 그것도 제가 구현하고자 한 다중 대화방에서 동작하는 봇 구현에 필수적인 핵심 기능이 망가지는 정말 골치 아픈 녀석이었습니다.

메신저봇 디버깅의 핵심: Debug 모드 vs 실제 실행 차이점 분석

제가 구현하고자 했던 핵심 기능은 대화방별로 구분해서 대화 내용을 저장하고 분석 관리하는 다중 대화방 봇이었어요. 그런데 구형 메신저봇R에서 치명적인 메신저봇 오류를 발견했습니다.

Debug 모드에서는:

  • room 정보: "DEBUG ROOM"

  • Author 정보: "DEBUG SENDER" 로 정확히 구분

실제 실행에서는:

  • room 정보: "잔마왕" (Author와 같은 정보)

  • Author 정보: "잔마왕"

이게 뭔 소리냐고요?
쉽게 말해서 다중 대화방 봇 기능이 완전히 무너진다는 뜻이에요!
모든 대화방이 같은 것으로 인식되니까 대화방별 구분도 불가능하고, 같은 사람의 대화끼리만 모으는 현상이 발생하는 거죠.

코드상의 문제가 있나? 하는 생각으로 뭐라고 말을 하든 무조건 답변을 하게 만들고, 답변에 room 정보와 Author 정보를 답변하게 만들어서 테스트 한 결과....

메신저봇R 자체에 문제가 있음을 확인했습니다.

한국어 문자 메시지의 스크린 샷

반면 신버전 메신저봇R로 테스트해 본 결과 신버전 메신저봇R에서는 room정보와 Author정보를 명확히 구분함을 알 수 있었습니다.

한국 문자 메시지 앱의 스크린 샷

메신저봇R 구형 vs 신형 버전 비교: 선택의 기준

Debug 모드에서는 멀쩡하게 작동하는데 실제로는 망가진다니...
마치 시험 문제는 다 맞게 풀었는데 실전에서는 틀린 것 같은 기분이었어요.

메신저봇 디버깅을 아무리 해봐도 구형 버전의 근본적 한계였습니다.
결국 한 가지 결론에 도달했죠.

"신형 메신저봇R이 아니면 다중 대화방 봇 구현이 불가능하다!"

메신저봇R 신형 버전 재도전: 문제 해결 방식의 전환

포기했던 신형 메신저봇R 재고하기

원래 제가 신형 메신저봇R을 선택하지 않았던 이유는 실행하고 약 2시간쯤 지나면 먹통이 되는 문제 때문이었어요.

그런데 생각해보니... 🤔

"아예 실행이 안 되는 게 아니라, 2시간은 작동한다는 얘기잖아?"

관점을 바꿔보니 완전히 다른 문제였어요.
실행하는 도중 어딘가에서 충돌이 발생한다는 뜻이니까, 충돌 원인만 찾아서 회피하면 정상 작동하지 않을까?

다시 신형 메신저봇R 설치에 도전해보기로 했습니다!

VPN 환경에서 메신저봇 최적화: 충돌 원인 분석과 해결책

분명 어디선가 충돌을 일으킬텐데.. 그게 어디인지는 알수가 없더라고요.
그래서 발생 가능하다고 생각되는 모든 가능성을 최대한의 상상력(?)을 발휘하여 뽑아봤습니다.

중국에서 근무하다 보니 VPN을 항상 켜야 하는 건 당연한 상황이에요.
그런데 VPN 환경 앱 최적화를 위한 설정을 보니 VPN이 적용될 앱을 선택하게 되어 있더라고요.

혹시 메신저봇이 VPN 적용 대상에서 누락되지는 않았을까?

VPN 없이는 카카오톡 자체가 작동하지 않으니까, 메신저봇 개발 환경도 같은 네트워크 환경을 공유해야 할 것 같았어요.

메신저봇 권한 설정 최적화: 충돌 방지 방법

메신저봇 만들기를 위해 가능한 한 많은 권한을 부여했었는데, 여기서 충돌이 발생할 가능성들도 추가로 생각해봤어요:

1. 위치 권한 + VPN의 혼란

  • 위치 권한을 살려둔 상태에서 VPN에 따르면 한국으로 인식

  • GPS로는 중국, VPN으로는 한국 → 위치 정보 혼란 가능성

2. 앱 위에 쓰기 권한의 간섭

  • 앱 위에 쓰기를 허용하는 설정

  • VPN과 서로 간섭했을 가능성

3. 배터리 최적화 설정

  • 배터리 사용 옵션이 "제한 없음"이 아니라 "최적화"

  • 스마트폰이 슬립 모드로 빠졌을 때 메신저봇이 끊어지는 문제

잔여 프로세스 문제

이전 구형 버전의 코드를 완전히 죽이지 않아서 발생한 문제일 가능성도 있었어요.
메신저봇이 자꾸 동작하지 않는 코드를 실행하려고 하다가 실패하면서 충돌할 수도 있잖아요.

전면적 해결 시도: 모든 가능성에 베팅

"어느 조건이 문제인지 모르니 일단, 다 설정을 바꿔보자!"

체계적인 메신저봇 디버깅을 위해 상기 내용을 모두 적용해봤어요:

VPN 설정: 메신저봇을 VPN 적용 앱 목록에 추가
위치 권한: 권한 해제
앱 위에 쓰기 권한: 권한 해제
배터리 설정: "제한 없음"으로 변경
이전 버전: 완전 삭제 후 재부팅

드디어 성공! 🎉

그 결과... 이번에는 먹통이 되는 현상이 완전히 사라졌어요!

2시간이 지나도, 4시간이 지나도, 심지어 하루 종일 켜둬도 정상 작동하더라고요.
정확히 어느 설정이 핵심이었는지는 모르지만, 문제를 해결했다는 게 중요했죠!

본격 개발: 스터디장님 코드의 진짜 활용

기본 기능 정상 작동 확인

이제 스터디장님이 만들어주신 소스를 적극 활용할 차례였어요.
다중 대화방 봇 환경에서 필요한 기본 기능들이 제대로 돌아가는지 확인했습니다.

  • ✅ 대화 내용 저장

  • ✅ 키워드 검색

  • ✅ 대화 통계

  • ✅ 데이터베이스 연동

모든 게 완벽하게 작동했어요! 역시 스터디장님의 코드는 믿을 만했습니다.

새로운 도전: 단일 대화방에서 다중 대화방으로

하지만 스터디장님의 코드는 하나의 대화방 전용으로 작동하게 되어 있었어요.
저는 여러 대화방에서 활용하고 싶었거든요.

필요한 수정 사항들:

  1. 허용된 대화방 리스트에 따라 동작

  2. 대화방별 청킹 시스템 (10개씩 나눠서 저장)

  3. 검색 기능을 현재 대화방으로 제한

  4. 통계 기능을 현재 대화방으로 제한

  5. 더미데이터 생성과 초기화 명령어 삭제

Claude Code를 활용한 다중 대화방 봇 개발 과정

AI 개발 도구 활용 시 토큰 관리 전략

이런 다중 대화방 봇 수정 작업에도 역시 Claude Code를 활용했어요.
코드 수정 자체는 정말 어렵지 않게, 수월하게 진행했는데...
다만 Claude Code 토큰 사용량 제한에 걸릴까 봐 조마조마했습니다. 😰

"너무 많이 쓰다가 한도 걸리면 어떡하지?" 하는 생각에 Claude Code 활용법을 더 효율적으로 하려고 노력했어요.

메신저봇 개발에서 AI 협업의 현실: 장점과 한계

쉬웠던 부분: Claude Code가 찰떡같이 알아듣고 수정해줘서 정말 좋았어요! 복잡한 다중 대화방 로직도 설명만 해주면 바로 코드로 구현해주더라고요.

어려웠던 부분: 개선이 필요한 코드가 한 번에 떠오르지 않았다는 점이에요.

처음에는 "검색 기능만 수정하면 되겠지" 싶었는데, 막상 적용하고 대화를 쌓아보니 "청킹"에 대한 내용도 고쳐야 함을 뒤늦게 깨달았어요.

그 외에도 여러 가지 수정사항들은 미리 발견하기 어렵고, 실제 사용해보면서야 비로소 나오는 것들이 많더라고요.

개발의 진실: "완성"은 없고 "개선"만 있을 뿐

연쇄적으로 발견되는 수정 사항들

메신저봇 만들기 과정에서 깨달은 건, 한 부분을 고치면 연쇄적으로 다른 부분들도 수정해야 한다는 점이에요:

1단계: 검색 기능 수정
2단계: 어? 청킹도 대화방별로 해야겠네?
3단계: 그럼 통계도 대화방별로 분리해야지
4단계: 더미데이터는 이제 필요 없으니까 삭제
5단계: 또 다른 문제 발견... (계속 반복 되겠죠?)

실전의 중요성

Debug 모드에서는 보이지 않았던 문제들이 실제 사용 환경에서는 속속 드러났어요. 이게 바로 메신저봇 디버깅의 어려움이자 재미있는 점인 것 같아요.
(메신저봇 뿐만 아니라 모든 기능 개발이 그러할 것 같습니다.)

"테스트는 완벽했는데 실전에서는..." 하는 상황이 개발에서는 정말 흔한 일이더라고요.

메신저봇 개발 완성도 향상: 실전 경험을 통한 교훈

다중 대화방 봇 구현 성공 요인들

드디어 대화방의 대화 내용을 저장하고 분석할 수 있는 기초 환경이 완성되었습니다!

현재 완성된 메신저봇 기능들:

  • 다중 대화방 봇 지원: 여러 대화방에서 동시 작동

  • 대화방별 데이터 분리: 각 방의 대화 내용을 별도 관리

  • 대화방별 검색 기능: 현재 있는 방의 대화만 검색

  • 대화방별 통계 분석: 각 방의 통계를 별도로 분석

메신저봇 디버깅에서 배운 핵심 원칙들

이번 메신저봇 개발 과정에서 배운 것들:

🔍 체계적 접근의 중요성 가능한 원인들을 논리적으로 분석하고 하나씩 해결해나가니까 결국은 답이 나왔어요.

🤖 AI 도구와의 협업 방식 Claude Code는 정말 좋지만, 인간이 전체적인 흐름과 우선순위를 판단해야 한다는걸 깨달았어요.

⚡ 실전과 테스트의 차이 아무리 테스트를 완벽하게 해도 실제 사용 환경에서는 예상치 못한 문제들이 계속 나온다는걸 배웠어요.

💪 포기하지 않는 자세 "2시간 후 먹통"을 "2시간은 작동한다"로 바라본 관점의 전환이 결국 해결책으로 이어졌어요.

다음 편 예고: 캐릭터가 있는 봇 만들기

이제 진짜 기초 환경이 완성되었으니, 다음 단계는 똘똘이 스머프 느낌의 잔마왕 캐릭터를 입힌 챗봇 만들기에 도전해보려고 해요!

스터디장님이 내주신 숙제도 있고, 무엇보다 단순한 기능봇이 아닌 정말 대화가 재미있는 메신저봇을 만들어보고 싶거든요.

다음 편에서는 페르소나 설계부터 실제 적용까지의 과정을 공유해드릴게요. 과연 제가 원하는 잔마왕 캐릭터를 성공적으로 구현할 수 있을까요? 😊

2
1개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요