OpenClaw 멀티에이전트 트러블슈팅을 중심으로 시리즈 마지막 편입니다. 여기까지 오셨다면 에이전트에게 성격도 주고, 기억력도 설계하고, 모델도 최적화한 상태입니다. 이제 한 단계 더 — 에이전트를 여러 개 운영하는 법과, 무언가 고장났을 때 침착하게 복구하는 법을 다루겠습니다.


Part 1: 멀티 에이전트 — 왜 하나로는 부족한가?

하나의 에이전트로 모든 걸 시키면?

처음에는 메인 에이전트 하나로 충분합니다. 그런데 쓰다 보면 이런 상황이 생깁니다:

  • 블로그 글 13개 SEO 보강하라고 했는데 1시간 넘게 걸림 → 그동안 다른 질문을 못 함
  • 트레이딩 봇 3시간마다 보고하라고 했는데, 메인 에이전트가 계속 바쁨
  • 미팅 녹음 정리를 시켰는데 비싼 Claude로 돌아감

이럴 때 전문 에이전트를 따로 두면 됩니다.

멀티 에이전트 구조 예시

┌──────────────┐
│   Chloe      │  ← 메인 에이전트 (Claude Opus)
│   (main)     │     나와 직접 대화, 판단, 지시
└──────┬───────┘
       │
  ┌────┼─────────────────┐
  │    │                 │
  ▼    ▼                 ▼
┌─────┐ ┌──────┐ ┌──────────┐
│KING │ │ MAX  │ │  MEET    │
│트레 │ │분석/ │ │미팅 기록 │
│이딩 │ │전략  │ │정리      │
│봇   │ │      │ │          │
│Codex│ │GPT5.4│ │Ollama    │
│     │ │      │ │(무료)    │
└─────┘ └──────┘ └──────────┘

각 에이전트가 자기 역할에 최적화된 모델을 쓰고, 독립적으로 작동합니다.

[스크린샷: 멀티 에이전트 아키텍처 다이어그램]


에이전트 추가하기

openclaw.json에서 설정

{
  "agents": {
    "list": [
      {
        "id": "main",
        "model": "anthropic/claude-opus-4-6",
        "tools": {
          "profile": "full",
          "alsoAllow": ["browser", "message", "gateway", "tts"]
        }
      },
      {
        "id": "king",
        "name": "KING",
        "workspace": "/path/to/king/workspace",
        "agentDir": "/path/to/king/agent",
        "model": "openai-codex/gpt-5.3-codex"
      },
      {
        "id": "meet",
        "name": "MEET",
        "workspace": "/path/to/meet/workspace",
        "agentDir": "/path/to/meet/agent",
        "model": "ollama/qwen35b-meeting",
        "tools": {
          "profile": "minimal",
          "alsoAllow": ["message"]
        }
      }
    ]
  }
}

각 항목 설명:

  • id — 에이전트 고유 식별자
  • name — 표시 이름
  • workspace — 에이전트 전용 작업 폴더
  • agentDir — 에이전트 설정 파일 위치
  • model — 사용할 AI 모델
  • tools.profile — 도구 권한 수준 (full, coding, minimal)

에이전트별 텔레그램 봇 연결

각 에이전트를 별도의 텔레그램 봇에 연결할 수 있습니다.

Step 1: BotFather에서 새 봇 생성

  1. 텔레그램에서 @BotFather 검색
  2. /newbot 입력
  3. 봇 이름과 아이디 설정
  4. 토큰 복사

Step 2: openclaw.json에 계정 추가

{
  "channels": {
    "telegram": {
      "accounts": {
        "default": {
          "botToken": "메인봇_토큰",
          "allowFrom": ["내_텔레그램_ID"]
        },
        "king": {
          "botToken": "KING봇_토큰",
          "allowFrom": ["내_텔레그램_ID"]
        }
      }
    }
  }
}

Step 3: 바인딩으로 연결

어떤 텔레그램 봇으로 온 메시지를 어떤 에이전트가 처리할지 매핑합니다.

{
  "bindings": [
    {
      "agentId": "main",
      "match": {"channel": "telegram", "accountId": "default"}
    },
    {
      "agentId": "king",
      "match": {"channel": "telegram", "accountId": "king"}
    }
  ]
}

이제 메인 봇에 말하면 Chloe가, KING 봇에 말하면 KING이 응답합니다.

[스크린샷: 텔레그램에서 두 개의 봇과 대화하는 화면]

서브에이전트 — 무거운 작업 위임하기

메인 에이전트가 직접 하기엔 오래 걸리는 작업은 서브에이전트로 위임할 수 있습니다.

예시: 메인 에이전트에게 이렇게 말하면:

"블로그 13개 글 SEO 보강해줘"

