티스토리 뷰

잠든 맥북, 잠든 AI — 밤새 코딩을 맡겼더니 생긴 일

들어가며

요즘 AI가 코드를 짜준다는 말을 많이 들어보셨을 텐데요. 저는 한 발 더 나아가서 AI에게 밤새 혼자 개발을 시켜봤습니다. 자러 가기 전에 시작해두고, 일어나서 결과를 확인하는 방식으로요.

근데 문제가 생겼습니다. AI도 저처럼 잠들어 버린 거예요. 정확히는, 맥북이 슬립 모드에 들어가면서 AI 작업이 멈춰버렸습니다.

이 글은 그 문제를 발견하고 해결한 과정을 담은 이야기입니다.


프로젝트 소개: office2pdf

제가 만들고 있는 프로젝트는 office2pdf입니다.

Word(.docx), PowerPoint(.pptx), Excel(.xlsx) 파일을 PDF로 변환하는 도구인데, 핵심은 순수 Rust로만 구현한다는 점이에요.

기존에 이런 변환을 하려면:

  • LibreOffice를 몰래 띄워서 변환 (무겁고 느림)
  • Microsoft 클라우드 API 사용 (인터넷 필요, 비용 발생)
  • Aspose 같은 상용 라이브러리 (비쌈)

이런 방법밖에 없었어요. Pure Rust 기반의 오픈소스 솔루션은 존재하지 않았습니다. 그래서 직접 만들기로 했습니다.


Ralph: AI 자동 개발 시스템

혼자 다 구현하기엔 양이 많아서, Ralph라는 자동화 스크립트를 만들었습니다.

Ralph가 하는 일은 간단해요:

  1. 구현할 기능 목록(User Story)을 PRD 파일에 정의
  2. Claude AI에게 하나씩 구현 요청
  3. 테스트 통과 확인
  4. 커밋 후 다음 기능으로 넘어감
  5. 100번 반복

사람이 없어도 AI가 알아서 기능을 하나씩 구현하고 커밋하는 구조입니다.


자러 가기 전 실행

밤 12시 55분, Ralph를 백그라운드로 실행했습니다.

nohup ./scripts/ralph/run-all.sh phase2 100 > ralph.log 2>&1 &

로그를 보니 착착 진행되더군요.

  • 01:06 — US-017 (에러 처리) 구현 완료
  • 01:15 — US-018 (폰트 폴백) 구현 완료
  • 01:27 — US-019 (리스트 파싱) 구현 완료

빠릿빠릿하게 잘 되고 있길래 안심하고 잠들었습니다.


아침에 일어나서 확인해보니

로그를 봤더니 이렇게 끝나 있었어요.

===============================================================
  Ralph Iteration 5 of 100 (claude)
===============================================================

Iteration 5에서 멈춰있는 것처럼 보였습니다. 처음엔 "어려운 작업을 만난 건가?" 싶었는데, 프로세스는 살아있었어요.

git 커밋 로그를 보니 이상한 점이 보였습니다:

커밋 시각 내용
01:27 US-019 완료
06:58 US-020 완료
07:12 US-021 완료

US-019에서 US-020으로 넘어가는 데 5시간 30분이 걸린 거예요. US-020 이후로는 다시 빠릿빠릿한데요.


범인은 맥북 슬립

macOS의 전원 로그를 확인해봤습니다.

pmset -g log | grep -E "Sleep|Wake"
2026-02-27 01:33:52  Sleep  Entering Sleep state due to 'Idle Sleep'
2026-02-27 01:47:56  DarkWake  (유지보수용 잠깐 깨어남)
2026-02-27 01:48:41  Sleep  다시 슬립
...
(이후 15~20분 간격으로 DarkWake 반복)

01:33에 맥북이 슬립에 들어갔습니다. 제가 잠들고 6분 뒤였어요.

슬립 중에는 DarkWake라는 상태로 15~20분마다 잠깐 깨어나서 유지보수 작업(백업, 네트워크 갱신 등)은 하지만, Claude API 호출 같은 작업은 제대로 진행되지 않았던 거예요.

결국 AI도 저랑 같이 잠든 셈이었습니다.


해결법: caffeinate

macOS에는 caffeinate라는 내장 명령어가 있습니다. Apple이 공식으로 제공하는 툴로, macOS 10.8부터 /usr/bin/caffeinate에 기본 포함되어 있어요.

이름 그대로 맥북에게 커피를 먹여서 잠 못 자게 하는 명령어입니다.

nohup caffeinate -w 80026 &
  • -w 80026 — PID 80026번 프로세스(Ralph)가 살아있는 동안만 슬립 방지
  • nohup ... & — 백그라운드에서 실행

실제로 적용됐는지 확인:

pmset -g assertions | grep caffeinate
pid 94575(caffeinate): PreventUserIdleSystemSleep
Details: caffeinate asserting on behalf of Process ID 80026

Process ID 80026을 대신해서 슬립을 막고 있다는 메시지가 뜨면 성공입니다.


교훈

백그라운드 작업을 장시간 돌릴 때는 꼭 caffeinate를 함께 실행하세요.

처음부터 이렇게 실행했으면 됐습니다:

nohup caffeinate -i ./scripts/ralph/run-all.sh phase2 100 > ralph.log 2>&1 &

-i 옵션은 프로세스가 끝날 때까지 CPU 슬립을 방지합니다.


마무리

AI에게 밤새 개발을 맡기는 건 충분히 가능합니다. 다만 맥북이 잠들지 않도록 설정하는 걸 잊지 마세요.

저도, AI도, 맥북도 같이 잠드는 사태는 이제 없을 것 같습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함