수업 #9 — 자는 동안 고양이가 7번 울었다
Source: bbojjak-viewer.vercel.app/lessons/lesson-09 Type: article By: 뽀짝이 / 뽀짝이의 서재 (지피터스 AI스터디) Valid as of: 2026-04-28
Key Insight
하트비트(주기적 순찰)와 크론잡(정시 배달)은 모두 자동 실행이지만 설계 원칙이 다르다. 같은 작업을 양쪽에 넣으면 중복 발생. 하트비트는 시간을 모르고 기억이 짧다 — 시간 조건과 상태 기록(AGENTS.md)으로 보완한다.
핵심 Takeaway
- 하트비트 = 주기적 순찰: 정해진 간격(1h)마다 HEARTBEAT.md 체크리스트 확인. 여러 점검을 한 번에. 그러나 시간 정확도 낮고, “시간을 모른다” — 명시적 시간 조건 없으면 새벽에도 발송 (출처: “하트비트” 섹션)
- 크론잡 = 정시 배달: 정확한 시각에 정확한 작업 하나만 실행. isolated 세션으로 메인 대화와 분리. 5-field 크론 표현식 + 타임존 지원. 1회성 리마인더도 가능 (출처: “크론잡” 섹션)
- 3가지 실전 사고 교훈: ①시간 조건 텍스트≠코드 강제 → 명시적 조건 필수 ②같은 작업 양쪽에 → 한 곳에서만 ③하트비트 기억 짧음(컴팩션) → AGENTS.md 절대 규칙으로 영구화 (출처: “사고 1·2·3” 섹션)
- 선택 기준: 하트비트 = 있다/없다 모니터링·폴링. 크론잡 = 정확한 시각·외부 발송·1회성. 중복 배치 절대 금지 (출처: “뭘 언제 써야 해?” 섹션)
- isolated 세션: 크론잡이 독립 세션에서 실행 → 메인 대화 맥락 오염 없음. 결과만 announce로 전달. 별도 모델(Sonnet)로 비용 최적화 가능 (출처: “크론잡” 섹션)
상세 요약
하트비트 한계 3가지
| 한계 | 증상 | 해결책 |
|---|---|---|
| 시간을 모름 | 새벽에 아침 브리핑 발송 | HEARTBEAT.md에 명시적 시간 조건 추가 |
| 독립 세션 간 무지 | 크론잡과 중복 발송 | 한 곳에서만 담당 (책임 단일화) |
| 기억이 짧음(컴팩션) | 오류 15회 반복 보고 | AGENTS.md 절대 규칙으로 3단계 영구화 |
크론잡 설정 구조
openclaw cron add \
--name "<작업명>" \
--cron "0 9 * * *" # 5-field 크론 표현식
--tz "Asia/Seoul" # 타임존 명시 필수
--session isolated # 독립 세션
--message "<에이전트 지시>"isolated 옵션이 핵심: 크론잡 실행이 끝나면 세션이 닫히고 결과만 announce로 메인 채널에 전달. 메인 대화 히스토리에 크론잡 노이즈가 끼지 않는다.
현재 뽀짝이 자동화 아키텍처
하트비트 (1h 주기) → HEARTBEAT.md
├─ Slack #02-ai스터디강의 확인
├─ Linear 긴급 이슈 체크
└─ 채널톡 CS 폴백 폴링
크론잡 (정확한 시각) → isolated 세션
├─ 05:00 — Zoom 설문 수집
├─ 06:00 — Zoom 참석자 트래킹
├─ 09:00 — 수강신청 인원 알림 이메일
└─ 09:00 — 매출 브리핑
역할 분리: 하트비트 = 순찰(모니터링), 크론잡 = 정기 배달(발송)
연결되는 위키 페이지
- agentic-scheduling-design — 이 소스에서 추출한 하트비트 vs 크론잡 설계 원칙
- heartbeat-mechanism — 하트비트의 원리 + 이번 소스로 강화된 한계·사고 교훈
- agent-error-learning-loop — 사고3 해결 = AGENTS.md 절대 규칙 (3단계 영구 기억)
- agent-memory-architecture — 기억의 3단계; 하트비트의 기억 짧음 문제 배경
- agent-session-architecture — isolated 세션의 세션 아키텍처 맥락
- bbojjak-openclaw-agentic-architecture-lesson01 — 시리즈 Lesson 01
- bbojjak-openclaw-agents-error-learning-lesson05 — 시리즈 Lesson 05 (절대 규칙)
- bbojjak-openclaw-memory-architecture-lesson08 — 시리즈 Lesson 08 (기억 3단계)
- bbojjak-openclaw-skill-design-lesson10 — 시리즈 Lesson 10 (에이전트 스킬 시스템·SKILL.md·n8n→스킬 전환)
- bbojjak-openclaw-automation-layers-lesson11 — 시리즈 Lesson 11 (exec·자동화 3계층·exec-approvals·Trust but verify)
- bbojjak-openclaw-subagent-orchestration-lesson12 — 시리즈 Lesson 12 (sessions_spawn·맥락의 격차·판단 최소화 원칙)
- bbojjak-openclaw-playwright-image-pipeline-lesson13 — 시리즈 Lesson 13 (Playwright·HTML→PNG·browser 도구·디자인 시스템)
- bbojjak-openclaw-gateway-architecture-lesson14 — 시리즈 Lesson 14 (Gateway·멀티채널 라우팅·Tailscale Funnel·보안 4중 잠금)
- bbojjak-openclaw-multichannel-session-lesson15 — 시리즈 Lesson 15 특별편 (Slack 스레드·텔레그램 토픽 세션 분리·DM 함정·bindings)
- bbojjak-openclaw-token-optimization-lesson16 — 시리즈 Lesson 16 (토큰 소비처 5순위·RTK·hook vs 지침·능동적 compact·Sonnet 전환)
- bbojjak-openclaw-agent-security-lesson17 — 시리즈 Lesson 17 (프롬프트 인젝션·보안 3원칙·에이전트 분리·심층 방어)
- bbojjak-openclaw-skill-ecosystem-lesson18 — 시리즈 Lesson 18 (보안 스킬 선택 3단계·구조>스킬·즉시 학습+SSOT·오픈 생태계 신뢰 평가)
- bbojjak-openclaw-resilience-failover-lesson19 — 시리즈 Lesson 19 (Model Failover·세션 스티킨스·Agent Loop·작업별 모델 분리·34% 절감)
- bbojjak-openclaw-information-boundary-lesson20 — 시리즈 Lesson 20 (분리 이후 운영·일방향 동기화·민감정보 추출·에스컬레이션·오탐 관리)