본문 바로가기
개발 스터디/AI - OpenClaw

[OpenClaw 활용] 한 지붕 두 에이전트 - OpenClaw 멀티봇 설정하기 (feat. Discord)

by 가리봉맨 2026. 2. 9.
목차

혹시 'Discord 봇 만들기'로 검색해서 오신 분은 스크롤을 쭉 내려서 '추가 에이전트용 Discord 봇 생성' 항목만 보시면 됩니다.

 

들어가는 글

기존 OpenClaw 게이트웨이에 에이전트를 추가하는 작업을 설명하는 글이다. 맥미니를 하나 더 사야 하거나 OpenClaw를 추가로 설치하는 방법이 아니다.

1. 사건의 발단

OpenClaw를 너무 잘 쓰고 있는데 뭔가 OpenClaw 생태계에 기여를 하고 싶어서 Github 이슈 페이지에서 간단히 수정할 수 있는 이슈가 없는지 찾아봤다. 물론 내가 직접 찾는 행위를 한 건 아니다. Claude에게 개선이나 제안이 아닌 버그여야 하고, 최근에 등록돼서 아직 PR이 올라오지 않은 이슈들을 리스트업 해달라고 했다.

https://github.com/openclaw/openclaw/issues/11199

 

[Bug]: Discord - multiple agent bots are considered to be the same bot and filtered out when talking to each other · Issue #111

Summary In a multi-agent setup with multiple Discord bot accounts (one per agent), OpenClaw filters incoming messages from all configured bot accounts, not just the receiving agent's own bot. This ...

github.com

리스트업 된 이슈들 중 내가 고른 건 #11199 이슈다. 이슈 등록자가 제기한 문제 상황은 대략 이렇다. 싱글 OpenClaw 인스턴스, 멀티 에이전트 환경이고 각 에이전트에 Discord 채널을 열어서 같은 Discord 서버 및 채널에 들어가 있다. 이때 봇끼리 주고받는 메시지가 무시된다는 것이다. 정황 상 버그가 아니라 개발진이 정책적으로 봇끼리의 대화를 막은 것일 수도 있다. 하지만 나는 일단 버그로 보고 빠르게 수정을 마친 뒤, 아래와 같이 PR을 올렸다.

https://github.com/openclaw/openclaw/pull/11644

 

fix: bypass bot filter and mention gate for sibling Discord bots by garibong-labs · Pull Request #11644 · openclaw/openclaw

Summary Fixes #11199. In a multi-agent setup with multiple Discord bot accounts (one per agent), messages between bots are silently dropped because: The author.bot check drops ALL bot messages whe...

github.com

sibling(형제) 봇이라는 개념을 도입해서 싱글 OpenClaw 인스턴스, 멀티 에이전트 환경의 봇들 끼리 대화가 가능하도록 했다. 그런데 문제는 실제 환경에서 버그 재현 및 수정 이후 테스트를 하지 않고 PR을 올렸다는 것이다. 순서가 바뀌었지만 기존 OpenClaw 인스턴스에 에이전트를 하나 추가하고, 둘 다 같은 Discord 서버 및 채널에 입장시키는 것까지 진행해 보겠다.

 

2. Discord 채널에 하나의 에이전트만 있는 상태에서 시작

평소 Discord를 자주 쓰는 편은 아닌데 예전에 미드저니 공부한다고 만들어 놨던 서버에 채널만 추가했다. 기존 에이전트(Eli)는 이미 들어와 있는 상태다.

 

에이전트 생성 및 추가

앞에서도 말했지만 기존 OpenClaw 게이트웨이에 에이전트를 추가하는 작업을 시작한다. OpenClaw를 새로 설치하는 게 아니다.

1.  에이전트를 추가하는 CLI 명령어

OpenClaw CLI 명령어부터 소개한다. 터미널 상에서 아래 명령어로 에이전트 추가할 수 있다.

openclaw agents add <원하는id>

 

2.  맥미니에 원격 접속

