소개
AI Agent는 단순히 사용자 메시지를 수동적으로 기다리는 것에 그치지 않아야 합니다 — 선제적으로 행동할 수 있습니다. OpenClaw에는 cron 표현식 기반 스케줄링을 지원하는 내장 스케줄링 시스템이 있어, AI Agent가 지정된 시간에 자동으로 작업을 실행하거나, 메시지를 보내거나, 워크플로우를 트리거할 수 있습니다. 일일 날씨 보고서부터 정기적인 데이터 요약까지, 예약 메시지 기능은 Agent의 활용 범위를 크게 확장합니다.
이 문서에서는 예약 메시지 설정과 자동화 워크플로우 구축 기법을 다룹니다.
기본 예약 메시지
예약 작업 설정
openclaw.json5에서 Agent에 예약 작업을 추가합니다:
{
agents: {
"my-agent": {
schedules: [
{
// 작업 이름
name: "morning-greeting",
// Cron 표현식 (분 시 일 월 요일)
cron: "0 8 * * *", // 매일 오전 8시
// 시간대
timezone: "Asia/Shanghai",
// 대상 채널
target: {
platform: "telegram",
chatId: "123456789"
},
// AI에 전송되는 메시지 (AI가 이를 기반으로 응답 생성)
prompt: "오늘 날짜와 영감을 주는 명언을 포함한 아침 인사를 생성해 주세요."
}
]
}
}
}
Cron 표현식 빠른 참조
| 표현식 | 의미 |
|---|---|
0 8 * * * |
매일 08:00 |
0 8 * * 1-5 |
평일 08:00 |
*/30 * * * * |
30분마다 |
0 9,18 * * * |
매일 09:00과 18:00 |
0 0 1 * * |
매월 1일 00:00 |
0 0 * * 0 |
매주 일요일 00:00 |
0 */4 * * * |
4시간마다 |
일반적인 자동화 시나리오
시나리오 1: 일일 날씨 보고서
{
schedules: [{
name: "weather-report",
cron: "0 7 * * *",
timezone: "Asia/Shanghai",
target: {
platform: "telegram",
chatId: "group_weather_123"
},
prompt: "날씨 도구를 사용하여 베이징, 상하이, 광저우의 오늘 날씨를 확인한 후 날씨 보고서를 생성해 주세요.",
// 사용할 도구 지정
tools: ["weather"],
// 응답 형식
format: "markdown"
}]
}
시나리오 2: 평일 스탠드업 알림
{
schedules: [{
name: "standup-reminder",
cron: "0 9 * * 1-5",
timezone: "Asia/Shanghai",
target: {
platform: "slack",
channelId: "#dev-team"
},
// 정적 메시지 (AI 처리 없음)
staticMessage: "좋은 아침이에요, 팀! 스탠드업 시간입니다. 다음을 답변해 주세요:\n1. 어제 완료한 것\n2. 오늘 계획\n3. 차단 요소",
// 전체 멘션
mentionAll: true
}]
}
시나리오 3: 정기 데이터 요약
{
schedules: [{
name: "weekly-summary",
cron: "0 17 * * 5", // 매주 금요일 오후 5시
timezone: "Asia/Shanghai",
target: {
platform: "discord",
channelId: "analytics-channel"
},
prompt: "이번 주 사용자 데이터를 조회하고 신규 사용자, 활성 사용자, 주요 메트릭 변화를 포함한 주간 요약 보고서를 생성해 주세요.",
tools: ["sqlite", "http-fetch"]
}]
}
시나리오 4: RSS 콘텐츠 푸시
{
schedules: [{
name: "rss-digest",
cron: "0 12 * * *", // 매일 정오
target: {
platform: "telegram",
chatId: "tech_news_123"
},
prompt: "다음 RSS 피드에서 최신 10개 기사를 가져와 AI 관련 콘텐츠를 필터링한 후 요약 다이제스트를 생성해 주세요.",
tools: ["rss", "http-fetch"],
// 프롬프트에 전달되는 매개변수
params: {
feeds: [
"https://news.ycombinator.com/rss",
"https://techcrunch.com/feed/"
]
}
}]
}
워크플로우 체인 실행
OpenClaw은 여러 예약 작업을 워크플로우로 체인하여, 한 작업의 결과를 다음 작업에 전달하는 것을 지원합니다.
워크플로우 설정
{
agents: {
"workflow-agent": {
workflows: {
"daily-ops": {
// 워크플로우 트리거 시간
cron: "0 9 * * 1-5",
timezone: "Asia/Shanghai",
// 단계 체인
steps: [
{
name: "fetch-data",
prompt: "데이터베이스에서 어제의 운영 데이터를 조회해 주세요",
tools: ["sqlite"],
// 출력을 변수로 저장
outputVar: "dailyData"
},
{
name: "analyze",
prompt: "다음 운영 데이터를 분석하고 이상 메트릭을 식별해 주세요: {{dailyData}}",
outputVar: "analysis"
},
{
name: "report",
prompt: "다음 분석을 기반으로 일일 운영 보고서를 생성해 주세요: {{analysis}}",
// 대상 채널로 전송
target: {
platform: "slack",
channelId: "#ops-daily"
}
}
],
// 단계 실패 시 처리
onError: {
notify: {
platform: "telegram",
chatId: "admin_123",
message: "워크플로우 daily-ops 실패: {{error}}"
}
}
}
}
}
}
}
조건부 분기
워크플로우 단계는 조건부 로직을 지원합니다:
{
steps: [
{
name: "check-metrics",
prompt: "핵심 시스템 메트릭이 정상인지 확인해 주세요",
outputVar: "status"
},
{
name: "alert",
// 이전 단계 출력에 "anomaly"가 포함된 경우에만 실행
condition: "{{status}} contains 'anomaly'",
prompt: "이상 알림 보고서를 생성해 주세요: {{status}}",
target: {
platform: "telegram",
chatId: "oncall_group"
}
},
{
name: "normal-log",
condition: "{{status}} not contains 'anomaly'",
staticMessage: "시스템 상태 점검을 통과했습니다.",
target: {
platform: "slack",
channelId: "#monitoring"
}
}
]
}
작업 관리
명령줄 관리
# 모든 예약 작업 목록
openclaw schedules list
# 수동으로 작업 트리거 (cron 시간을 기다리지 않음)
openclaw schedules run morning-greeting
# 작업 일시 정지
openclaw schedules pause weekly-summary
# 작업 재개
openclaw schedules resume weekly-summary
# 작업 실행 이력 보기
openclaw schedules history morning-greeting --last 10
대시보드 관리
OpenClaw 웹 대시보드는 시각적 작업 관리 인터페이스를 제공합니다:
- 모든 예약 작업의 상태 및 다음 실행 시간 보기
- 수동으로 작업 실행 트리거
- 실행 로그 및 출력 보기
- 작업 일시 정지/재개/편집
오류 처리 및 재시도
{
schedules: [{
name: "critical-report",
cron: "0 9 * * *",
// 재시도 설정
retry: {
maxAttempts: 3,
backoffMs: 5000, // 재시도 간격
// 모든 재시도 실패 후 알림
onFailure: {
platform: "telegram",
chatId: "admin_123",
message: "예약 작업 critical-report가 3회 연속 실패했습니다"
}
},
// 타임아웃 설정 (초)
timeout: 120,
// ...기타 설정
}]
}
외부 Cron과의 통합
기존 cron 시스템(예: Linux crontab 또는 Kubernetes CronJob)이 있다면 API를 통해 OpenClaw 작업을 트리거할 수 있습니다:
# 시스템 crontab에 설정
0 8 * * * curl -X POST http://localhost:3000/api/v1/schedules/morning-greeting/run \
-H "Authorization: Bearer sk-openclaw-xxx"
이 방법으로 기존 cron 인프라를 활용하면서 OpenClaw의 작업 오케스트레이션 기능의 이점을 얻을 수 있습니다.
모범 사례
- 시간대 명시: 서버 시간대 설정으로 인한 혼란을 방지하기 위해 항상
timezone을 명시적으로 지정 - 오류 알림: 중요한 작업에 대해 실패 알림을 설정하여 조용한 실패 방지
- 실행 시간대: 시스템 피크 시간대에 대량의 작업 예약을 피함
- 멱등성 설계: 재시도로 인한 중복 작업을 방지하기 위해 안전하게 재실행 가능하도록 설계
- 로그 검토: 작업이 올바르게 실행되고 있는지 확인하기 위해 정기적으로 실행 이력 확인
요약
OpenClaw의 예약 메시지 및 자동화 워크플로우 기능은 AI Agent를 수동 응답에서 능동적 서비스로 업그레이드합니다. cron 스케줄링, 워크플로우 체인, 조건부 분기, 오류 처리를 통해 완전한 자동화 파이프라인을 구축할 수 있습니다 — 간단한 정시 알림부터 복잡한 다단계 데이터 처리 워크플로우까지, OpenClaw이 모두 처리합니다.