크론으로 AI 에이전트 자동 브리핑을 설정했는데, 수동 실행은 되고 자동 실행은 안 되는 이상한 상황이 생겼다. 텔레그램 문제인 줄 알았는데, 진짜 원인은 전혀 다른 곳에 있었다.
하고 싶었던 것: 매일 자동으로 천체 관측 브리핑 받기
천체 관측을 하다 보면 매일 하늘 상태가 궁금하다.
구름은 얼마나 끼는지, 달이 언제 지는지, 미세먼지는 어떤지. 이걸 매일 아침 직접 찾아보는 게 귀찮아서 AI 에이전트한테 맡기기로 했다.
OpenClaw의 크론 기능을 써서 매일 정해진 시간에 “오늘 딥스카이 관측 브리핑”을 만들고, 텔레그램으로 받는 구조다.
설정 자체는 어렵지 않았다. 문제는 그 다음이었다.
수동 실행은 되는데, 크론 실행은 안 된다
내가 직접 대화창에서 “브리핑해줘”라고 하면 브리핑이 잘 만들어지고, 텔레그램으로도 잘 온다.
그런데 크론으로 자동 실행하면 제대로 오지 않았다.
처음엔 당연히 텔레그램 전송 문제라고 생각했다. 근데 아니었다. 수동 실행에서는 텔레그램 전송이 정상이었으니까.
그러면 뭐가 문제인가.
기존 자동화 구조를 다시 들여다봤다.
Cron → AI 에이전트 실행 → 날씨/대기질/천문 데이터 확인
→ 판단 → 브리핑 작성 → 텔레그램 전송
겉보기엔 단순하다. 그런데 이 안에서 AI 에이전트가 혼자 하는 일이 너무 많다.
- 날씨 데이터 확인
- 구름, 습도, 달 영향 해석
- 시잉 판단
- 황사/미세먼지 반영
- 관측 가능 여부 판정
- 추천 시간대 선정
- 관측 대상 TOP3 추천
- 장비 추천
- 브리핑 문장 작성
- 텔레그램 전송
이 모든 과정이 매일, 무인 상태에서, AI 추론으로 돌아간다. 실행 시간이 길어지고, 모델 한도·타임아웃·외부 데이터 지연에 모두 취약해진다.
수동 실행이 성공하는 이유
수동으로 “브리핑해줘”라고 하면 현재 살아 있는 대화 세션에서 실행된다.
- 이미 열린 세션에서 시작된다
- 내가 직접 요청했기 때문에 실행 흐름이 끊기지 않는다
- 중간에 실패하면 다시 시도하거나 우회할 수 있다
- 브리핑이 완성되면 텔레그램 전송까지 이어서 처리된다
그래서 수동 실행은 성공한다.
크론 실행은 다르다. 정해진 시간에 백그라운드에서 격리 세션을 새로 만들어 혼자 실행한다. OpenClaw에서는 이게 Subagent처럼 보이기도 한다.
예약 실행 → 격리 세션 생성 → 모델 호출 → 데이터 확인
→ 판단 → 브리핑 생성 → 전송
이 중 하나만 실패해도 자동 브리핑은 그대로 끝난다. 재시도해줄 주체가 없다.
핵심 문제: AI에게 반복 자동화를 통째로 맡겼다
기존 방식은 “AI 비서에게 매일 새 일을 시키는 구조”였다.
사람이 옆에서 보고 있을 때는 괜찮다. 하지만 매일 같은 시간에 안정적으로 실행되어야 하는 자동화에는 맞지 않는다.
자동화에서 중요한 건 똑똑함보다 재현성이다.
특히 다음 조건이 겹치면 실패 가능성이 커진다.
- 프롬프트가 길다
- 외부 데이터를 확인해야 한다
- 판단 조건이 많다
- 출력 형식이 길다
- 모델 호출 시간이 길다
- 전송 단계까지 포함된다
- 실행 중간에 재시도 주체가 없다
이번 딥스카이 브리핑 크론이 정확히 이 구조였다.
바꿀 방향: 스크립트가 계산하고, AI는 다듬는다
새 구조는 이렇게 바꾸는 것이 맞다.
Cron → 스크립트 실행 → 데이터 수집 → 점수 계산
→ 기본 브리핑 생성 → (필요 시) AI가 짧게 다듬기 → 전송
핵심은 판단의 대부분을 스크립트로 고정하는 것이다.
스크립트가 직접 처리할 수 있는 것들은 많다.
- 구름 점수
- 달 영향 점수
- 습도/이슬 위험
- 시잉 등급
- PM10/PM2.5 대기질 게이트
- 관측 가능/조건부/비추천 판정
- 추천 시간대
- 장비 우선순위
AI는 매번 처음부터 모든 판단을 하는 게 아니다. 이미 계산된 결과를 받아 사람이 읽기 좋은 짧은 문장으로 다듬는 역할만 한다. 경우에 따라서는 AI 없이 템플릿 문장만으로도 충분하다.
기존 방식 vs 새 방식
| 기존 방식 | 새 방식 | |
|---|---|---|
| 중심 | AI 에이전트 | 스크립트 |
| 안정성 | 낮음 | 높음 |
| 실행 시간 | 길다 | 짧다 |
| 토큰 사용 | 많다 | 적다 |
| 실패 추적 | 어렵다 | 쉽다 |
| 결과 품질 | 들쭉날쭉 | 일정하다 |
| AI 역할 | 전체 실행자 | 보조 다듬기 |
기존 방식은 유연하지만 불안정하다. 새 방식은 덜 유연하지만 매일 믿고 돌릴 수 있다.
결론
이번 문제의 본질은 “AI가 브리핑을 못 만든다”가 아니었다. 수동으로 요청하면 브리핑도 되고, 텔레그램 전송도 된다.
진짜 문제는 무인 크론 실행에서 AI 에이전트에게 전체 작업을 통째로 맡긴 구조였다.
수동 실행은 세션이 살아 있는 상태에서 자비스가 붙잡고 끝까지 처리한다. 크론 실행은 임시 격리 세션이 혼자 실행하다가 실패하면 그대로 끝난다.
해결책은 텔레그램 수정이 아니다. 자동화 구조를 바꾸는 것이다.
반복 자동화는 스크립트가 중심이 되어야 한다. AI는 모든 일을 직접 하는 실행자가 아니라, 필요한 순간에 해석과 표현을 돕는 보조자로 쓰는 편이 훨씬 안정적이다.
지금 당장 할 수 있는 것 하나: 크론으로 돌리는 자동화가 있다면, AI 에이전트가 몇 단계를 혼자 처리하고 있는지 세어보자. 3단계 이상이면 스크립트로 분리할 여지가 있다.
오늘도 자비스는 진보한다.
답글 남기기