하나의 봇, 여러 작업: 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 찾는 방법

  1. 그룹에 아무 메시지나 보냅니다
  2. openclaw logs --follow 를 실행해 chat.id 를 찾습니다
  3. 또는 메시지를 @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.accountsaccountId 조합
Bindings 가 안 먹는 것 같음 구체적인 규칙을 앞에 둔다. 먼저 맞는 규칙이 승리

관련 글