OpenClaw 크론 작업과 서브에이전트 활용법

OpenClaw에는 Gateway 레벨에서 동작하는 크론 스케줄러와, 서브에이전트(sub-agent) 시스템이 내장되어 있다. 이 두 기능을 조합하면 반복 작업 자동화와 병렬 작업 처리를 설정할 수 있다. 이 글에서는 실제 문서를 기반으로 사용법을 정리한다.

공식 문서:
- 크론: https://docs.openclaw.ai/automation/cron-jobs
- 서브에이전트: https://docs.openclaw.ai/tools/subagents

크론 작업 (Cron Jobs)

크론은 Gateway의 내장 스케줄러다. 모델 내부가 아니라 Gateway 프로세스에서 동작하며, 작업 정보는 ~/.openclaw/cron/jobs.json에 영구 저장된다. 게이트웨이를 재시작해도 스케줄이 유지된다.

스케줄 종류

세 가지 스케줄 방식을 지원한다:

종류 설명 예시
at 일회성, 특정 시각에 실행 2026-02-15T09:00:00Z
every 고정 간격으로 반복 (밀리초 단위) 3600000 (1시간마다)
cron 5필드 크론 표현식 0 7 * * * (매일 오전 7시)

크론 표현식은 croner 라이브러리를 사용하며, IANA 타임존 지정이 가능하다. 타임존을 생략하면 게이트웨이 호스트의 로컬 타임존이 적용된다.

실행 방식: Main vs Isolated

크론 작업은 두 가지 실행 방식이 있다:

Main session (systemEvent)
- 메인 세션에 시스템 이벤트를 넣고, 하트비트 타이밍에 실행
- 메인 에이전트의 컨텍스트를 그대로 사용
- 대화 맥락이 필요한 작업에 적합

Isolated session (agentTurn)
- 독립 세션 cron:<jobId>에서 별도 에이전트 턴으로 실행
- 매 실행마다 새 세션 (이전 대화 없음)
- 기본적으로 결과를 채널에 announce
- 반복적이거나 메인 채팅을 어지럽히지 않아야 하는 작업에 적합

CLI 사용 예시

일회성 리마인더 생성:

openclaw cron add \
  --name "Reminder" \
  --at "2026-02-15T09:00:00Z" \
  --session main \
  --system-event "리마인더: 보고서 마감일 확인" \
  --wake now \
  --delete-after-run

매일 아침 7시에 브리핑을 텔레그램으로 받기:

openclaw cron add \
  --name "Morning brief" \
  --cron "0 7 * * *" \
  --tz "Asia/Seoul" \
  --session isolated \
  --message "오늘의 주요 뉴스와 일정을 정리해줘." \
  --announce \
  --channel telegram \
  --to "chat:123456789"

크론 작업 관리:

openclaw cron list          # 전체 작업 목록
openclaw cron run <job-id>  # 수동 즉시 실행
openclaw cron runs --id <job-id>  # 실행 이력 확인

Delivery 설정

Isolated 작업의 결과 전달 방식:

  • announce (기본값): 결과를 지정한 채널로 전송하고, 메인 세션에 요약 게시
  • none: 내부 실행만, 외부 전달 없음

채널과 대상을 지정할 수 있다:

{
  "delivery": {
    "mode": "announce",
    "channel": "telegram",
    "to": "chat:123456789"
  }
}

모델 오버라이드

Isolated 작업에서는 모델과 thinking 레벨을 개별 지정할 수 있다. 비용을 줄이려면 반복 작업에 저렴한 모델을 지정하는 게 좋다:

openclaw cron add \
  --name "Daily summary" \
  --cron "0 18 * * *" \
  --tz "Asia/Seoul" \
  --session isolated \
  --message "오늘 작업한 내용을 정리해줘." \
  --model "anthropic/claude-sonnet-4" \
  --announce \
  --channel telegram

서브에이전트 (Sub-Agents)

