하나의 봇, 여러 작업: Workspace x Telegram 완전 설정 가이드
5 min read
"오늘 일기 정리해 줘"라고 했는데 비서가 회사 프로젝트 파일을 건드리기 시작하면 꽤 아찔합니다.
그건 Workspace 구성이 올바르지 않을 때 생기는 일입니다. 이 가이드로 한 번에 정리해 봅시다.
이번 글에서 배울 것
- 전체 흐름 이해하기: 그룹 → 비서 → 워크스페이스
- 여러 Workspace 초기화하기
- Agents + Bindings 완전 설정하기
- 설정이 실제로 동작하는지 검증하기
전체 구조
목표 아키텍처는 다음과 같습니다.
Telegram 그룹 A → 비서 A → Workspace A (이 안의 파일만 만짐)
Telegram 그룹 B → 비서 B → Workspace B (이 안의 파일만 만짐)
개인 대화 → 메인 비서 → 메인 Workspace
이를 위해 필요한 단계는 세 가지입니다. Workspace 만들기 → Agent 정의하기 → Bindings 정의하기.
1단계: Workspace 만들기
각 비서는 자기만의 디렉터리가 필요합니다. 다음처럼 초기화합니다.
openclaw setup --workspace "~/.openclaw/workspace-main"
openclaw setup --workspace "~/.openclaw/workspace-project-a"
openclaw setup --workspace "~/.openclaw/workspace-project-b"각 Workspace 에는 AGENTS.md, SOUL.md, IDENTITY.md 같은 필요한 파일이 자동으로 생성됩니다.
💡 디렉터리가 없어도 명령이 만들어 줍니다. Git 에서 기존 Workspace 를 가져왔다면 초기화는 생략하고 Config 에 경로만 지정해도 됩니다.
2단계: Agents 와 Bindings 설정하기
Control UI → Config → Raw JSON 을 열고 다음 구조를 추가합니다.
시나리오 A: 같은 봇, 다른 그룹, 다른 Workspace
{
"agents": {
"list": [
{ "id": "main", "name": "Main", "workspace": "~/.openclaw/workspace-main", "default": true },
{ "id": "project-a", "name": "Project A", "workspace": "~/.openclaw/workspace-project-a" },
{ "id": "project-b", "name": "Project B", "workspace": "~/.openclaw/workspace-project-b" }
]
},
"bindings": [
{ "agentId": "project-a", "match": { "channel": "telegram", "peer": { "kind": "group", "id": "-1001234567890" } } },
{ "agentId": "project-b", "match": { "channel": "telegram", "peer": { "kind": "group", "id": "-1009876543210" } } },
{ "agentId": "main", "match": { "channel": "telegram" } }
],
"channels": {
"telegram": {
"enabled": true,
"botToken": "your bot token",
"dmPolicy": "pairing",
"groups": { "*": { "requireMention": true } }
}
}
}그룹 ID 찾는 방법
- 그룹에 아무 메시지나 보냅니다
openclaw logs --follow를 실행해chat.id를 찾습니다- 또는 메시지를 @userinfobot 에 전달합니다
시나리오 B: Bot 계정마다 다른 Workspace
여러 Bot Token 이 있다면 각 Bot 마다 자기 비서와 Workspace 를 둘 수 있습니다.
{
"agents": {
"list": [
{ "id": "main", "name": "Main Bot", "workspace": "~/.openclaw/workspace-main", "default": true },
{ "id": "alerts", "name": "Alerts Bot", "workspace": "~/.openclaw/workspace-alerts" }
]
},
"bindings": [
{ "agentId": "main", "match": { "channel": "telegram", "accountId": "default" } },
{ "agentId": "alerts", "match": { "channel": "telegram", "accountId": "alerts" } }
],
"channels": {
"telegram": {
"enabled": true,
"accounts": {
"default": { "botToken": "123456:ABC...", "dmPolicy": "pairing" },
"alerts": { "botToken": "987654:XYZ...", "dmPolicy": "allowlist", "allowFrom": ["tg:yourTelegramId"] }
}
}
}
}⚠️ 여러 계정을 쓸 때는 최상위
botToken을 두지 말고, 전부accounts안으로 옮기세요.
3단계: 저장하고 검증하기
Web UI 에서: Config 페이지의 Save / Apply 를 누릅니다.
파일을 직접 수정했다면: ~/.openclaw/openclaw.json 을 저장합니다. 보통은 핫 리로드되지만, 확실하지 않다면 다시 시작하세요.
openclaw gateway검증 방법
- 각 Telegram 그룹에 메시지를 보내 올바른 비서가 응답하는지 확인
openclaw doctor로 빠르게 상태 점검
기억할 핵심 포인트
| 목표 | 방법 |
|---|---|
| 새 Workspace 만들기 | openclaw setup --workspace "path" |
| 그룹마다 다른 Workspace | bindings 에서 peer: { kind: "group", id: "groupId" } 사용 |
| Bot 마다 다른 Workspace | channels.telegram.accounts 와 accountId 조합 |
| Bindings 가 안 먹는 것 같음 | 구체적인 규칙을 앞에 둔다. 먼저 맞는 규칙이 승리 |