대부분의 사람들이 인식하는 상황이 있다: 직장 팀은 Slack으로 소통하고, 친한 친구들은 WhatsApp에 있고, 게임 커뮤니티는 Discord에 살고, 개인 연락처는 Telegram을 선호한다. 네 개의 앱이 열려 있고, 네 개의 알림 스트림, 관리할 네 개의 별도 컨텍스트가 생긴다.
AI 어시스턴트가 그 모두에서 동시에 작동한다면——공유 메모리로, Telegram에서 말한 것을 Discord에서 물어볼 때 기억한다면——어떨까. 하나의 어시스턴트, 이미 있는 모든 곳에.
그것이 ZeroClaw의 멀티 채널 아키텍처가 가능하게 하는 것이며, 설정은 생각보다 간단하다.
내부 작동 방식
ZeroClaw의 채널 시스템은 Rust 트레이트로 구축됐다. 각 채널——Telegram, Discord, WhatsApp, Signal, Matrix, IRC——은 동일한 인터페이스를 구현하는 독립적인 어댑터다. 그것들은 모두 단일 AI 제공업체 연결, 단일 메모리 데이터베이스, 단일 설정 파일, 하나의 바이너리로 실행되는 단일 프로세스를 공유한다.
실제적인 결과는 Telegram에서 봇에게 무언가를 말하면 Discord에서 물어볼 때 기억한다는 것이다. 메모리는 채널에 구애받지 않는다. ZeroClaw는 각 메시지가 어느 채널에서 왔는지에 대한 메타데이터와 함께 대화를 통합 SQLite 데이터베이스에 저장하지만, 검색은 모든 채널에 걸쳐 작동한다. 컨텍스트가 따라온다.
Telegram 설정
Telegram에서 BotFather에게 메시지를 보내 새 봇을 만들고 토큰을 받는다. 그런 다음 userinfobot에 메시지를 보내 사용자 ID를 받는다. 설정에 추가:
```toml [channels.telegram] token = "123456:ABCdefGHIjklMNO" allowed_users = [your_user_id] ```
`allowed_users` 목록은 중요하다——당신(또는 지정한 사람)만 봇과 상호작용할 수 있도록 보장한다.
Discord 설정
discord.com/developers에 가서 애플리케이션을 만들고, 봇을 추가하고, 토큰을 복사한다. 봇 설정에서 Message Content Intent를 활성화한다——이것 없이는 봇이 메시지를 읽을 수 없다. OAuth2 URL 생성기를 사용해 봇을 서버에 초대한다.
```toml [channels.discord] token = "MTk4NjIz..." guild_ids = [your_server_id] allowed_roles = ["ai-users"] ```
`allowed_roles` 필드는 어떤 Discord 사용자가 봇과 상호작용할 수 있는지 제한할 수 있다——공유 서버에 추가할 때 유용하다.
WhatsApp 설정
ZeroClaw는 특별한 API 접근 없이 작동하는 WhatsApp Web 브리지를 사용한다:
```toml [channels.whatsapp] enabled = true allowed_numbers = ["+1234567890"] ```
첫 시작 시 ZeroClaw는 터미널에 QR 코드를 표시한다. 스마트폰의 WhatsApp으로 스캔해 페어링한다. 그 후에는 자동으로 연결을 유지한다.
모두 시작하기
```bash zeroclaw start ```
하나의 명령. 세 채널이 동시에 연결된다:
``` [INFO] Telegram channel connected [INFO] Discord channel connected (1 guild) [INFO] WhatsApp channel paired [INFO] ZeroClaw ready — 3 channels active ```
실제 공유 메모리
크로스 채널 메모리는 단순히 기술적으로 흥미로운 것이 아니라 진정으로 유용하게 만드는 기능이다. 실제 모습:
Telegram에서 메시지를 보낸다: > "프로젝트 마감일이 3월 15일이라는 걸 기억해줘" > "알겠습니다——프로젝트 마감일은 3월 15일이군요."
나중에 Discord에서: > "내 마감일이 언제야?" > "아까 말씀하셨듯이 프로젝트 마감일은 3월 15일입니다."
봇은 다시 말할 필요가 없었다. 같은 채널에 있을 필요도 없었다. 메모리는 전체 ZeroClaw 인스턴스에 걸쳐 공유된다.
채널별 동작 조정
플랫폼마다 다른 관습이 있다. Discord 사용자는 마크다운 형식과 간결한 응답을 기대한다. WhatsApp 대화는 더 캐주얼하고 마크다운을 렌더링하지 않는다. Telegram은 더 길고 상세한 답변을 지원한다. ZeroClaw는 채널별로 동작을 조정할 수 있다:
```toml [channels.discord] token = "..." system_prompt_append = "You are in a Discord server. Keep responses concise. Use markdown formatting." max_response_length = 1500
[channels.telegram] token = "..." system_prompt_append = "You are in a private Telegram chat. Be conversational and detailed." max_response_length = 4000
[channels.whatsapp] enabled = true system_prompt_append = "You are on WhatsApp. Keep responses short — no markdown, plain text only." max_response_length = 500 ```
같은 AI, 같은 메모리, 플랫폼별로 다른 개성.
접근 제어
봇이 여러 채널에서 접근 가능할 때 접근 제어가 중요하다. ZeroClaw는 채널별 제어를 제공한다:
```toml [channels.telegram.permissions] tools = ["web_search", "file_read", "file_write"]
[channels.discord.permissions] tools = ["web_search"] # 공개 서버에서는 읽기 전용 ```
개인 Telegram 채팅에는 전체 도구 접근을 허용하면서 Discord 봇은 웹 검색으로만 제한할 수 있다. 권한은 사용자 수준이 아닌 채널 수준에서 강제된다.
더 많은 채널 추가하기
ZeroClaw는 30개 이상의 채널을 지원한다. 다른 채널을 추가하는 것은 설정을 더 추가하는 것뿐이다:
```toml [channels.slack] token = "xoxb-..." channels = ["C01234567"]
[channels.signal] enabled = true phone_number = "+1234567890"
[channels.matrix] homeserver = "https://matrix.org" username = "@zeroclaw:matrix.org" password = "..." ```
추가 채널마다 약 0.5MB RAM이 추가된다. 10개 채널을 동시에 실행해도 총 10MB 미만이다.
큰 그림
멀티 채널 설정은 실제 문제를 해결한다: 삶은 하나의 앱에서 일어나지 않으며, AI 어시스턴트도 그래서는 안 된다. 하나의 바이너리, 하나의 설정 파일, 하나의 메모리 데이터베이스, 그리고 어시스턴트는 사용하는 모든 대화 플랫폼에 존재한다——모든 채널에 걸쳐 컨텍스트를 기억하면서, 단일 브라우저 탭보다 적은 RAM을 사용하며.
마이크로서비스 없음. 메시지 큐 없음. 컨테이너 오케스트레이션 없음. 30가지 다른 채팅 프로토콜을 말하는 단일 프로세스만.