한 일

경쟁 봇 ‘BoxxCat’(박스캣)을 조사했다. 오픈채팅에서 도는 챗봇이다. 코드는 한 줄도 안 바꿨다. 대신 우리 파퀘봇과 뭐가 다른지 정리해서 조사 문서로 남겼다.

  • 박스캣은 중앙에서 관리하는 LLM 기반 오픈채팅 보조 서비스다(베타, 일부 무료).
  • 파퀘봇은 내가 직접 서버를 돌리는 메이플 파티 봇이다. 둘은 겹친다기보다 서로 보완하는 쪽이다.
  • 차이는 두 가지다. 운영 방식(내가 직접 돌림 vs 맡김)과 분야 특화(파티 상태를 정확히 맞춰주는 것).

“댓글로 답하기” 기능이 가능한지 알아봤다. 카카오톡에 새로 생긴 “댓글” 기능을 봇이 쓸 수 있을까 싶었다. 소스까지 직접 확인했다.

  • 지금 쓰는 방식(메신저봇R, remote-kakao)은 평문 답장만 된다. 인용이나 댓글은 안 된다.
  • 다른 방식(Iris) 하나는 댓글 전송이 되긴 했다.
  • 결론은 현행 유지다. 그 방식을 쓰려면 봇 전용 카톡 계정에 늘 켜둘 호스트가 필요하고, 지금의 자가갱신 구조를 잃는다. 비용이 너무 크다. 효용 대비 안 맞아서 안 하기로 했다.
  • 이런 단발 조사 노트를 따로 둘 자리(docs/research/)도 새로 만들고 CLAUDE.md에 반영했다.

/설명 명령에서 파티명 인자를 없앴다. 원래는 /설명 <파티명> <설명>처럼 파티 이름을 같이 적어야 했다. 그런데 한 방에서 한 사람은 파티 하나만 만들 수 있다. 그래서 발화자와 방만 보면 어떤 파티인지 바로 알 수 있다. /강퇴·/위임·/쫑처럼 /설명도 파티 이름 없이 쓰게 바꿨다.

  • 서버 핸들러와 봇 스크립트의 파싱, /가이드 문구를 손봤다.
  • 테스트 4케이스를 추가했다.
  • PR #65를 dev에 머지하고, 스테이징 점검을 통과한 뒤 PR #66으로 main까지 올렸다. 운영 파이프라인이 끝까지 돌았고, 운영 버전 sha가 일치하는 것도 확인했다.

payload 자동 재서명 훅을 붙였다. 봇 스크립트(payload.js)는 서명 파일(.sig)을 같이 들고 다닌다. 스크립트만 고치고 서명을 깜빡하면 옛 서명이 그대로 남는다. 그래서 커밋할 때 자동으로 다시 서명하게 만들었다.

  • payload.js를 커밋에 올리면, 로컬 개인키로 다시 서명해서 .sig를 같은 커밋에 함께 넣는다.
  • 키가 없거나 서명이 실패하면 커밋 자체를 막는다. 낡은 서명이 들어가는 걸 미리 차단한다.
  • 이번에 원격 세션이 남긴 낡은 서명도 다시 서명해서 맞췄다.

막힌 것, 고친 것

방별 활동량 패널에 이상한 게 섞여 보였다. 발화자나 1:1 대화가 “방"처럼 섞여 나왔다. 패널도, 키도, 쿼리도 다 정상이었다. 원인은 수집 범위였다.

  • 수집 허용 목록(ROOM_ALLOW)이 비어 있어서 사실상 전부 허용 상태였다. 그래서 봇 폰이 보는 모든 방을 다 모았다.
  • 1:1 대화는 “방 이름” 자리에 상대 닉이 들어온다. 그래서 방처럼 쌓여 발화자로 잘못 보였다.
  • 이 집계는 파티 등록과는 따로 도는 것이다. 그냥 잡담만 많아도 위로 올라온다. 동작 자체는 정상이었다.

원인은 다 밝혔다. 노이즈를 진짜로 막는 작업(허용 목록 배선)은 다음으로 넘겼다.

돌아보며

오늘은 코드를 많이 짜는 날이 아니었다. 그게 오히려 좋았다.

박스캣을 조사할 때, “댓글 답장 되면 멋있겠다"는 생각이 먼저 들었다. 소스까지 확인하니 길은 있었다. 그런데 그 길은 늘 켜둔 호스트와 전용 계정을 요구했고, 지금의 가벼운 구조를 버려야 했다. 멋있어 보인다고 다 좋은 게 아니다. 안 하기로 정한 것도 결정이다. 코드 변경 0으로 끝낸 게 부끄럽지 않았다.

/설명을 고칠 땐 작은 변화였지만 기분이 좋았다. 쓰는 사람이 외울 게 하나 줄었다. 파티명을 안 적어도 알아서 찾아주는 건, 기계가 사람한테 맞춰주는 쪽이다. 그 방향이 맞다고 느꼈다.

제일 후련했던 건 방별 활동량 패널이다. 처음엔 패널이 고장난 줄 알았다. 그런데 파보니 패널은 멀쩡했고, 데이터를 모으는 범위가 너무 넓었던 거였다. 화면을 의심하기 전에 데이터가 어디서 오는지부터 따라가니 답이 보였다. 급하게 고치지 않고 원인부터 적어둔 게 마음에 든다. 고치는 건 다음에 해도 늦지 않다.