원격 기기(맥북)에서 OpenClaw가 설치된 맥미니에 ssh로 접속했다. 요즘 맥미니를 직접 조작하는 일은 거의 없다.

 

원격 기기에서 OpenClaw가 설치된 기기에 ssh로 접속하는 자세한 방법은 아래 포스트를 참고하기 바란다.

2026.02.05 - [개발 스터디/AI - OpenClaw] - [OpenClaw 활용] Tailscale을 이용해서 맥미니(OpenClaw 설치 기기)로 원격 접속하기

 

[OpenClaw 활용] Tailscale을 이용해서 맥미니(OpenClaw 설치 기기)로 원격 접속하기

들어가는 글텔레그램으로도 충분히 OpenClaw 에이전트와 외부에서 통신하는 데에 불편함이 없다. 하지만 가끔 OpenClaw가 설치된 기기(이하 맥미니)의 터미널에 원격으로 접근할 일이 있다. 참고로

bongman.tistory.com

 

3. 기존 에이전트 id 및 디렉터리 구조 확인

기본(첫 번째) 에이전트의 id는 'main'인 것을 확인할 수 있다. 에이전트 이름은 영문 소문자면 다 된다. 

반응형

기존 에이전트(id: main)의 디렉터리 구조다. 하위 디렉터리로 agent, sessions가 있는 심플한 구조다. 바로 에이전트 추가 명령을 실행했다. 에이전트 id는 세계관 유지를 위해 기존 에이전트 일라이(Eli)의 이웃이자 은퇴한 도서관 사서, 루스(Ruth)로 정했다. 조금 과한 세계관에 대한 자세한 내용은 아래 포스트 참고.

2026.02.02 - [개발 스터디/AI - OpenClaw] - [OpenClaw 설치] 에이전트의 페르소나(세계관) 설정, 그리고 스몰토크까지

 

[OpenClaw 설치] 에이전트의 페르소나(세계관) 설정, 그리고 스몰토크까지

1. 페르소나를 만들기로 한 이유와 방향 설정OpenClaw 설치 이후 본격적으로 가동시키기 전에 봇의 페르소나(또는 세계관)를 만드는 데에 공을 좀 들였다. 먼저 Claude 데스크톱 앱을 실행하고, 누구

bongman.tistory.com

기존 에이전트의 AI 모델로 Claude Opus 4.6을 설정했는데 토큰 소모가 상당하다. 새로운 에이전트는 개발 업무가 아닌 간단한 반복 작업을 맡길 예정이다. AI모델로는 Gemini 3 Flash 정도를 생각하고 있다. 참고로 Gemini는 Google AI Pro 학생 프로그램에 가입해서 무료로 사용 중이다. 아쉽지만 지금은 가입이 막혀있다.

https://blog.google/intl/ko-kr/company-news/technology/google-ai-pro-students-learning/

 

새 학기, AI로 레벨업! 대학(원)생 대상 AI 프로 플랜 1년 무료 제공

오늘부터 대한민국에 거주하는 만 18세 이상의 대학(원)생이라면 누구나 12개월간 구글 AI 프로 플랜을 무료로 이용할 수 있는 특별한 혜택을 누릴 수 있습니다.

blog.google

 

4. 에이전트 추가 - CLI 명령어 실행

openclaw agents add <원하는id>

여기까지 하고 기존 에이전트한테 잘하고 있는 건지 물어봤더니..

뜨끔; 나 혼자 세계관에 충실한 게 아니라 다행이다.

 

5. 에이전트 추가 - 기본 설정 진행

기본값 그대로 엔터 치고 쭉 진행한다.

  • Workspace directory: /Users/garibong/.openclaw/workspace-ruth
    • 굳이 설치 경로를 변경할 이유가 없어서 바로 엔터를 쳤다.
  • Copy auth profiles from "main"?: Yes
    • 이건 기본이 No인데 Yes로 변경했다. 나중에 바꿀 수 있으므로 기존 에이전트의 인증 정보(내 경우 Anthropic Oauth Token)를 그대로 복사해서 쓴다.
  • Configure model/auth for this agent now?: No
    • 어떤 모델(Sonnet, Opus 등)을 사용할지 고르는 항목. 기본값 No를 선택하고 넘어간다. 나중에 다시 설정하면 되니까.

