가이드 · AI 에이전트
Aside 루틴 고르기: heartbeat, cron, event
이전 회차의 맥락을 이어야 하면 heartbeat, 매번 새로 시작해도 되면 cron, 신호가 불규칙하게 오면 event를 씁니다. 루틴은 오류 없이 멈출 수 있으므로, 감시 루틴과 그 감시를 다시 점검하는 루틴을 함께 둡니다.
심규섭 · 수정 · 2026.09.18 확인 (Aside 2026-09 기준)
목차
Aside 공식 문서는 반복 작업을 만드는 방법까지 알려 줍니다. 이 문서는 그다음을 다룹니다. 어떤 종류를 고르는지, 루틴이 왜 멈추는지, 멈춘 루틴을 어떻게 살렸는지입니다. 모두 리텐션 운영에서 실제로 겪은 일입니다.
종류 고르기
| 종류 | 동작 | 맞는 일 | 리텐션 운영 사례 |
|---|---|---|---|
| heartbeat | 정해 둔 세션에서 이어서 깨어남 | 답장 기다리기, 5분마다 채널 점검 | 카카오 CS 가드(5분), 호텔 답장 감시, 복구 검증 |
| cron | 매번 새 세션에서 시작 | 매일 아침 수집·정리, 매시간 상태 기록 | 메타 지식 루프, 카드뉴스 생성, 주문 확인 |
| event | 알림 같은 신호가 오면 깨어남 | 무언가 도착하면 바로 반응 | 카카오 푸시 트리거(웹 푸시 구독 필요) |
고르는 기준은 상태입니다. 이전 회차의 맥락을 기억해야 하면 heartbeat, 매번 새로 시작해도 되면 cron, 도착 시점이 불규칙하면 event를 씁니다.
멈추는 경우 네 가지
정각 스케줄이 정각에 돌지 않는다
FREQ=HOURLY;BYMINUTE=0은 만든 시각의 분을 기준으로 잡습니다. 14시 43분에 만들면 매시 43분에 돕니다. 정각에 돌리려면 시와 분을 모두 적습니다.
FREQ=DAILY;BYHOUR=0,3,6,9,12,15,18,21;BYMINUTE=0;BYSECOND=0
멈춘 루틴이 ’활성’으로 보인다
state=active인 루틴이 남아 있는 paused_at과 지난 날짜의 next_run_at 때문에 며칠씩 건너뛸 수 있습니다. 화면에는 활성으로 보입니다. CS 가드 루틴이 이렇게 5일 동안 멈춰 있었고, 알림은 없었습니다.
다른 프로젝트 소유 루틴은 수정되지 않는다
다른 프로젝트가 만든 루틴은 업데이트 도구가 “루틴을 찾을 수 없음”을 돌려줄 수 있습니다. 이때는 아래 방법 B로 상태 저장소를 직접 고칩니다.
감시 루틴도 멈춘다
루틴이 도는지 감시하는 스크립트가 먼저 멈추면, 아무도 루틴이 멈춘 것을 모릅니다. 리텐션의 감시 스크립트도 DB 장애로 멈춘 채 방치돼 있었습니다. 감시는 루틴으로 두고, 그 감시도 정기적으로 직접 점검합니다. 리텐션은 “CS 가드 실점검 복구 검증” 루틴을 따로 돌립니다.
멈춘 루틴 살리기
방법 A: 업데이트 도구로 다시 시도
루틴이 내 프로젝트 소유라면 루틴 업데이트 도구로 일시정지를 먼저 풉니다. 일시정지 뒤 재개가 안 된 단순한 경우는 대부분 여기서 풀립니다. 도구가 “루틴을 찾을 수 없음”을 돌려주면 소유권 문제이므로 방법 B로 갑니다.
방법 B: state.db를 직접 수정
소유권이 다른 프로젝트에 묶였거나 도구가 실패할 때 쓰는 방법입니다. 먼저 state.db 파일을 복사해 백업합니다. 수정하면 약 60초 안에 스케줄러가 다시 잡습니다.
-- next_run_at을 지금 시각(ISO 8601)으로 당기고, 일시정지 흔적을 지운다
UPDATE routines
SET next_run_at = '<현재 ISO 8601 시각>',
paused_at = NULL,
paused_by = NULL,
pause_reason = NULL
WHERE id = '<루틴 id>';next_run_at은 ISO 8601 문자열입니다. 에포크 밀리초로 바꾸면 1970년이 되므로, 오래된 플레이북의 “epoch-ms 변환” 지시는 따르지 않습니다.
CLI 메모
- CLI 바이너리는
~/.aside/cli/Aside CLI.app/Contents/MacOS/aside입니다. PATH에 없으면 절대 경로로 부릅니다. - CLI로 만든 세션은 기본적으로 앱 화면에 보이지 않습니다.
aside settings save-sessions true로 바꿉니다. aside session list는 기본 실행 호스트와 관계없이 로컬 세션을 보여 줍니다.