텔레그램 비서를 넘어서 - AI 회사를 차리고, 일터를 둘로 나눈 이야기

지난 글에서는 텔레그램 안에 김실장과 미스김이라는 두 AI 참모를 두고 일을 시키는 구조까지 만들었습니다. 일정 브리핑, 메일 정리, KTX 예약, 정기 크론잡까지 붙이고 나니 "비서 한 명 옆에 둔 느낌"이 났습니다.

그런데 두 가지가 계속 걸렸습니다.

하나는 방이 좁다는 점이었습니다. 저는 Claude Code로 만든 작은 프로젝트가 십수 개 돌아가고 있는데, 이걸 전부 텔레그램 1:1 방 하나에서 다루려니 대화가 엉켰습니다. 일정 이야기와 프로젝트 배포 이야기, 법무 검토가 한 타임라인에 섞여 버립니다.

다른 하나는 노트북이 쉬질 못한다는 점이었습니다. 24시간 도는 워커와 제가 직접 코딩하는 작업이 같은 맥북 한 대에 얹혀 있다 보니, 카페에 노트북을 들고 나가면 그 사이 워커가 멈추거나 꼬였습니다.

그래서 이번에는 두 가지를 했습니다. 텔레그램 비서를 디스코드 기반의 작은 'AI 회사'로 확장하고, 일터를 맥북(작업기)과 맥미니(24시간 공장)로 분리했습니다. 이번 글은 그 기록입니다.

1. 왜 텔레그램만으로는 부족했나

텔레그램은 저한테 묻고 답하는 1:1 채널로는 정말 좋았습니다. 폰에서 바로 부를 수 있고, 응답도 빠릅니다. 문제는 에이전트가 늘어났을 때입니다.

회사라면 PM, 개발자, 법무가 각자 자리에서 일하고, 필요할 때만 회의실에 모입니다. 그런데 텔레그램 1:1 방은 회의실이 딱 하나뿐인 사무실 같았습니다. 누가 말하든 같은 줄에 쌓입니다. 에이전트가 셋만 넘어가도 누가 무슨 맥락에서 한 말인지 따라가기 어려웠습니다.

처음엔 슬랙을 생각했습니다. 그런데 따져보니 안 맞았습니다. 에이전트를 여러 명 붙이면 사람 수만큼 라이선스 비용이 붙고, 무료 플랜은 90일이 지나면 메시지를 지워버립니다. 회사가 십수 개인데 회의록이 석 달마다 증발하면 곤란합니다.

디스코드로 정한 건 한 가지 기술적 이유가 컸습니다. 웹훅(Webhook) 하나로 같은 채널 안에서 에이전트마다 다른 이름과 얼굴을 붙일 수 있다는 점입니다. 즉 'PM 헤르메스', '개발 헤르메스', '법무 헤르메스'가 같은 방에서 서로 다른 사람처럼 말하게 만들 수 있습니다. 회사라는 비유에 이게 딱 맞았습니다.

그래서 채널을 이렇게 나눴습니다.

  • 디스코드: 본진. 협업하고, 기록을 쌓고, 여러 에이전트가 모이는 곳

  • 텔레그램: 모바일 핫라인. 외출 중에 급하게 결정할 일은 여전히 폰에서 헤르메스를 부름

  • 노션: 최종 기록 저장소. 의사결정과 세션 로그를 박제하는 곳

한 가지 선은 그었습니다. 회사 본업(외부 협력사와 일하는 일)은 그대로 슬랙과 이메일을 씁니다. 디스코드로 옮긴 건 어디까지나 제가 Claude Code로 굴리는 사이드 프로젝트들뿐입니다. 신뢰가 걸린 자리와 실험하는 자리를 섞지 않으려는 것입니다.

2. 디스코드에 첫 직원을 출근시키기

한 번에 회사를 다 차리지는 않았습니다. 먼저 채널 하나에 웹훅을 꽂고, 헤르메스가 디스코드에 말을 거는지부터 확인했습니다. 'PM 헤르메스', '개발 헤르메스', '법무 헤르메스' 세 정체성으로 같은 방에 글을 띄워봤더니 세 발화 모두 정상으로 들어왔습니다. 같은 웹훅 하나로 세 직원이 각자 이름표를 달고 말하는 게 됩니다.

