본문으로 건너뛰기

Heartbeat

Heartbeat는 프로필 하나의 경량 Gateway 소유 상태 루프입니다. 주기적으로 상태를 기록하고 활성 Cron 작업의 마지막 실행 실패를 확인합니다. 매 틱 비서 프롬프트를 실행하거나 모델을 호출하지 않습니다.

실행 내용과 시점​

Gateway는 시작 시 한 틱을 기록합니다. 활성화되면 구성 간격으로 계속합니다. 비활성화되면 비활성 상태를 기록하고 반복 루프를 시작하지 않습니다. Cron과 별개이며 작업 목록에 나타나지 않습니다.

설정기본값
활성화예
틱 간격1분
보고되는 실패 쿨다운15분
활성 알림 대상Gateway 이벤트 버스
역할 / 워크스페이스 라벨default / default

정상 틱은 메시지를 보내지 않습니다. 작업 ID와 마지막 실행 시간으로 실패를 비교합니다. 같은 작업의 새 실패 실행을 포함해 새로 관찰한 실패 서명을 보고하며, 시간이 지났다는 이유만으로 변하지 않은 실패를 반복하지 않습니다.

v0.1.107은 failure_cooldown을 로드·표시하지만 감지기는 변경된 실패 서명을 사용합니다. 새 실패를 지연하거나 같은 실패의 반복 알림을 예약하지 않습니다. 프로필 전체 활성 Cron을 검색하며 역할/워크스페이스 라벨로 필터링하지 않습니다.

상태 확인​

anyy heartbeat status
anyy heartbeat status --json

결과는 활성 상태, 상태, 간격, 보고 쿨다운, 역할, 워크스페이스, 전달 대상, 실패 Cron 수, 마지막 틱 시간을 포함합니다. 예를 들어 anyy --profile work heartbeat status처럼 선택 프로필을 일관되게 쓰세요.

다음에도 표시됩니다.

anyy status
anyy doctor

ok는 틱 관찰이 성공했다는 뜻입니다. 실패 수는 cron_failed_jobs를 보세요. 모든 Cron 성공이라는 뜻이 아닙니다. degraded는 검색 또는 알림 오류입니다.

Heartbeat 구성​

  1. 프로필로 대상 홈을 찾습니다.
  2. config.yaml을 백업하고 heartbeat 블록을 편집합니다.
  3. 같은 프로필에 anyy doctor를 실행합니다.
  4. anyy gateway restart로 해당 Gateway를 재시작한 뒤 anyy heartbeat status와 다음 틱을 확인합니다. 모든 명령에 같은 --profile을 사용합니다.
heartbeat:
enabled: true
tick_interval: 1m
failure_cooldown: 15m
delivery_targets:
- gateway
role_id: default
workspace_id: default

간격은 30s, 5m 같은 양수 Go 기간을 사용하세요. 공개 heartbeat set이나 수동 heartbeat tick은 없습니다. 상주 시작 때 읽으므로 편집 간격은 재시작으로 적용합니다.

알림 전달​

현재 런타임 싱크는 gateway 대상만 처리합니다. 프로필 수준 실시간 이벤트를 게시하며 채널 어댑터 경로나 세션 연결은 없습니다. delivery_targets에 플랫폼 이름을 넣어도 목적지는 구성되지 않으며 대화의 저장 시스템 알림 이력에도 포함되지 않습니다.

알림을 조사하려면 Dashboard → Cron에서 해당 작업과 이력을 확인하고 원인을 고치세요. Heartbeat는 실패를 관찰하며 재시도·복구하지 않습니다. 자동화를 다시 실행하도록 요청하거나 다음 예약을 기다린 뒤 결과를 검증하세요.

문제 해결​

증상확인 사항
unknown 유지대상 프로필 Gateway 실행 확인 후 시작 뒤 재확인
ok인데 Cron 실패cron_failed_jobs와 실행 이력 확인. ok는 상태 관찰 설명
쿨다운 변경에도 반복 알림 없음변하지 않은 실패 서명은 재전송하지 않음. 쿨다운은 반복 알림 아님
같은 작업의 새 알림또 실패한 실행 후 마지막 실행 시간이 바뀌었을 수 있음
외부 메시지 없음현재 Gateway에만 게시. 구성 채널 대상은 예약 자동화 사용
간격 편집 효과 없음해당 Gateway를 재시작하고 보고 간격 확인