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 구성
- 프로필로 대상 홈을 찾습니다.
config.yaml을 백업하고heartbeat블록을 편집합니다.- 같은 프로필에
anyy doctor를 실행합니다. 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를 재시작하고 보고 간격 확인 |