예약 작업
Elftia의 예약 작업 시스템(Cron)을 사용하면 반복적인 작업을 일정에 따라 자동으로 실행할 수 있습니다. 데스크톱 알림과 AI Agent 작업 실행이라는 두 가지 액션 유형을 지원하며, Channel 메시징 플랫폼으로 결과를 푸시할 수 있습니다.
사용 사례
- 매일 오전 9시에 AI가 최신 기술 뉴스를 요약하도록 하기
- 30분마다 API 상태를 확인하고 알림 받기
- 지정한 시간에 일회성 알림 전송하기
- 주기적으로 AI Agent가 데이터 분석을 실행하고 결과를 Discord 또는 Telegram으로 푸시하기
- 매주 월요일 아침에 자동으로 주간 업무 계획 생성하기
예약 작업 만들기
단계
- Cron 관리 페이지를 열기 (사이드바 또는 탐색 메뉴에서)
- 작업 만들기 버튼 클릭
- 작업 정보 입력:
- 작업 이름 — 작업을 잘 설명하는 이름 입력
- 설명 (선택 사항) — 작업의 목적을 상세히 설명
- 일정 유형 — 실행 빈도 선택 (아래 일정 유형 참조)
- 액션 유형 — 알림 또는 Agent 실행 선택
- 메시지 내용 — 알림 텍스트 또는 Agent 프롬프트
- (선택 사항) Channel 푸시 설정
- (선택 사항) Agent 작업에 사용할 LLM 제공자 및 모델 선택
- 저장 클릭
일정 유형
Elftia는 간단한 것부터 복잡한 타이밍 요구 사항까지 모든 것을 아우르는 세 가지 예약 방식을 지원합니다.
Cron 표현식
표준 5필드 Cron 표현식을 사용하여 실행 시간을 정밀하게 제어합니다.
형식: 분 시 일 월 요일
| 필드 | 범위 | 특수 문자 |
|---|---|---|
| 분 | 0-59 | * , - / |
| 시 | 0-23 | * , - / |
| 일 | 1-31 | * , - / |
| 월 | 1-12 | * , - / |
| 요일 | 0-7 (0과 7 모두 일요일) | * , - / |
자주 쓰는 예시:
| 표현식 | 의미 |
|---|---|
0 9 * * * | 매일 오전 9:00 |
30 8 * * 1-5 | 평일 오전 8:30 |
0 */2 * * * | 2시간마다 정각 |
0 9 1 * * | 매월 1일 오전 9:00 |
0 9 * * 1 | 매주 월요일 오전 9:00 |
*/15 * * * * | 15분마다 |
0 9,18 * * * | 매일 오전 9:00 및 오후 6:00 |
특수 문자 참고:
| 문자 | 설명 | 예시 |
|---|---|---|
* | 모든 값에 매칭 | * * * * * 매 분마다 |
, | 여러 값 목록 | 0,30 * * * * 매 시간 0분 및 30분 |
- | 범위 | 0 9-17 * * * 오전 9시부터 오후 5시까지 정각마다 |
/ | 스텝 | */10 * * * * 10분마다 |
:::tip 시각적 보조 기능 작업을 생성할 때 인터페이스에서 시각적 일정 모드 선택기를 제공합니다. 매일, 평일, 매주, 매월, 매 시간 등의 프리셋이 있어 Cron 표현식을 직접 작성할 필요가 없습니다. 프리셋을 선택하면 해당 Cron 표현식이 자동으로 생성됩니다. :::
간격 실행 (every)
고정된 간격으로 작업을 반복합니다.
형식: 숫자 + 단위
| 단위 | 기호 | 예시 |
|---|---|---|
| 초 | s | 30s — 30초마다 |
| 분 | m | 5m — 5분마다 |
| 시간 | h | 1h — 1시간마다 |
| 일 | d | 3d — 3일마다 |
동작 참고:
- 간격은 이전 실행이 완료된 시점부터 계산됩니다
- 앱을 재시작한 후 시스템은 마지막으로 기록된 실행 시간부터 타이밍을 재개하며 즉시 트리거되지 않습니다
일회성 실행 (at)
지정된 정확한 시간에 작업을 한 번 실행하고, 실행 후 자동으로 비활성화됩니다.
형식: ISO 8601 날짜/시간 문자열
예시: 2026-04-15T09:00:00
동작 참고:
- 지정된 시간이 지난 후 다음 확인 주기에서 작업이 실행됩니다 (확인 간격은 30초)
- 실행이 완료되면 작업이 자동으로 비활성 상태로 전환됩니다
- 만료된 일회성 작업은 트리거되지 않습니다
액션 유형
알림 (notify)
데스크톱 시스템 알림을 전송합니다.
- 작업이 실행되면 작업 이름과 메시지 내용을 표시하는 데스크톱 알림이 팝업됩니다
- 시스템에서 앱의 알림 전송을 허용해야 합니다
- Elftia의 알림 설정에서 활성화 또는 비활성화할 수 있습니다
Agent 실행 (agent)
AI Agent를 트리거하여 지정된 프롬프트 작업을 실행합니다.
- 작업이 실행되면 시스템이 메시지 내용을 프롬프트로 AI Agent에 전송합니다
- Agent가 프롬프트의 지시를 실행하고 응답을 생성합니다
- 응답은 실행 기록에 저장됩니다 (최대 2,000자까지 저장)
- 작업에 Channel이 설정되지 않은 경우 실행 결과는 데스크톱 알림으로 표시됩니다 (
notifyOnComplete에 의해 제어)
LLM 제공자 설정
Agent 작업은 사용할 LLM 제공자와 모델을 지정할 수 있습니다:
| 설정 | 설명 |
|---|---|
| 제공자 (providerId) | 작업을 실행할 LLM 제공자 선택 |
| 모델 (model) | 특정 AI 모델 선택 |
지정하지 않으면 현재 기본 제공자와 모델이 사용됩니다.
Channel 푸시
예약 작업은 실행 결과를 외부 메시징 플랫폼(Discord, Telegram 등)으로 푸시하는 것을 지원합니다.
설정 단계
- 작업을 생성하거나 편집할 때 Channel 푸시 활성화
- 대상 Channel 선택 (Channel 관리에서 먼저 설정해야 함)
- 대상 Chat ID 입력 (Channel 내 그룹 또는 채널 ID)
- Agent 실행이 완료되면 결과가 자동으로 지정된 Channel로 전송됩니다
동작 참고
- Channel이 설정된 Agent 작업의 경우 프롬프트에 Channel 정보가 포함됩니다
- Agent는
channel_sendMCP 도구를 사용하여 대상 Channel로 결과를 전송하도록 지시됩니다 - Channel이 설정되지 않은 Agent 작업은 로컬에서만 실행되며 결과는 데스크톱 알림으로 표시됩니다
실행 기록
각 작업의 실행 기록은 자동으로 기록됩니다. 작업당 최대 200개의 최근 기록이 유지됩니다.
기록 필드
| 필드 | 설명 |
|---|---|
| 타임스탬프 | 실행이 시작된 시간 |
| 상태 | ok (성공) 또는 error (실패) |
| 소요 시간 | 실행 시간 (밀리초) |
| 오류 메시지 | 실패 시 오류 설명 |
| Agent 응답 | Agent 작업의 응답 내용 (최대 2,000자) |
기록 보기
- Cron 관리 페이지에서 작업 클릭
- 작업 상세 패널 펼치기
- 실행 기록 탭 보기
작업 관리
일시 중지 / 재개
- 작업의 토글 스위치를 클릭하여 작업을 일시 중지하거나 재개합니다
- 일시 중지된 작업은 다시 활성화될 때까지 트리거되지 않습니다
지금 실행
- 작업의 지금 실행 버튼을 클릭하여 수동으로 한 번 실행합니다
- 작업의 정상 일정에 영향을 주지 않습니다
- 작업이 이미 실행 중인 경우 다시 클릭해도 동시 실행이 생성되지 않습니다
편집
- 작업을 클릭하여 편집 모드로 진입
- 이름, 설명, 일정 유형, 액션 유형, Channel 설정을 수정할 수 있습니다
- 변경 사항을 저장하면 다음 실행 시간이 자동으로 재계산됩니다
삭제
- 작업을 삭제하면 실행 기록도 함께 삭제됩니다
- 삭제는 취소할 수 없습니다
상태 이벤트 브로드캐스팅
예약 작업은 실행 중에 프론트엔드로 상태 이벤트를 브로드캐스팅합니다:
| 상태 | 설명 |
|---|---|
running | 작업 시작됨 |
success | 작업이 성공적으로 완료됨 |
error | 작업 실패 |
인터페이스는 실시간으로 작업 상태 표시기를 업데이트하므로 백그라운드 작업의 상태를 한눈에 확인할 수 있습니다.
시스템 동작
| 동작 | 설명 |
|---|---|
| 폴링 간격 | 5초마다 작업 설정 다시 로드 |
| 확인 간격 | 30초마다 일정 시간 확인 |
| Cron 중복 제거 | 같은 Cron 작업은 동일한 분 내에 한 번만 실행됨 |
| 동시 실행 제어 | 같은 작업은 동시에 실행되지 않음 |
| 데이터 저장 | 작업 설정은 jobs.json에 저장, 기록은 runs/ 디렉토리에 저장 |
자주 묻는 질문
| 문제 | 해결 방법 |
|---|---|
| 작업이 제때 실행되지 않음 | 작업이 활성화되어 있고 일정 표현식이 올바른지 확인 |
| Cron 표현식이 유효하지 않음 | 인터페이스의 시각적 일정 모드를 사용하거나 위의 표현식 예시를 참고 |
| Agent 작업 실행 실패 | LLM 제공자가 올바르게 설정되어 있고 API Key가 유효한지 확인 |
| Channel 푸시 메시지를 받지 못함 | Channel이 올바르게 설정되어 있고 Chat ID가 유효한지 확인 |
| 일회성 작업이 트리거되지 않음 | 지정된 시간이 아직 지나지 않았는지 확인; 시간은 ISO 형식이어야 함 |
| 기록이 잘림 | 시스템은 가장 최근 200개의 기록만 자동으로 유지하며 오래된 기록은 삭제됨 |
| 앱 재시작 후 간격 작업이 즉시 트리거됨 | 정상적인 경우 즉시 트리거되지 않음; 시스템이 마지막 실행 시간부터 타이밍을 재개함 |