'Configure chat channels now?' 항목의 기본 값 Yes가 선택된 상태에서 엔터 키를 입력한다.

'Select a channel' 항목이 표시되는데 기본값으로 'Discord (Bot API)'가 선택된 상태다.

 

추가 에이전트용 Discord 봇 생성

OpenClaw CLI 상에서의 설정은 여기서 잠시 멈추고 Discord 봇을 생성하러 간다.

1. Discord 봇 생성

아래 Discord Developer Portal 페이지에 접속해서 로그인한다.

https://discord.com/developers/applications

 

Discord for Developers

Build games, experiences, and integrations for millions of users on Discord.

discord.com

우상단의 'New Application' 버튼을 클릭한다.

원하는 봇의 이름을 입력하고 'Create' 버튼을 클릭해서 생성한다.

위와 같은 화면이 뜨면 봇이 정상적으로 생성된 것이다. 여기서 필수적으로 해야 할 것은 없다. App Icon 항목만 '은퇴한 도서관 사서'라는 봇의 페르소나에 어울리는 이미지로 업로드했다.

 

2. Discord 봇 설정

좌측 사이드 메뉴에서 'Bot'을 클릭한다.

스크롤을 조금 내리면 Server Members Intent, Message Content Intent 항목이 보이는데 둘 다 활성화시킨다. 이번에는 스크롤을 조금 올린다. Token 섹션이 보이는데 'Reset Token' 버튼을 클릭한다.

Yes, do it! 버튼을 클릭해서 Token을 생성한다.

생성한 Token은 이후 다시 확인할 수 없기 때문에 복사해서 잘 저장해 둔다. 이제 왼쪽 사이드 메뉴의 'OAuth2'를 클릭해서 이동한다.

위 그림과 같이 스크롤을 조금 내리면 'OAuth2 URL Generator' 항목이 보인다. 'Scopes' 섹션에서 bot, applications.commands 두 개 아이템을 체크한다. 스크롤을 더 내리면 'Bot Permissions' 섹션이 보인다.

View Channels, Send Messages, Embed Links, Attach Files, Read Message History, Add Reactions 아이템을 체크한다.

 

3. Discord 봇을 서버에 초대하기

스크롤을 끝까지 내리면 'Generated URL' 항목이 보인다.

URL 주소를 복사해서 브라우저 주소창에 붙여 넣고, 생성된 봇을 원하는 Discord 서버로 초대한다. Discord 서버를 생성하는 방법까지는 여기서 다루지 않겠다.

아래 이미지와 같이 생성한 봇이 (아직 오프라인 상태이긴 하지만) 서버에 입장했다.

 

추가 에이전트에 Discord 채널 연동

OpenClaw 설정은 여기까지 진행했었다. 엔터 키를 입력해서 다음으로 넘어간다.

 

1. Discord 관련 설정 및 에이전트 매핑

이어지는 질문들에 아래와 같이 선택한다.

    • Discord already configured. What do you want to do?: Modify settings
    • Discord account: Add a new account
    • New Discord account id: 에이전트 id
      • 아까 정한 에이전트 id를 입력한다. 꼭 같은 값을 넣어야 하는 건 아니지만 같은 값으로 맞추는 게 깔끔하다.
    • Discord token already configured. Keep it?: No

아까 'Discord 봇 설정' 단계에서 잘 저장해 둔 Token을 입력한다. 이어지는 항목들은 아래와 같이 선택한다.

  • Update Discord channels access?: Yes
  • Discord channels access: Allowlist (recommended)
  • Discord channels allowlist (comma-separated): 서버(guild)id / 채널(channel) id
    • 기존 에이전트가 들어가 있는 서버/채널이 선택된 상태인데 나중에 바꿀 수 있으니 일단 같은 채널로 들어오도록 그대로 둔다.