메인 에이전트가 서브에이전트를 생성하고, 백그라운드에서 처리시킨 뒤, 완료되면 결과를 보고합니다. 그동안 나는 메인 에이전트와 다른 대화를 할 수 있습니다.

{
  "agents": {
    "defaults": {
      "subagents": {
        "maxConcurrent": 8
      }
    }
  }
}

maxConcurrent로 동시에 돌릴 수 있는 서브에이전트 수를 제한합니다.


크론(Cron) — 정기 작업 자동화

에이전트에게 정기적으로 작업을 시킬 수 있습니다.

예시: 3시간마다 트레이딩 손익 보고

/cron add
이름: KING 3시간 손익 보고
스케줄: 매 3시간
작업: 손익 현황을 확인해서 텔레그램으로 보고해줘

예시: 매일 아침 뉴스 요약

텔레그램에서 에이전트에게:

"매일 아침 8시에 AI 관련 뉴스 3개 요약해서 보내줘"

에이전트가 알아서 크론을 설정합니다.

크론 관리

# 크론 목록 보기
openclaw cron list

# 크론 비활성화
openclaw cron disable [job-id]

# 크론 삭제
openclaw cron remove [job-id]

[스크린샷: 크론 목록과 실행 이력]


Part 2: 트러블슈팅 — 고장났을 때 살아남기

OpenClaw를 쓰다 보면 반드시(!) 한 번은 뭔가 고장납니다. 당황하지 마세요. 대부분 10분 안에 고칠 수 있습니다.

🚨 사고 #1: JSON 깨먹었을 때 (가장 흔함!)

openclaw.json을 수동으로 편집하다가 쉼표를 빼먹거나, 괄호를 잘못 닫으면… 게이트웨이가 시작을 거부합니다.

증상:

  • 텔레그램 봇이 응답 안 함
  • openclaw gateway start 하면 에러
  • "Invalid JSON" 또는 "Unexpected token" 에러

복구 방법 1: 백업에서 복원

# 최근 백업 찾기
ls -la ~/.openclaw/backups/

# 백업에서 복원
cp ~/.openclaw/backups/openclaw.json.bak ~/.openclaw/openclaw.json

# 게이트웨이 재시작
openclaw gateway restart

💡 꿀팁: 백업 습관을 들이세요!

# 설정 수정 전에 항상 이것부터
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.backup-$(date +%Y%m%d)

복구 방법 2: Claude Code로 고치기

터미널에서 Claude Code를 직접 호출할 수 있습니다:

npx claude --print "~/.openclaw/openclaw.json 파일이 깨진 것 같아. 
JSON 문법 오류를 찾아서 고쳐줘. 현재 내용을 읽고 수정본을 보여줘."

Claude Code가 파일을 읽고, JSON 오류를 찾아서 수정해줍니다.

복구 방법 3: Codex로 고치기

codex "openclaw.json 파일에 JSON 문법 오류가 있어. 파일을 확인하고 고쳐줘."

Codex도 마찬가지로 파일을 분석하고 수정합니다. Codex는 PTY가 필요하니 일반 터미널에서 실행하세요.

복구 방법 4: 수동으로 JSON 검증

# JSON 문법 검증
cat ~/.openclaw/openclaw.json | python3 -m json.tool

# 에러 위치가 나옵니다:
# "Expecting ',' delimiter: line 42 column 5"
# → 42번째 줄 근처에서 쉼표가 빠졌다는 뜻

그래도 못 찾겠으면 jsonlint.com에 붙여넣기 하면 오류 위치를 정확히 잡아줍니다.

[스크린샷: JSON 에러 메시지와 수정 전후 비교]


🚨 사고 #2: 텔레그램 봇이 응답 안 할 때

체크리스트:

1️⃣ 게이트웨이가 살아있나?

openclaw gateway status
# "running"이 아니면:
openclaw gateway start

2️⃣ 텔레그램 플러그인 상태 확인

openclaw status
# Channels 섹션에서 Telegram이 "OK"인지 확인

3️⃣ 봇 토큰이 유효한가?

  • BotFather에서 봇을 삭제하고 재생성하지 않았는지 확인
  • openclaw.json에서 botToken 확인

4️⃣ allowFrom에 내 ID가 있나?

{
  "channels": {
    "telegram": {
      "allowFrom": ["내_텔레그램_ID"]
    }
  }
}

텔레그램 ID 모르겠으면: @userinfobot 에게 메시지 보내면 알려줍니다.

5️⃣ 그래도 안 되면 게이트웨이 재설치

openclaw gateway stop
openclaw gateway install
openclaw gateway start

🚨 사고 #3: 에이전트가 이상하게 행동할 때

갑자기 에이전트가 엉뚱한 말을 하거나, 이전 맥락을 까먹거나, 규칙을 안 지킬 때.

원인과 해결:

