
AI를 정기적으로 실행하는 베스트 프랙티스: Cron, launchd, /loop, /schedule, GitHub Actions 철저 비교
요약
AI 작업을 정기적으로 자동화하기 위한 5가지 실행 수단(cron, launchd, /loop, /schedule, GitHub Actions)을 비교합니다. 각 도구의 특징과 macOS 환경에서의 launchd 권장 사항, 그리고 Claude Code의 자율적 반복 모드인 /loop의 활용법을 다룹니다.
핵심 포인트
- cron은 범용적인 스케줄링 도구로 서버와 로컬 환경에서 널리 사용됨
- macOS 환경에서는 OS 통합 및 로그 관리가 용이한 launchd 사용 권장
- Claude Code의 /loop 모드는 AI가 스스로 다음 실행 타이밍을 결정하는 동적 반복 지원
- 목적에 따라 정적 스케줄링(cron)과 자율적 루프(/loop)를 구분하여 선택 필요
「매일 아침, 오늘의 메일을 요약해 줬으면 좋겠어」
「주간 리포트를 자동 생성하고 싶어」
「리포지토리의 코드 품질을 정기적으로 체크하고 싶어」
AI를 활용하는 기회가 늘어난 지금, AI를 정기적으로 실행하고 싶은 상황도 늘어나고 있습니다.
하지만 정기 실행 수단은 여러 가지가 있어, 어떤 것을 선택해야 할지 고민하는 분들도 많을 것입니다.
본 기사에서는 대표적인 5가지 수단을 비교하고, 목적별 선택 방법과 구체적인 설정 방법을 해설합니다.
cron
은 지정한 일시나 정기적인 스케줄에 따라 프로그램이나 명령어를 자동 실행하기 위한 상주 프로그램입니다.
crontab
에 기술한 스케줄에 따라 지정한 명령어를 자동 실행합니다.
# 분 시 일 월 요일 명령어
0 9 * * 1-5 claude -p "오늘의 태스크를 리스트업해줘"
심플한 구문으로 설정할 수 있으며, 서버부터 로컬까지 폭넓은 환경에서 동작합니다.
launchd
는 macOS의 네이티브 프로세스 관리·스케줄링 프레임워크입니다.
macOS에서는 cron보다 launchd가 권장되며, plist 파일(XML 형식)로 스케줄을 정의합니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
...
| cron | launchd |
|---|---|
| 대응 OS | Linux / macOS / Unix |
| ... | KeepAlive의 NetworkState 서브키로 대응 가능 |
| 로그 관리 | 별도 설정 필요 |
macOS에서 사용한다면, 슬립(Sleep) 복귀 후의 동작이나 OS와의 통합을 고려하여 launchd를 선택하는 것이 무난합니다.
cron 설정
# crontab 편집
crontab -e
# 평일 아침 9시에 Claude로 일간 리포트 생성
0 9 * * 1-5 cd /path/to/project && claude -p "프로젝트 상황을 일본어로 정리해줘"
launchd 설정 (macOS)
- plist 파일을
~/Library/LaunchAgents/com.myapp.daily-ai.plist에 저장 launchctl로 서비스 등록
# 서비스를 등록·시작 (macOS 10.10+ 권장 명령어)
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.myapp.daily-ai.plist
# 상태 확인
...
/loop
는 Claude Code가 스스로 타이밍을 판단하며 반복하는 모드입니다.
/loop(인터벌 없음) → 다이내믹 모드 (Dynamic Mode): Claude가 다음 실행 타이밍을 스스로 결정/loop 30m과 같이 인터벌을 명시하는 것도 가능
# 동적 루프: 다음 체크 타이밍을 Claude가 판단함
claude /loop "Slack의 읽지 않은 메시지를 확인하고, 중요한 것이 있으면 알려줘"
내부적으로는 ScheduleWakeup 툴이 사용되고 있으며, Claude는 "다음은 ○분 후에 체크하겠다"라고 자율적으로 판단합니다.
예를 들어 CI가 돌아가고 있는 동안은 짧은 인터벌, 심야 시간대는 긴 인터벌을 선택하는 등 상황에 따른 동작이 가능합니다.
동일한 프롬프트가 다음 실행 시에도 전달되므로, 대화의 흐름을 이어가며 반복할 수 있습니다.
- 대화적·탐색적인 태스크 ("무슨 문제 있으면 알려줘" 계열)
- CI 빌드의 실시간 모니터링 (끝나면 즉시 통지)
- 결과에 따라 인터벌을 바꾸고 싶은 태스크
- PC를 켜두는 동안만 동작하면 되는 처리
특별한 설정 파일은 필요 없습니다. Claude Code CLI를 실행하여 명령어를 입력하기만 하면 됩니다.
# 루프 시작 (동적 모드)
claude /loop "매시간 프로젝트의 CI 상태를 확인해줘"
# 인터벌을 명시하는 경우
...
GitHub Actions는 GitHub에서 제공하는 CI/CD 플랫폼입니다.
schedule
트리거(trigger)에 cron 표기법을 사용함으로써 정기 실행 워크플로우(workflow)를 생성할 수 있습니다.
클라우드 상에서 실행되므로:
-
서버 관리 불필요
-
팀 단위로 워크플로우 공유 및 버전 관리 가능
-
GitHub Marketplace의 풍부한 Action과 조합 가능
-
팀에서 공유하는 정기 태스크 (주간 보고서, 릴리스 노트 생성)
-
코드 리포지토리와 관련된 AI 처리 (PR 요약, 코드 리뷰)
-
다중 시스템과의 연동 (Slack 알림, Issue 자동 생성)
-
운영 환경에 가까운 정기 처리 (데이터 품질 체크, 모니터링)
.github/workflows/
디렉토리에 YAML 파일을 생성합니다.
# .github/workflows/daily-ai-review.yml
name: Daily AI Code Review
on:
...
주의: GitHub Actions의 cron은 UTC 기준입니다. JST(일본 표준시) 9:00에 실행하고 싶다면 0 0 * * * (UTC 0:00 = JST 9:00)로 설정합니다.
claude-code-action을 사용하는 경우
Anthropic이 공식 제공하는 anthropics/claude-code-action을 사용하면 Claude Code를 더욱 쉽게 통합할 수 있습니다.
- uses: anthropics/claude-code-action@beta
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
...
| 방법 | 특징 | 이럴 때 선택 |
|---|---|---|
| cron | 심플·범용적 | Linux / 서버에서의 헤드리스(headless) 정기 실행 |
| launchd | macOS 네이티브·안정적 | macOS 로컬에서의 개인 태스크 |
| /loop | AI가 상황을 보고 자율 판단 | 모니터링·탐색·인터벌 가변 태스크 |
| GitHub Actions | 클라우드·팀 공유·풍부한 연동 | 팀 업무·리포지토리 연동 태스크 |
선택 가이드:
- 혼자 사용·로컬 완결 → cron / launchd
- macOS에서 사용 → launchd (cron보다 슬립(sleep) 관련 동작이 안정적)
- AI가 상황을 판단하며 반복하기를 원할 때 → /loop
- 팀과 공유·GitHub와 연동 → GitHub Actions
AI의 정기 실행은 "어디서 실행할 것인가", "누구와 공유할 것인가", "AI에게 어느 정도 판단을 맡길 것인가"라는 3가지 축으로 생각하면 선택하기 쉬워집니다.
용도에 맞는 수단을 선택하여 AI의 정기 실행을 활용해 보세요.
끝까지 읽어주셔서 감사합니다!
평소에는 디자인과 프론트엔드를 중심으로 Qiita에 기사를 게시하고 있으니, 꼭 Qiita 팔로우와 X(Twitter) 팔로우를 부탁드립니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기