본문 바로가기
리텐션 주식회사

리텐션 주식회사

가이드 · AI 에이전트

Aside 루틴 고르기: heartbeat, cron, event

이전 회차의 맥락을 이어야 하면 heartbeat, 매번 새로 시작해도 되면 cron, 신호가 불규칙하게 오면 event를 씁니다. 루틴은 오류 없이 멈출 수 있으므로, 감시 루틴과 그 감시를 다시 점검하는 루틴을 함께 둡니다.

심규섭 · 수정 · 2026.09.18 확인 (Aside 2026-09 기준)

목차
  1. 종류 고르기
  2. 멈추는 경우 네 가지
  3. 정각 스케줄이 정각에 돌지 않는다
  4. 멈춘 루틴이 ’활성’으로 보인다
  5. 다른 프로젝트 소유 루틴은 수정되지 않는다
  6. 감시 루틴도 멈춘다
  7. 멈춘 루틴 살리기
  8. CLI 메모

Aside 공식 문서는 반복 작업을 만드는 방법까지 알려 줍니다. 이 문서는 그다음을 다룹니다. 어떤 종류를 고르는지, 루틴이 왜 멈추는지, 멈춘 루틴을 어떻게 살렸는지입니다. 모두 리텐션 운영에서 실제로 겪은 일입니다.

종류 고르기

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는 기본 실행 호스트와 관계없이 로컬 세션을 보여 줍니다.

이 문서의 Markdown 원문 · AI 에이전트 문서 전체