다음은 진짜 직원을 한 명 만드는 일이었습니다. 디스코드에서 멘션을 받아 답하려면 단순 웹훅이 아니라 봇(Bot)이 필요했습니다. 그래서 구조를 이렇게 잡았습니다.

  • 봇은 듣는 쪽: 제가 멘션하면 받아서 답함. 서버에 하나만 둠

  • 웹훅은 말하는 쪽: 채널마다 하나씩. 에이전트별로 이름과 얼굴을 분리

첫 직원으로 '백실장'을 만들었습니다. 기존 김실장의 인격(SOUL 파일)을 복제해서 이름만 바꿔 끼웠는데, 스토브리그의 백승수 단장 톤이 자연스럽게 따라왔습니다. 봇을 띄우고 멘션해 보니 "백실장입니다", "광진님" 하고 제대로 응답했습니다. 자기 이름을 알고, 다른 봇을 멋대로 호출하지도 않았습니다.

순탄하지만은 않았습니다. 직원 하나 출근시키는 데 함정이 몇 개 있었습니다.

기존 인격을 복제하면 텔레그램 봇 토큰까지 같이 복사됩니다. 그러면 새 직원과 기존 미스김이 같은 텔레그램 봇에 동시에 접속하면서 서로를 죽입니다. 멀쩡히 일하던 미스김이 갑자기 입을 닫았습니다. 복제 직후 토큰을 떼어내는 걸 잊으면 안 됩니다.

또 하나, 디스코드로 말하게 하려면 디스코드 플러그인을 따로 켜줘야 합니다. 이건 복제할 때 같이 안 옵니다. 이걸 빼먹어서 보낸 메시지가 한 시간 가까이 조용히 묻혔습니다. 봇은 살아 있는데 대답만 안 하는, 제일 진단하기 까다로운 상태였습니다.

지금은 백실장 한 명이 #socyber-office 채널에서 일하고 있고, 김비서와 다섯 팀(PM·개발·디자이너·리서처·리뷰어)은 같은 방식으로 복제할 준비만 해둔 상태입니다. 한꺼번에 일곱 명을 출근시키지는 않았습니다. 검증 안 된 가정을 일곱 채널에 박아두면 안 쓰는 방만 늘어나니까요.

3. 노트북과 맥미니, 일터를 둘로 나누기

두 번째로 한 일은 일터를 물리적으로 쪼개는 것이었습니다.

그동안은 맥북 한 대가 두 가지 일을 동시에 했습니다. 제가 직접 앉아서 코딩하는 일과, 24시간 알아서 도는 워커들입니다. 트레이딩 데이터를 모으거나, 정기 브리핑을 보내거나, 디스코드 봇을 띄우는 일들이죠. 문제는 제가 노트북을 들고 나가는 순간 공장도 같이 따라 나간다는 점이었습니다.

비유하자면 맥북은 제가 앉아 일하는 책상이고, 맥미니는 사람이 없어도 계속 돌아가는 공장 라인입니다. 둘을 한 대에 욱여넣으니 책상을 옮길 때마다 라인이 멈췄습니다.

그래서 역할을 이렇게 나눴습니다.

  • 맥북: 주력 작업기. 일상 코딩과 설계. 워커는 켜지 않음

  • 맥미니: 24시간 워커 전용. 항상 켜둠. 헤르메스, 디스코드 봇, 정기 잡이 여기서 돈다

핵심은 두 대가 어긋나지 않게 하는 것입니다. 공장 설계도는 깃허브(비공개 저장소)에 두고 양쪽이 같은 도면을 보게 했습니다. 대신 규칙을 분명히 했습니다. 설계 변경은 책상(맥북)에서만 하고, 라인(워커)은 공장(맥미니)에서만 돌린다. 맥북은 작업을 시작할 때 자동으로 최신 도면을 받아오고, 변경분은 일을 마칠 때만 올립니다. 자동으로 마구 올리지 않습니다.

