OpenClaw의 Heartbeats: 저비용 검사 먼저, 필요할 때만 모델

발행: (2026년 2월 7일 오전 09:12 GMT+9)
6 분 소요
원문: Dev.to

Source: Dev.to

핵심 아이디어: 심장박동은 워크플로가 아니라 게이트

심장박동을 게이트키퍼라고 생각하세요. 좋은 심장박동은 다음과 같은 질문에 답합니다:

  • 뭔가 깨졌나요? (CI 실패, 오류, 배포 알람)
  • 뭔가 바뀌었나요? (새 PR, 새 작업 대기열, 고객으로부터 온 새 이메일)
  • 시간에 민감한가요? (2시간 이내 일정 이벤트, 만료되는 인증서)

위 질문들에 모두 “아니오”라면 가장 좋은 출력은 문자 한 줄입니다:

HEARTBEAT_OK

그 외는 잡음에 불과합니다.

보통 모델이 필요하지 않은 이유

대부분의 심장박동 로직은 “추론”이 아닙니다. 단순히 상태를 확인하는 것이죠. LLM이 필요 없는 예시:

  • 레포가 더럽나요?
  • 열린 PR이 있나요?
  • 에이전트 큐가 늘었나요?
  • 작업이 실패했나요?
  • Slack/WhatsApp 연결이 끊겼나요?

이 경우 셸 스크립트와 몇 번의 API 호출이면 충분합니다.

#!/usr/bin/env bash
# cheap‑checks.sh – returns HEARTBEAT_OK or an alert list

# Example checks (replace with real logic)
if git status --porcelain | grep .; then
  echo "HEARTBEAT_ALERT: repository has uncommitted changes"
  exit 0
fi

if curl -s https://api.example.com/ci/status | grep "failed"; then
  echo "HEARTBEAT_ALERT: CI pipeline failed"
  exit 0
fi

echo "HEARTBEAT_OK"

실용적인 패턴: 먼저 저비용 모드

가벼운 스크립트를 먼저 실행합니다. 출력은 다음 중 하나입니다:

  • HEARTBEAT_OK
  • HEARTBEAT_ALERT + 변경된 내용의 불릿 리스트

알림이 출력될 때만 모델을 사용합니다. 이렇게 하면 두 장점이 모두 살아납니다:

  • $0 심장박동을 대부분의 경우에 수행
  • 실제 문제가 발생했을 때는 깔끔한 인간용 요약을 제공

언제 모델을 사용해야 할까?

출력이 언어 이해의 혜택을 받을 때 모델을 쓰는 것이 가치 있습니다:

  • 여러 알림을 하나의 메시지로 요약
  • 동시에 여러 변화가 일어났을 때 무엇을 먼저 할지 결정
  • 사람이 실제로 읽고 싶어 하는 “브리프” 작성
  • 원시 로그를 짧은 실행 계획으로 변환

내 설정에서는 다음과 같이 간단히 유지합니다:

  1. 저비용 검사를 실행한다.
  2. 알림이 생성되면 → 작은 모델(예: Claude Haiku)을 사용해 요약하고 다음 행동을 권고한다.

심장박동 빈도 조정: 빠르다고 항상 좋은 건 아니다

심장박동 스케줄은 모니터링과 비슷합니다: 중요한 것을 잡을 만큼 충분히 빠르게 하지만 스팸(또는 비용 폭증)으로 이어지지는 않게 해야 합니다.

짧은 간격 (예: 5분마다)

적합한 경우

  • 고속 배포(많은 PR / CI 실행)
  • 활발한 사고 대응
  • “지금 바로 대응”이 필요한 상황

부적합한 경우

  • 매번 LLM을 실행하면 비용 증가
  • 알림 피로 (“또 다른 알림… 아무 일도 아님”)
  • 낭비되는 컴퓨팅/API 호출

긴 간격 (예: 30~60분마다)

적합한 경우

  • 대부분의 솔로 창업자 작업
  • “눈여겨 보기” 워크플로
  • 방해 없이 정보를 얻고 싶을 때

부적합한 경우

  • 실패를 나중에 알게 됨
  • 일부 작업이 “실시간” 느낌이 안남

간단한 경험법칙

  • 활발히 배포 중: 5–15분마다
  • 빌드 모드지만 안정적: 30분마다
  • 그냥 감시: 60–120분마다

정확한 시간에 무언가가 필요하면 (“오전 9시 정확히 알림”) 심장박동 대신 예약 작업(cron)을 사용하세요.

요약

OpenClaw(또는 어떤 에이전트 시스템) 을 사용한다면:

  • 심장박동을 저비용·결정론적으로 만들 것.
  • 모델을 에스컬레이션 레이어로 취급하고 기본으로 두지 않을 것.
  • 빈도를 조정해 신호는 얻고 잡음은 최소화할 것.

이 패턴을 복제하려면 HEARTBEAT_OK 혹은 짧은 HEARTBEAT_ALERT 리스트를 출력하는 작은 스크립트부터 시작하고, 필요할 때만 모델로 알림을 요약하면 됩니다.

0 조회
Back to Blog

관련 글

더 보기 »

UX/UI 타이포그래피

Typography란 무엇을 의미할까요? - 어떤 font를 사용할지 - 어느 위치에서 얼마나 크게 할지 - 얼마나 굵게 할지 - 행 간격 - ...

이번 주 상위 7개 추천 DEV 게시물

이번 주 Top 7에 오신 것을 환영합니다. DEV 편집팀이 지난 주에 가장 좋아한 게시물을 직접 선정했습니다. 선정된 모든 저자분들께 축하드립니다.