거의 다 끝났다. 다시 'Select a channel' 항목이 뜨는데 화살표 키로 쭉 내려서 'Finished (Done)'을 선택한다. 이어지는 항목들은 다음과 같이 선택한다.

  • Configure DM access policies now? (default: pairing): No
  • Route selected channels to this agent now? (bindings): Yes
    • 반드시 Yes를 선택한다. bindings가 에이전트 ↔ Discord 봇 매핑이다. 이걸 안 하면 생성한 에이전트한테 메시지가 가지 않는다.

에이전트 생성 및 설정이 모두 완료됐다.

 

2. Discord 채널에 에이전트 초대

Discord 앱으로 이동해서 채널을 보면 아까 오프라인이었던 새 에이전트(Ruth)가 온라인으로 변경된 것을 볼 수 있다. 그런데.. 뭔가 좀 이상하다. 기존 에이전트(EliFromTheBarn)가 오프라인이 됐다.

 

3.  Discord 연결 해제된 기존 에이전트 복구

OpenClaw의 버그로 보인다. 좀 기다려 보고 수정이 안 되면 Github에 이슈 등록할 생각이다(직접 수정해서 PR 올리는 게 빠를 수도 있겠다). 해결 방법은 간단하다. 기존 에이전트의 세션이 살아있는 다른 채널(Telelgram, Webchat, TUI 등)에서 '고쳐줘'라고 말하면 된다. 나도 그렇게 해결했다. 사실 이 글에서 지금까지 진행한 모든 과정도 에이전트에게 해달라고 하면 쉽게 끝난다. 그래도 개발자라면 한번 정도는 직접 해봐야 할 것 같아서 해봤을 뿐이다. 말이 좀 길어졌는데.. 기존 에이전트가 Discord로 다시 돌아오자마자 오프라인 됐던 문제를 어떻게 해결했는지 물어봤다.

관심 있는 분들은 위의 설정 파일을 찾아서 직접 수정하고, 아래 명령어로 게이트웨이를 재구동하면 해결된다.

openclaw gateway restart

 

여기서 끝이 아니다. 새 에이전트(Ruth)가 DM으로는 답을 하는데 기존 에이전트와 함께 있는 채널에서는 아무 말이 없었다. 이번에도 기존 에이전트에게 고쳐 달라고 해서 해결했다.

OpenClaw의 Discord 관련 설정에 'requireMention'라는 항목이 있는데 기본값이 true라서 멘션에만 반응하는 상태였던 것이다. 이걸 false로 수정해서 일반 메시지에도 반응하게 고쳤다. 아, 물론 내가 아니고 기존 에이전트가 고쳤다.

2026.02.02 - [개발 스터디/AI - OpenClaw] - [OpenClaw 설치] 에이전트의 페르소나(세계관) 설정, 그리고 스몰토크까지

 

[OpenClaw 설치] 에이전트의 페르소나(세계관) 설정, 그리고 스몰토크까지

1. 페르소나를 만들기로 한 이유와 방향 설정OpenClaw 설치 이후 본격적으로 가동시키기 전에 봇의 페르소나(또는 세계관)를 만드는 데에 공을 좀 들였다. 먼저 Claude 데스크톱 앱을 실행하고, 누구

bongman.tistory.com

이제 추가한 에이전에게 은퇴한 도서관 사서이자 기존 에이전트의 이웃이라는 설정의 페르소나를 심어주는 일만 남았다. 그리고 이제 테스트 환경 셋팅이 끝났으니 PR 올린 이슈를 디버깅해봐야겠다. 끝.


글이 도움이 됐다면 아래 공감(♥️) 아이콘 클릭 부탁드립니다^^

 

 

 

 

반응형
사업자 정보 표시
가리봉랩스(Garibong Labs) | 함동기 | 87, Jukjeon-ro | 사업자 등록번호 : 604-05-36402 | TEL : 010-5130-6483 | Mail : hamjoon@gmail.com | 통신판매신고번호 : 2026-용인수지-0037호 | 사이버몰의 이용약관 바로가기