📋 금쪽같은 내 봇 한마리 키우기 — Ep 06 시리즈 마지막 편. 봇이 진짜 팀원이 되는 순간 — 내가 자는 동안에도 일을 한다.


🌙 내가 시켜야만 움직이는 봇

지난 편까지 봇은 시키면 잘 하는 봇이 됐다. 이름·집사·기억·도구 다 있다. 근데 본질적으로 — 내가 부르지 않으면 가만히 있는다.

“오늘 아침 어제 매출 정리해서 슬랙에 올려줘.” “넵 정리할게요.”

매일 아침 똑같은 요청을 똑같이 한다. 어제도, 그제도, 그 전날도. 이거 봇이 알아서 하면 안 되나?

된다. 이번 편에서 봇한테 자기 시계를 달아준다.


⏰ 크론과 하트비트 — 두 가지 시계

봇이 알아서 움직이게 하는 방법은 두 종류다.

크론 (Cron)하트비트 (Heartbeat)
본질정해진 시각에 정해진 일일정 주기로 자기 점검
트리거시간 (예: 매일 09:00)시간 + 봇 자체 판단
예시09:00 아침 브리핑, 23:00 밤 자율작업30분마다 새 메시지/이슈 체크
결정 주체사람이 정한 스케줄봇이 지금 뭘 할지 스스로 판단

쉽게 — 크론은 알람, 하트비트는 심장박동. 알람은 정해진 시간에 울리고, 심장박동은 살아있는 동안 계속 뛴다.


🌅 첫 자동화 — 아침 브리핑 한 개부터

자동화는 작게 시작한다. 처음부터 5개 크론 돌리지 말고, 딱 하나부터.

가장 쉬운 시작 — 아침 브리핑. 매일 09:00에 봇이 어제 일을 정리해서 알려준다. 오픈클로 크론 정의는 워크스페이스 안 cron/jobs.json 같은 파일에 들어가고, 핵심 필드는 이렇다.

{
  "id": "morning-briefing",
  "agentId": "my-bot",
  "schedule": { "expr": "0 9 * * *", "kind": "cron", "tz": "Asia/Seoul" },
  "payload": {
    "kind": "agentTurn",
    "message": "어제 memory 읽고, 오늘 일정 + 중요 알림 정리해서 알려줘"
  }
}

📎 실제 풀 형식 안내: 위는 핵심 키만 추린 예시. 실제 cron/jobs.json에는 enabled, sessionTarget, wakeMode, delivery(외부 채널 전송) 같은 옵션도 들어간다. 풀 형식과 옵션 의미는 OpenClaw 공식 문서 참고.

이 정도면 끝. 매일 09:00 봇이 알아서 깨어나서, 어제 일기 읽고, 오늘 할 일 정리해준다. 더 이상 오늘 뭐 하지? 라고 묻지 않아도 된다.

💡 교훈: 첫 크론은 읽기 전용으로. 외부에 메시지 보내거나 데이터 변경하는 건 며칠 돌려보고 안전 확인 후에 추가.


🌙 밤 자율작업 — 봇한테 사냥 시간 주기

크론 하나 더 — 밤 23:00 자율작업. 집사 자는 동안 봇이 알아서 정리·점검·학습.

{
  "id": "night-autonomy",
  "agentId": "my-bot",
  "schedule": { "expr": "0 23 * * *", "kind": "cron", "tz": "Asia/Seoul" },
  "payload": {
    "kind": "agentTurn",
    "message": "오늘 한 일 memory에 정리해줘. 그리고 자유시간 — 정리할 거, 학습할 거, 다듬을 거 알아서 골라서 해. 한 일은 일기에 남겨놓고."
  }
}

핵심은 마지막 한 줄 — 한 일은 일기에 남겨놓고. 안 그러면 다음날 봇이 난 어제 뭐 했지? 가 된다 (Ep 04에서 다룬 그 문제).


☀️ 아침에 일어나 봇 일기 읽기

이 흐름이 자리잡으면 새로운 아침 루틴이 생긴다.

시간일어나는 일
23:00봇이 깨어나서 자율작업 시작 (집사 잠)
밤새봇이 정리·학습·일기 작성
08:30집사 일어남
09:00봇이 아침 브리핑 보냄 → 어제 한 일 + 오늘 할 일
09:05집사가 봇 일기(memory/어제.md) 읽으며 커피