서브에이전트는 메인 에이전트가 백그라운드 작업을 위임하는 메커니즘이다. sessions_spawn 도구를 통해 생성되며, 독립 세션에서 작업을 수행하고 완료 후 결과를 메인 채팅에 보고한다.

기본 동작

  1. 메인 에이전트가 sessions_spawn을 호출
  2. 서브에이전트가 독립 세션에서 작업 수행
  3. 완료 후 결과가 메인 세션에 announce (소요 시간, 토큰 사용량, 비용 포함)

기본 설정으로 추가 설정 없이 동작한다. 최대 동시 실행 기본값은 8개.

사용 방법

에이전트에게 자연어로 요청하면 된다:

  • "서브에이전트 생성해서 Node.js 최신 릴리스 노트 조사해줘"
  • "서브에이전트로 서버 로그 분석해줘. GPT-5.2 모델 쓰고 타임아웃 5분으로 설정해."

sessions_spawn 파라미터

파라미터 타입 설명
task string (필수) 서브에이전트가 수행할 작업
label string 식별용 라벨
model string 모델 오버라이드
thinking string thinking 레벨 (off, low, medium, high 등)
runTimeoutSeconds number 타임아웃 (초)
cleanup string "delete" 또는 "keep"

비용 절약을 위한 모델 설정

서브에이전트에 기본적으로 저렴한 모델을 지정할 수 있다:

{
  "agents": {
    "defaults": {
      "subagents": {
        "model": "anthropic/claude-sonnet-4",
        "thinking": "low",
        "maxConcurrent": 4
      }
    }
  }
}

도구 제한

서브에이전트는 기본적으로 일부 도구가 차단된다:
- sessions_spawn (서브에이전트가 서브에이전트를 만드는 것 방지)
- cron, gateway, agents_list (시스템 관리 도구)
- memory_search, memory_get (메인 에이전트가 필요한 정보를 spawn 시 전달해야 함)

추가 제한도 설정 가능:

{
  "tools": {
    "subagents": {
      "tools": {
        "deny": ["browser"],
        "allow": ["read", "exec", "write", "edit"]
      }
    }
  }
}

서브에이전트 관리

/subagents 슬래시 명령어로 관리:

/subagents list           -- 전체 목록
/subagents stop <id>      -- 특정 서브에이전트 중지
/subagents log <id>       -- 실행 로그 확인
/subagents info <id>      -- 상세 메타데이터
/subagents send <id> <msg> -- 실행 중인 서브에이전트에 메시지 전송

크론 + 서브에이전트 조합 예시

매일 아침 뉴스 브리핑

크론으로 매일 오전 8시에 isolated 작업 실행. AI가 웹 검색으로 뉴스를 수집하고 요약해서 텔레그램으로 전송.

정기 경쟁사 모니터링

크론으로 매주 월요일에 실행. 서브에이전트 여러 개가 각각 다른 경쟁사 웹사이트를 분석하고, 결과를 통합해서 리포트 생성.

자동 콘텐츠 번역

크론으로 새 콘텐츠 감지 시 실행. 서브에이전트가 여러 언어로 병렬 번역 수행.

서버 상태 모니터링

크론으로 30분마다 서버 상태를 체크하고, 이상 발견 시 텔레그램으로 알림.

정리

크론과 서브에이전트는 OpenClaw의 자동화 핵심이다. 크론은 "언제 실행할 것인가"를, 서브에이전트는 "어떻게 병렬로 처리할 것인가"를 담당한다. 두 기능을 조합하면 정기 리포트, 모니터링, 자동 번역 등 다양한 자동화 워크플로우를 구성할 수 있다.

비용 관리를 위해 반복 작업에는 저렴한 모델(Sonnet, Haiku)을, 복잡한 일회성 작업에는 Opus를 쓰는 전략이 효과적이다.

댓글 0

댓글을 작성하면 로그인 페이지로 이동합니다.