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 도구를 통해 생성되며, 독립 세션에서 작업을 수행하고 완료 후 결과를 메인 채팅에 보고한다.
기본 동작
- 메인 에이전트가
sessions_spawn을 호출 - 서브에이전트가 독립 세션에서 작업 수행
- 완료 후 결과가 메인 세션에 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를 쓰는 전략이 효과적이다.