research

ZeroClaw — Daemon 스케줄링 구조

ZeroClaw — Daemon 스케줄링 구조

Daemon이 관리하는 컴포넌트 전체와 각각이 어떻게 작업을 트리거하는지. 소스: src/daemon/mod.rs


전체 구조


컴포넌트별 트리거 방식 비교

컴포넌트트리거실행 조건Agent 위임
GatewayHTTP 요청요청 수신 시항상
Channels플랫폼 메시지메시지 수신 시항상
Heartbeatinterval_minutes 타이머two_phase=true면 LLM이 태스크 선택선택적
Schedulernext_run <= nowenabled=true + SecurityPolicy 통과JobType::Agent만

spawn_component_supervisor — 지수 백오프 재시작

컴포넌트가 Ok(())로 정상 종료해도 재시작. 데몬 컴포넌트는 무한 루프여야 하기 때문.


Heartbeat vs Scheduler 차이

두 컴포넌트 모두 시간 기반이지만 성격이 다르다.

HeartbeatScheduler (Cron)
간격 단위분 (N분마다)초 폴링 → cron 표현식
작업 정의config.toml의 태스크 목록SQLite의 CronJob 레코드
LLM 판단two_phase=true면 LLM이 뭘 실행할지 결정없음. 예약된 대로 실행
적응 로직실패 누적 시 interval 늘림 (adaptive)재시도 + backoff (execute_job_with_retry)
Deadman switch있음 (N분 무응답 시 알림)없음
목적자율적 주기 작업 ("스스로 할 일")명시적 예약 작업 ("정해진 시각에 할 일")

관련