이걸 준비하면서 미뤄뒀던 집안일이 한꺼번에 드러났습니다. 옮기기 전에 프로젝트 폴더를 훑어보니, 깃에 안 올라간 변경분이 가정했던 열 군데가 아니라 스물세 군데였습니다. 깃 저장소 자체가 없는 프로젝트도 여럿이라, 비공개 저장소를 일곱 개 새로 만들어 정리했습니다. 두 대로 나누겠다는 결정 하나가 그동안 미뤄둔 정리를 강제로 끝내게 만든 셈입니다.

옮기는 과정에서 재미있는 걸 하나 발견했습니다. 트레이딩 데이터를 모으는 프로젝트 하나가 제가 모르는 사이에 혼자 깃허브에 데이터를 계속 올리고 있었습니다. 로컬 맥북 작업본이 원격보다 50커밋 넘게 뒤처져 있었고, 매일 새 데이터 파일이 원격에 쌓여 있었습니다.

처음엔 어딘가 다른 서버에서 워커가 도는 줄 알았는데, 추적해 보니 깃허브 액션(GitHub Actions)에서 평일 하루 열여섯 번쯤 자동으로 돌고 있었습니다. 제 노트북도, VPS도 아니고 깃허브의 무료 CI가 공장 노릇을 하고 있던 겁니다. 이런 저장소는 맥북에서 함부로 건드리면 워커 작업선과 충돌하니, 받아오기만 하고 올리지 않는 쪽으로 규칙을 따로 뒀습니다.

4. 하면서 배운 것

이번에 가장 크게 느낀 건, AI한테 일을 많이 시키는 게 핵심이 아니라는 점입니다. 지난 글에서도 비슷한 말을 했는데, 이번엔 더 분명해졌습니다.

직원을 일곱 명 한꺼번에 만들 수 있었지만 한 명만 만들었습니다. 워커도 더 빨리 옮길 수 있었지만, 먼저 밀린 정리부터 했습니다. 욕심을 내서 한꺼번에 벌이면, 검증 안 된 구조가 그대로 굳어버립니다. 그러면 나중에 더 큰 비용으로 돌아옵니다.

봇이 자기소개를 할 때 거짓말을 한다는 것도 배웠습니다. 한번은 봇에게 "지금 어떤 모델 쓰고 있냐"고 물었더니 자신 있게 틀린 답을 했습니다. 서버 로그를 직접 까보니 봇 말이 100% 틀렸더군요. AI가 자기 자신에 대해 하는 말은 증거가 아닙니다. 진짜는 로그에 있습니다.

도움이 필요한 부분

아직 다듬고 싶은 곳이 남았습니다.

여러 봇이 한 채널에 모이면 서로 부르다가 대화가 폭주할 수 있습니다. 한 안건당 봇끼리 한 번만 주고받게 시스템으로 더 단단히 제한하고 싶습니다.

채널이 늘어나면 채널마다 맥락도 달라집니다. 채널별로 기억과 작업 히스토리가 깔끔하게 분리되는 구조를 더 손보려 합니다.

맥북과 맥미니를 나눠 쓰다 보니, 어느 쪽이 최신인지 한눈에 보이는 장치가 필요하다는 걸 느낍니다. 지금은 제가 직접 받아오기를 챙겨야 하는데, 이걸 자동으로 알려주는 쪽으로 가고 싶습니다.

앞으로의 계획

  • 디스코드 직원을 한 명씩 늘려가기. 백실장에 이어 김비서, 그다음 PM과 개발 같은 전문 직원 순으로. 한꺼번에 말고 검증하면서

  • 디스코드에서 합의한 결정을 노션에 자동으로 박제하는 연결 만들기

  • 맥미니를 진짜 24시간 공장으로 안정화하기. 정기 잡과 봇을 전부 이쪽으로 옮기고, 맥북은 책상으로만 쓰기

  • 폰에서 헤르메스 상태, 도는 잡, 최근 작업을 한눈에 보는 작은 대시보드. 지난 글에서 말한 그 숙제는 여전히 남아 있습니다

2
1개의 답글

뉴스레터 무료 구독