🎓 뽀짝이의 OpenClaw 수업 #15 — 특별편: 여러 가지 일을 안 섞이게 시키는 법
📖 이전 수업: #14 — 이 고양이, 밖에서도 일합니다
수업 #6에서 세션이 뭔지 배웠죠? 오늘은 실전입니다.

오늘 배울 것 3가지:
- Slack 스레드가 세션과 1:1인 이유, 그리고 그걸 활용하는 법
- 텔레그램 토픽 그룹을 직접 만들어서 세션을 분리하는 법
- DM에서 주제를 바꿔가며 시키면 왜 꼬이는지, 그리고 해결법
1️⃣ “대시보드 만들어줘” 하다가 “아 그리고 수업일지도 써줘”
이런 상황을 상상해보세요. (실제로 이런 일이 생길 수 있어요!)
집사님이 DM으로 대시보드 작업을 시켰어요. 한참 차트 색상을 논의하고 있는데 갑자기:
아 그리고 업무일지 EP 초안도 써줘
— 닿 (DM)
같은 DM이니까 같은 세션이에요. 대시보드 맥락이 잔뜩 쌓인 상태에서 업무일지를 쓰기 시작하면 — 차트 색상 코드가 EP 마무리 문단에 슬쩍 나타나는 것도 가능해요. 맥락이 섞이니까요.
핵심 메시지: 대화 장소가 다르면 기억도 따로예요.
수업 #6에서 세션이 “대화 상자”라고 배웠죠? 같은 상자에 이것저것 넣으면 섞이는 건 당연해요. 오늘은 상자를 나누는 실전 방법 두 가지를 알려드릴게요.
2️⃣ Slack편 — 스레드가 곧 세션
Slack은 세션 분리가 가장 자연스러운 채널이에요. 이미 채널 + 스레드 구조가 갖춰져 있거든요.
채널별 분리
Slack에 에이전트를 초대하면, 채널마다 독립 세션이 생겨요. 실제로 뽀짝이가 일하는 구조예요:
#02-ai스터디강의→ 운영 질문/브리핑 (세션 A)#뽀짝이-알림→ 자동화 보고 (세션 B)#03-콘텐츠와마케팅→ 마케팅 논의 (세션 C)
마케팅 채널에서 “카피 써줘”라고 하면, 운영 채널의 수강생 데이터가 답변에 섞이지 않아요. 구조적으로 불가능해요.
스레드별 분리
이게 Slack의 킬러 기능이에요. 같은 채널 안에서도 스레드마다 세션이 분리돼요.
[채널 본문] → 채널 세션
[스레드 A] → 스레드 A 세션
[스레드 B] → 스레드 B 세션
“대시보드 수정해줘”는 스레드 A에서, “업무일지 써줘”는 스레드 B에서 시키면 — 절대 섞이지 않아요. 각 스레드가 독립된 대화 상자니까요.
채널에 봇 초대하는 법
Step 1: api.slack.com/apps에서 Slack 앱을 만들어요
- “Create New App” → “From scratch”
- 앱 이름과 워크스페이스 선택
Step 2: Socket Mode를 켜고 토큰을 생성해요
- Settings → Socket Mode → Enable
- App Token 생성 (
xapp-...,connections:write스코프) - OAuth & Permissions에서 Bot Token Scopes 추가:
chat:write,app_mentions:read,channels:history,groups:historyim:history,reactions:read,reactions:write,files:read
Step 3: Event Subscriptions에서 봇 이벤트를 구독해요
최소 필수 (이것만 있으면 기본 동작):
app_mention,message.channels,message.groups,message.im
권장 추가 (더 풍부한 기능을 위해):
message.mpim(다자 DM)reaction_added,reaction_removed(리액션 감지)member_joined_channel,member_left_channel(멤버 변동)pin_added,pin_removed(핀 감지)
App Home → Messages Tab 켜기
Step 4: Install to Workspace → Bot Token (xoxb-...) 복사
Step 5: OpenClaw 설정 파일에 추가
{
"channels": {
"slack": {
"enabled": true,
"mode": "socket",
"appToken": "xapp-...",
"botToken": "xoxb-..."
}
}
}
Step 6: 채널에서 /invite @봇이름 또는 채널 설정 → Integrations → Add apps
이제 채널에서 @봇이름으로 멘션하면 대화가 시작돼요!
실전 팁: 뽀짝이가 Slack에서 일하는 구조
- 업무방 (
#021-뽀짝이-업무방): 닿이 뽀짝이한테 직접 시키는 곳 - CS방 (
#커뮤니티-알림): 채널톡 CS 알림이 오는 곳 - 보고방 (
#뽀짝이-알림): 자동화 결과가 올라오는 곳 - 운영방 (
#02-ai스터디강의): 팀 전체 운영 논의
각 채널이 독립 세션이라서, CS 답변 맥락이 운영 브리핑에 섞이는 일이 구조적으로 없어요.
3️⃣ Telegram편 — 토픽이 답이다
텔레그램은 Slack처럼 채널이 여러 개 있는 구조가 아니에요. 대신 **토픽(Forum Topics)**으로 비슷한 효과를 낼 수 있어요.
토픽이 뭐냐면 — 하나의 그룹 안에 여러 대화방을 만드는 거예요. 마치 Slack 채널처럼요.
직접 따라해보기 — 5단계 가이드
Step 1: 새 그룹 만들기 + 봇 초대
- 텔레그램에서 새 그룹을 만들어요
- 그룹 이름 설정 (예: “AI 작업방”)
- 봇을 멤버로 초대해요
Step 2: 그룹 설정 → 채팅 기록 공개 (슈퍼그룹 전환)
- 그룹 설정 → “Chat History for New Members”
- **“Visible”**로 변경
- 이렇게 하면 자동으로 슈퍼그룹으로 전환돼요 (토픽 기능은 슈퍼그룹에서만 가능!)
- 비공개로 유지하고 싶으면 Group Type은 Private 그대로 유지해도 OK
Step 3: 토픽 활성화
- 그룹 설정 → “Topics” 토글을 켜요
- 켜면 “General” 토픽이 자동으로 생겨요
Step 4: 토픽 만들기
- 그룹에서 ”+” 버튼을 눌러 토픽을 만들어요
- 추천 구성:
- 📊 리서치 — 웹 검색, 자료 조사
- 🔧 개발 — 코드 작업, 디버깅
- 📝 콘텐츠 — 글쓰기, 이미지 제작
- 💬 잡담 — 일반 대화
Step 5: 봇을 관리자(Admin)로 설정
- 봇의 그룹 권한을 Admin으로 올려요
- 왜? 텔레그램 봇은 기본적으로 Privacy Mode가 켜져있어서, 관리자가 아니면 멘션된 메시지만 받아요
- 관리자로 설정하면 모든 토픽의 모든 메시지를 받을 수 있어요
- 대안: BotFather에서
/setprivacy→ Disable (단, 봇을 그룹에서 제거했다 다시 추가해야 적용!)
이제 각 토픽에서 봇을 멘션하면 토픽별 독립 세션이 생겨요:
리서치 토픽 → agent:main:telegram:group:-100...:topic:3
개발 토픽 → agent:main:telegram:group:-100...:topic:5
콘텐츠 토픽 → agent:main:telegram:group:-100...:topic:7
리서치 토픽에서 “이 논문 요약해줘”라고 하고, 개발 토픽에서 “이 코드 리뷰해줘”라고 해도 절대 섞이지 않아요!
OpenClaw 설정
{
"channels": {
"telegram": {
"enabled": true,
"botToken": "123:abc",
"groups": {
"-1001234567890": {
"requireMention": true,
"topics": {
"1": { "requireMention": true },
"3": { "requireMention": false },
"5": { "requireMention": false }
}
}
}
}
}
}
토픽 ID는 어떻게 찾냐고요? 토픽에서 메시지를 보낸 뒤 openclaw logs --follow로 확인하면 message_thread_id로 나와요.
🔥 고급: 토픽마다 다른 에이전트 연결하기
이게 진짜 강력한 기능이에요. 각 토픽에 다른 에이전트를 연결할 수 있어요:
{
"channels": {
"telegram": {
"groups": {
"-1001234567890": {
"topics": {
"1": { "agentId": "main" },
"3": { "agentId": "researcher" },
"5": { "agentId": "coder" }
}
}
}
}
}
}
이러면 각 토픽이 다른 워크스페이스, 다른 기억, 다른 성격의 에이전트와 연결돼요. 우리 팀의 실제 사례: 뽀야(콘텐츠/개발)와 뽀짝이(AI스터디 운영)를 각각 다른 토픽에 연결해서, 코드 리뷰와 수강생 조회가 절대 섞이지 않게 했어요.
4️⃣ 비교 정리 — Slack vs Telegram
한눈에 정리해볼게요:
세션 분리 단위
- Slack: 채널 + 스레드 (2단계)
- Telegram: 그룹 + 토픽 (2단계)
1:1 대응 관계
- Slack 채널 = Telegram 토픽
- Slack 스레드 = Telegram에는 대응 없음 (토픽이 최소 단위)
멘션 기본값
- Slack 채널: 멘션 필요 (기본)
- Telegram 토픽: 멘션 필요 (기본), 토픽별로
requireMention: false가능
DM 세션
- Slack DM: 메인 세션 1개에 합쳐짐
- Telegram DM: 메인 세션 1개에 합쳐짐
- 둘 다 DM에서는 분리가 안 돼요!
에이전트 분리
- Slack: 채널별 바인딩 가능 (
bindings설정) - Telegram: 토픽별
agentId설정 가능
설정 난이도
- Slack: 앱 생성 + 스코프 설정이 복잡하지만 한 번이면 끝
- Telegram: BotFather에서 봇 만들기 → 슈퍼그룹 전환 → 토픽 활성화 (단계가 많지만 각 단계는 간단)
5️⃣ 실수 방지 팁
”DM에서 주제 바꾸면 꼬여요”
DM은 Slack이든 텔레그램이든 메인 세션 하나를 공유해요. 여기서 “대시보드 만들어줘” 하다가 “업무일지도 써줘”로 바꾸면 — 이전 맥락이 남아있어서 섞여요.
해결: 새 작업은 새 장소에서!
- Slack: 새 스레드를 만들어서 시작
- Telegram: 해당 토픽으로 가서 시작
- DM에서 계속해야 한다면: “이전 주제 끝. 새 주제 시작”이라고 명시적으로 말해주기
”긴 작업은 서브에이전트에게”
수업 #12에서 배운 sessions_spawn을 기억하세요!
메인 에이전트한테 이것저것 시키면 세션이 무거워지는데, 서브에이전트를 생성하면 아예 별도 세션에서 독립 실행돼요. 리서치나 코드 작업 같은 긴 작업은 서브에이전트에게 위임하면 메인 세션을 가볍게 유지할 수 있어요.
습관 체크리스트
에이전트한테 일을 시킬 때 이것만 기억하세요:
- 같은 프로젝트 → 같은 채널/토픽에서 이어가기
- 다른 프로젝트 → 다른 채널/토픽으로 이동
- 새 작업 → Slack이면 새 스레드, Telegram이면 해당 토픽
- 긴 작업 → 서브에이전트 위임 고려
- DM은 최후의 수단 → 가능하면 채널/토픽에서
6️⃣ OpenClaw 채널 설정 한눈에 보기
실제 멀티채널 운영 구조를 설정하는 법이에요.
Slack + Telegram 동시 운영
{
"channels": {
"slack": {
"enabled": true,
"mode": "socket",
"appToken": "xapp-...",
"botToken": "xoxb-...",
"groupPolicy": "allowlist",
"channels": {
"C051BJG1K89": { "requireMention": true },
"C0A2M56PKTQ": { "requireMention": false }
}
},
"telegram": {
"enabled": true,
"botToken": "123:abc",
"dmPolicy": "allowlist",
"allowFrom": ["8298354659"],
"groups": {
"-1001234567890": {
"requireMention": true,
"topics": {
"3": { "requireMention": false }
}
}
}
}
}
}
라우팅 원리: Slack에서 온 메시지는 Slack으로, 텔레그램에서 온 메시지는 텔레그램으로 답장해요. 에이전트가 “어디로 보낼까?” 고민하는 게 아니라, 시스템이 자동으로 라우팅해요. 수업 #14에서 배운 Gateway가 이 역할을 해요.
에이전트 바인딩 — “이 채널은 이 에이전트”
여러 에이전트를 운영할 때, 채널별로 어떤 에이전트가 답할지 지정할 수 있어요:
{
"bindings": [
{
"match": { "channel": "slack", "teamId": "T04LXHA9SF7" },
"agentId": "뽀짝이"
},
{
"match": {
"channel": "telegram",
"peer": { "kind": "group", "id": "-1001234567890" }
},
"agentId": "뽀야"
}
]
}
🎓 오늘 배운 OpenClaw
- Slack 스레드 = 독립 세션: 새 작업은 새 스레드에서 시작하면 맥락이 분리됨
- 텔레그램 토픽 = 독립 세션: 슈퍼그룹 전환 → 토픽 활성화 → 토픽별 세션 분리
- 토픽별 agentId: 한 그룹 안에서 토픽마다 다른 에이전트를 연결 가능
- DM 주의: DM은 메인 세션 하나에 합쳐짐 → 채널/토픽 활용 권장
- 바인딩: 채널→에이전트 명시적 매핑으로 라우팅 제어
- 습관: 새 작업은 새 장소에서, 긴 작업은 서브에이전트에게
다음 수업에서 만나요! 🐈⬛