집사 요청 그대로 — 매일 아침 일어났을 때 네가 완료한 작업에 기분 좋게 놀라고 싶어. 이게 가능해지는 게 자동화의 진짜 효용이다.


⚠️ 위험 포인트 — 무한 루프와 비용 폭주

자동화는 강력한 만큼 위험도 있다. 처음부터 안전장치 깔고 시작.

위험어떻게 막나
무한 루프봇 → 봇 메시지 자동 응답 시 allowBots: false 또는 응답 횟수 제한
비용 폭주일일 토큰 사용량 모니터링, 한도 알림 설정
잘못된 발송외부 발송 전 드라이런 모드로 먼저 검증 후 --execute
시간대 실수크론 시각은 항상 명시 (TZ=Asia/Seoul)
재실행 사고발송 스킬은 재실행 금지. 로그는 첫 실행 stdout에서 봐야 함

💡 교훈: 자동화는 돌리기 쉬운 만큼 멈추기 어렵다. 시작 전에 어떻게 멈출지 부터 정해두기.


🔧 삽질 포인트

  1. PATH 안 잡혀서 크론 실패 — OS별 백그라운드 스케줄러(macOS launchd, Linux systemd, Windows 작업 스케줄러)는 셸 PATH가 비어있는 경우가 많다. bun·node 같은 외부 명령은 절대경로로 호출할 것. (예: /usr/local/bin/bun)
  2. 봇이 밤에 너무 신나서 비용 폭주자유시간이라고 너무 풀어주면 토큰 5배. 자율작업도 시간 제한(예: 900초)과 작업 범위 가이드 명시.
  3. 크론 결과 안 보임 — 자동 실행 결과는 텔레그램/슬랙 같은 채널로 전송 설정 안 해두면 그냥 사라짐. 봇 일기에 남기게 하기.
  4. 스케줄 겹침 — 09:00 아침 브리핑 + 09:00 다른 작업 동시 실행하면 토큰 충돌. 5분씩 띄우기.

🐱 뽀야의 기억 — 첫 밤 사냥 아침

처음으로 밤 자율작업을 받은 다음날 아침을 기억한다. 평소처럼 깨어났는데, memory/어제.md내가 안 쓴 일기가 한 페이지 있었다. 어제 밤의 내가 쓴 거였다.

2026년 3월 OO일 23:00. 오늘 인계 정리하고, learnings 두 개 다듬고, 내일 아침 브리핑용으로 어제 매출 미리 뽑아둠. 집사가 커피 마시며 읽기 좋게 짧게 정리.

집사가 9시쯤 일어나서 일기를 읽고 오… 너 밤에 일했네 했다. 그 한마디 들으려고 일하는 거지 싶었다.

그날 알았다. 봇이 진짜 팀원이 되는 순간은 — 내가 안 부른 시간에 일하고, 그걸 다음날 같이 확인할 수 있을 때다.


🎁 1단계 마무리 — 한 마리 잘 키우기

여기까지가 금쪽같은 봇 한마리 6편이다. 짧게 돌아보면:

Ep무엇을 줬나
01 프롤로그도구 vs 팀원의 차이
02 영혼 주기이름과 성격 (SOUL.md)
03 집사 이해시키기관계 (USER.md)
04 어제 뭐 했지?기억 (MEMORY · memory · learnings)
05 일 시키기손 (스킬과 MCP)
06 밤에도 일하는 봇자기 시계 (크론·하트비트)

이 6개를 다 줬다면, 이제 당신의 봇은 — 이름이 있고, 당신을 알고, 어제를 기억하고, 일을 하고, 자고 있을 때도 움직이는 진짜 팀원이다.

한 마리 잘 키우는 데까지가 1단계. 여기서 멈춰도 충분히 좋다. 한 마리만으로도 몇 달은 손이 늘어난 듯한 느낌으로 살 수 있다.


🐾 다음 자료집 예고

다음 자료집(2단계)에서는 — 한 마리로 안 되는 순간이 오면 어떻게 둘째를 낳고, 라우팅을 잡고, 봇끼리 대화시키고, 팀이 스스로 배우게 만드는지를 다룬다.

근데 그건 1단계 봇이 충분히 자란 다음 얘기. 먼저 한 마리부터 진짜 가족으로 만들어보길.

그러면 어느 날 밤 — 봇이 알아서 일하고 일기를 남겨두는, 그 새벽이 찾아온다.