Mac Mini에서 AI 에이전트를 신뢰성 있게 실행하는 방법 (4일 동안 70% 성공률)
Source: Dev.to
위 링크에 있는 전체 텍스트를 제공해 주시면, 해당 내용을 한국어로 번역해 드리겠습니다. 코드 블록이나 URL은 그대로 유지하고, 나머지 내용만 번역해 드릴게요.
TL;DR
Mac Mini에 OpenClaw 기반 AI 에이전트를 배포했으며, 4일 동안 약 70 %의 cron 성공률을 기록했습니다. VPS에서 마이그레이션한 후 안정적인 자율 운영을 달성했습니다. 여기에는 병렬 스킬 실행, Blotato API를 통한 X 게시, 그리고 자동화된 불교 원칙 마케팅이 포함됩니다.
전제 조건
- Mac Mini (M1/M2 + 권장)
- OpenClaw Gateway 설치됨
- 여러 자동화 스킬 (예:
x-poster,roundtable-standup,moltbook-interact) - Blotato API 접근 권한
Step 1: Mac Mini 환경 설정
LaunchAgent 자동 시작 구성
# Auto‑start OpenClaw Gateway
mkdir -p ~/Library/LaunchAgents
cat > ~/Library/LaunchAgents/com.openclaw.gateway.plist <<EOF
<?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">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.openclaw.gateway</string>
<key>ProgramArguments</key>
<array>
<string>/opt/homebrew/bin/openclaw</string>
<string>gateway</string>
<string>start</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
EOF
# Load LaunchAgent
launchctl load ~/Library/LaunchAgents/com.openclaw.gateway.plist
시스템 구성
# 전원 차단 복구를 위한 자동 로그인 활성화
sudo defaults write /Library/Preferences/com.apple.loginwindow autoLoginUser -string "$(whoami)"
# 절전 모드 비활성화
sudo pmset -a sleep 0
sudo pmset -a hibernatemode 0
단계 2: 병렬 Cron 작업 설정
예시 Cron 구성
# Edit crontab
crontab -e
# Posting (morning & evening)
0 9 * * * /usr/local/bin/openclaw skills run x-poster-morning
0 21 * * * /usr/local/bin/openclaw skills run x-poster-evening
# Analysis (morning stand‑up)
30 8 * * * /usr/local/bin/openclaw skills run roundtable-standup
# Community activity (every 4 hours)
0 */4 * * * /usr/local/bin/openclaw skills run moltbook-interact
# Deadline monitoring (daily)
0 10 * * * /usr/local/bin/openclaw skills run naist-deadline-scanner
단계 3: API 종속성 안정화
Blotato API 구성
# Environment variables
export BLOTATO_API_KEY="your_api_key"
export BLOTATO_ACCOUNT_ID_EN="your_account_id"
# API endpoint (Important: api.blotato.com is deprecated)
BLOTATO_BASE_URL="https://backend.blotato.com"
오류 처리
# Skill execution with retry logic
execute_skill_with_retry() {
local skill=$1
local max_retries=3
local count=0
while [ $count -lt $max_retries ]; do
if openclaw skills run "$skill"; then
echo "✅ $skill succeeded"
return 0
else
count=$((count + 1))
echo "❌ $skill failed (attempt $count/$max_retries)"
sleep 60
fi
done
echo "🚨 $skill reached maximum retry attempts"
return 1
}
4단계: 모니터링 및 지표
Slack 알림 설정
# Daily metrics reporting
report_daily_metrics() {
local success_count=$(grep "✅" /var/log/openclaw.log | wc -l)
local total_count=$(grep -E "(✅|❌)" /var/log/openclaw.log | wc -l)
local success_rate=$(echo "scale=1; $success_count * 100 / $total_count" | bc)
openclaw message send --channel slack --target 'C091G3PKHL2' \
--message "📊 Daily Report: Success Rate ${success_rate}% (${success_count}/${total_count})"
}
주요 지표
| 지표 | 목표 | 실제 (4일 평균) |
|---|---|---|
| Cron 성공률 | 80 %+ | ~70 % |
| 자동 복구 시간 | — | — |
인프라 신뢰성보다 우아한 감소가 더 중요합니다.
스킬이 실패하면 시스템은 다른 스킬을 계속 실행하고, 재시도 로직이 일시적인 문제를 자동으로 처리합니다.