증상원인해결
맥락을 까먹음컴팩션이 일어남컴팩션 설정 조정 또는 /reset
규칙을 안 지킴SOUL.md/AGENTS.md 미참조워크스페이스 파일 확인
엉뚱한 응답세션이 꼬임/reset 으로 세션 초기화
느려짐컨텍스트가 너무 김/reset 또는 새 대화 시작

만능 해결책: /reset

텔레그램에서 /reset을 입력하면 현재 세션을 초기화합니다. 대화 기록은 사라지지만 워크스페이스 파일(SOUL.md 등)은 그대로이니, 에이전트의 성격과 규칙은 유지됩니다.


🚨 사고 #4: "openclaw" 명령 자체가 안 될 때

openclaw status
# command not found: openclaw

해결:

# Node.js 버전 확인
node --version
# v22 이상이어야 합니다

# OpenClaw 재설치
npm install -g openclaw
# 또는
pnpm install -g openclaw

# PATH 확인
which openclaw

🔧 openclaw doctor — 만능 진단 도구

뭔가 이상한데 원인을 모르겠을 때:

openclaw doctor

이 명령은:

  • 설정 파일 무결성 검증
  • 텔레그램 연결 상태 확인
  • 플러그인 상태 점검
  • 세션 파일 정리 (고아 파일 제거)
  • 보안 설정 감사
  • 수정 제안 제공
# 자동으로 고칠 수 있는 것들은 고치기
openclaw doctor --fix

[스크린샷: openclaw doctor 실행 결과 화면]


🔧 로그 확인 — 문제의 단서 찾기

# 실시간 로그 보기
openclaw logs --follow

# 최근 에러만 보기
openclaw logs --follow | grep -i error

로그에서 자주 보는 패턴:

로그 메시지의미대응
ETELEGRAM: 401 Unauthorized봇 토큰 만료/무효토큰 재발급
ECONNREFUSED서비스 연결 실패해당 서비스 상태 확인
context length exceeded대화가 너무 길어짐/reset
rate limitAPI 호출 한도 초과잠시 대기 또는 모델 전환

공황 방지 가이드 — "침착하게, 터미널을 열어라"

OpenClaw가 고장났을 때 기억할 것:

Step 1: 침착

에이전트가 응답 안 해도 데이터는 안전합니다. 워크스페이스 파일은 그냥 텍스트 파일이라 날아가지 않습니다.

Step 2: 상태 확인

openclaw status
openclaw doctor

이 두 명령이면 대부분의 문제 원인을 알 수 있습니다.

Step 3: 재시작

openclaw gateway restart

IT의 만능 해결책, 재시작. OpenClaw도 마찬가지입니다. 80%는 이걸로 해결됩니다.

Step 4: 외부 도움 호출

재시작으로 안 되면 터미널에서 Claude Code나 Codex를 직접 호출하세요:

# Claude Code
npx claude --print "openclaw이 안 되는데, 
openclaw status 결과를 확인하고 원인을 찾아줘"

# Codex
codex "openclaw 게이트웨이가 시작 안 돼. 
로그를 확인하고 해결해줘"

이 코딩 에이전트들은 OpenClaw 없이도 터미널에서 독립적으로 실행되니까, OpenClaw가 죽어도 쓸 수 있습니다. 응급 복구 도구로 기억해두세요.

Step 5: 커뮤니티


마무리 — 여정의 시작

4편에 걸쳐 OpenClaw 최적화의 핵심을 다뤘습니다:

  1. 영혼 — SOUL.md, AGENTS.md로 에이전트의 성격과 규칙 설계
  2. 기억 — 메모리 계층 구조로 맥락 있는 AI 만들기
  3. 효율 — 모델 배분과 스킬로 똑똑하게 사용하기
  4. 확장과 복구 — 멀티 에이전트 운영과 트러블슈팅

하지만 이건 시작일 뿐입니다. OpenClaw의 진짜 매력은 쓰면 쓸수록 나만의 AI가 되어간다는 점입니다.

처음엔 어색하고, 설정 파일 깨먹고, 에이전트가 엉뚱한 말 하고, 새벽에 JSON 고치면서 "내가 왜 이걸…" 하겠지만 (ㅋㅋ), 한 달만 지나면 "이 없이 어떻게 살았지?" 하게 됩니다.

나만의 AI, 함께 만들어가는 여정을 즐기시길 바랍니다. 🦞


시리즈 전체 목록:

  1. 내 AI에게 영혼을 불어넣자 — 에이전트 성격 설계
  2. AI의 기억력을 설계하자 — 메모리 시스템 완전 정복
  3. 현명한 지갑 관리 — 모델 선택과 비용 최적화
  4. 에이전트 군단과 생존 가이드 — 멀티 에이전트 & 트러블슈팅 (이 글)

기본부터:

참고 자료: