개요
크론 잡은 게이트웨이의 내장 스케줄러로 에이전트 작업을 예약 실행한다. 일회성, 반복, cron 표현식을 지원하며, ~/.openclaw/cron/jobs.json에 영구 저장된다.
스케줄 타입
at (일회성)
특정 시각에 한 번만 실행한다.
{
"schedule": {
"type": "at",
"time": "2026-04-01T09:00:00+09:00"
}
}
every (간격)
일정 간격으로 반복 실행한다.
{
"schedule": {
"type": "every",
"interval": "1h"
}
}
지원 단위: m (분), h (시간), d (일)
cron (표현식)
5필드 또는 6필드 cron 표현식으로 정밀한 스케줄을 설정한다.
{
"schedule": {
"type": "cron",
"expression": "0 9 * * 1-5"
}
}
| 필드 | 범위 | 설명 |
|---|---|---|
| 분 | 0-59 | |
| 시 | 0-23 | |
| 일 | 1-31 | |
| 월 | 1-12 | |
| 요일 | 0-6 | 0=일요일 |
| 초 (6필드) | 0-59 | 선택 |
세션 모드
크론 잡이 실행될 때 사용하는 세션을 지정한다.
| 모드 | 설명 |
|---|---|
main | 에이전트의 메인 세션에서 실행 |
isolated | 매 실행마다 새로운 격리 세션 생성 (기본값) |
custom | 지정한 세션 ID에서 실행 |
{
"cron": {
"sessionMode": "isolated"
}
}
전달 방식 (Delivery)
크론 잡 결과를 어디에 전달할지 설정한다.
| 방식 | 설명 |
|---|---|
announce | 지정 채널에 결과 메시지 전송 |
webhook | 외부 URL에 결과 POST |
none | 결과 전달 없음 (로그만 기록) |
{
"cron": {
"delivery": {
"type": "announce",
"channel": "telegram",
"target": "group-daily-report"
}
}
}
재시도 정책
일회성 (at)
실패 시 최대 3회 재시도한다.
실행 → 실패 → 재시도 1 → 실패 → 재시도 2 → 실패 → 재시도 3 → 포기
반복 (every, cron)
실패 시 **지수 백오프(exponential backoff)**로 재시도한다.
실패 → 1분 대기 → 재시도
→ 2분 대기 → 재시도
→ 4분 대기 → 재시도
→ 다음 정규 스케줄에서 재개
저장소
크론 잡 설정은 다음 파일에 영구 저장된다.
~/.openclaw/cron/jobs.json
[
{
"id": "daily-report",
"agent": "my-agent",
"task": "일일 보고서를 생성하고 #report 채널에 전송해줘",
"schedule": { "type": "cron", "expression": "0 9 * * 1-5" },
"sessionMode": "isolated",
"delivery": { "type": "announce", "channel": "slack", "target": "#report" },
"enabled": true
}
]
CLI 명령어
크론 잡 추가
openclaw cron add \
--name "daily-report" \
--schedule "0 9 * * 1-5" \
--task "일일 보고서 생성" \
--delivery announce --channel slack --target "#report"
크론 잡 목록
openclaw cron list
ID | Schedule | Next Run | Status
--------------|----------------|--------------------|--------
daily-report | 0 9 * * 1-5 | 2026-04-02 09:00 | active
weekly-summary| 0 10 * * 1 | 2026-04-07 10:00 | active
크론 잡 수동 실행
openclaw cron run daily-report
스케줄을 무시하고 즉시 실행한다. 테스트 및 디버깅에 유용하다.
크론 잡 비활성화/삭제
openclaw cron disable daily-report
openclaw cron remove daily-report