예약과 자동 반복 — 스스로 돌아가는 회사
클로드에게 일을 시킬 때 보통은 “지금 해 줘”라고 합니다. 여기 모은 것은 “정해진 때에 알아서 해 줘”라고 시키는 기능들입니다. 5분마다 확인하고, 매일 아침 정리하고, 내가 자는 동안에도 돌아가게 만들 수 있습니다. 방법이 세 가지인데 성격이 서로 다릅니다. 그래서 어느 것을 고르느냐가 절반입니다. 이 기능들을 유난히 조심해서 써야 하는 이유는, AI가 자기가 한 일이 잘됐는지 스스로 판단하기 어려운 데다 사람이 안 보는 시간에는 그 판단을 대신할 사람도 없기 때문입니다. 이 약점이 왜 생기는지는 「AI는 자기가 한 일을 스스로 판단하지 못합니다」 페이지에서 설명합니다.
세 가지 방법 한눈에
핵심 차이는 “내 컴퓨터를 끄거나 세션을 닫아도 계속 도는가”입니다. 세션은 대화창을 열어 일하고 닫기까지를 말합니다.
| 방법 | 실행되는 곳 | 컴퓨터가 켜져 있어야 | 세션이 열려 있어야 |
|---|---|---|---|
/loop(세션 안에서 되풀이하는 예약) | 실행되는 곳내 컴퓨터 | 컴퓨터가 켜져 있어야예 | 세션이 열려 있어야예 |
| 일회성 알림(세션 안에서 한 번만 하는 예약) | 실행되는 곳내 컴퓨터 | 컴퓨터가 켜져 있어야예 | 세션이 열려 있어야예 |
| 클라우드 루틴 | 실행되는 곳앤트로픽 클라우드 | 컴퓨터가 켜져 있어야아니요 | 세션이 열려 있어야아니요 |
- 세션을 열어 둔 채 잠깐 반복 확인 →
/loop - 정한 시각에 한 번만 시켜 두면 됨 → 일회성 알림
- 컴퓨터를 꺼 두어도 안정적으로 돌아야 함 → 클라우드 루틴
/goal — 목표를 정하면 끝까지 갑니다
/goal에 완료 조건을 적어 두면, 한 차례 작업이 끝날 때마다 빠르고 가벼운 모델이 그 조건이 채워졌는지 확인합니다. 아직이면 클로드가 다음 작업을 이어서 합니다. 사람이 매번 “계속해”라고 입력하지 않아도 되는 셈입니다. 클로드 코드 2.1.139 버전 이상이 필요합니다.
/goal test/auth 안의 모든 테스트가 통과하고 검사 단계가 깨끗해질 때까지
- 조건 없이
/goal만 입력 — 지금까지 걸린 시간·횟수·토큰(AI가 글을 세는 단위) 등 진행 상황을 봅니다. /goal clear— 목표를 도중에 해제합니다.- 백그라운드(화면에 보이지 않게 따로 도는) 일 때문에 목표가 30분 넘게 멈춰 있으면, 클로드가 알아서 그 일의 상태를 확인합니다. 그 뒤로는 1시간, 2시간 간격으로 다시 봅니다.
- 로그인이 풀리거나 크레딧이 바닥나는 등 복구할 수 없는 오류로 일이 끊기면, 목표가 자동으로 해제되고 클로드가 그 사실을 알려 줍니다.
- 서버가 붐비거나 연결이 끊기는 것처럼 저절로 풀리는 실패라면 목표는 그대로 남고, 클로드가 잠시 기다렸다가 다시 시도합니다. 이때 Goal still active로 시작하는 안내가 뜨고, 세 번 다시 해도 안 되면 멈춥니다. 사용 한도처럼 다시 해도 같은 실패가 나는 경우에는 Goal paused로 시작하는 안내와 함께 멈추고 그 이유를 알려 줍니다. 멈춘 뒤에도 메시지를 보내면 바로 이어서 일합니다. 클로드 코드 2.1.269 버전 이상에서 이렇게 동작합니다.
- 목표를 정해도 권한 규칙은 똑같이 적용됩니다. 허락을 구하지 않고 계속 진행하게 하려면 자동 모드와 함께 씁니다.
/loop — 세션 안에서 반복하기
/loop는 지금 세션을 열어 둔 채 같은 프롬프트(AI에게 건네는 지시)를 정해진 간격으로 다시 실행합니다. 배포가 끝났는지, 검사를 통과했는지 반복해서 확인할 때 씁니다.
# 5분마다 배포가 끝났는지 확인해서 알려 달라 /loop 5m check if the deployment finished and tell me what happened # 간격을 빼면 클로드가 상황을 보고 스스로 주기를 정합니다 /loop check whether CI passed and address any review comments
- 간격 단위는
s(초)·m(분)·h(시간)·d(일)입니다. 예약은 1분 단위로만 잡힙니다. 그래서 초 단위로 적으면 클로드가 가까운 분으로 올려 잡습니다.7m·90m처럼 어중간한 간격도 가까운 값으로 맞춥니다. 어느 쪽이든 어떤 값으로 정했는지 알려 줍니다. - 간격을 클로드에게 맡기면 1분에서 1시간 사이로 알아서 조절합니다. 일이 활발하면 짧게, 조용하면 길게 기다리고, 왜 그렇게 정했는지도 매번 알려 줍니다.
- 간격을 클로드에게 맡긴 반복은 다음 실행을 기다리는 동안 Esc를 누르면 멈춥니다. 이런 반복은 일이 끝났다고 판단되면 클로드가 스스로 끝내기도 합니다. 간격을 정해 준 반복은 다른 예약처럼 클로드에게 취소해 달라고 말하면 멈추고, 그러지 않으면 7일이 지날 때까지 계속 실행됩니다.
- 뒤에 아무것도 안 적고
/loop만 치면 기본 할 일이 실행됩니다. 클로드가 하던 일을 이어서 마무리하고, 지금 브랜치(원본을 건드리지 않고 따로 이어 가는 작업 줄기)에 달린 검토 의견과 실패한 검사를 처리합니다. 할 일이 없으면 가벼운 점검만 합니다. 정한 범위 밖의 새 일은 벌이지 않고, 되돌리기 어려운 동작은 이미 허락된 경우에만 진행합니다.
이 기본 할 일을 내 것으로 바꾸고 싶으면 loop.md 파일에 원하는 지시를 보통 문장으로 적습니다. 파일이 있으면 그 내용이, 없으면 기본으로 정해진 할 일이 실행됩니다.
| 파일 위치 | 적용 범위 |
|---|---|
.claude/loop.md | 이 회사 폴더에만 적용 — 둘 다 있으면 이쪽이 우선 |
~/.claude/loop.md | 자기 것이 없는 모든 폴더에 적용 |
반복이 진행되는 도중에 이 파일을 고치면 다음 실행부터 반영됩니다. 파일을 직접 만들 필요는 없습니다. “반복 돌 때 기본으로 할 일을 이렇게 정해 줘”라고 말로 시키면 됩니다.
세션 안 예약의 한계 — “안 돈다”고 오해하기 쉬운 함정
- 세션에 매여 있습니다. 예약은 지금 대화 안에서만 살아 있고, 새 대화를 시작하면 사라집니다. 다만
claude --resume이나--continue로 그 대화를 이어서 열면 아직 유효한 예약은 되살아납니다. 반복 예약은 만든 지 7일 안이면, 일회성 알림은 실행 시각 전이면 유효합니다. 단, 간격을 클로드에게 맡긴/loop반복은 되살아나지 않으니/loop를 다시 입력해야 합니다. “예약이 죽었나?” 싶을 때 가장 흔한 원인은 세션이 닫혀 있었던 것입니다. - 컴퓨터가 켜져 있고 세션이 열려 있어야 합니다. 터미널을 닫으면 예약도 멈춥니다. 다만 세션을 백그라운드로 보내 두면
/loop예약도 함께 넘어가, 터미널을 닫아도 계속 실행됩니다. - 놓친 실행은 몰아서 하지 않습니다. 클로드가 바쁜 사이 실행 시각이 지나가면, 한가해질 때 한 번만 실행하고 넘어갑니다.
- 7일이 지나면 자동으로 끝납니다. 반복 작업은 만든 지 7일 뒤 마지막으로 한 번 실행하고 스스로 지워집니다. 잊힌 반복이 끝없이 실행되는 것을 막기 위한 안전장치입니다. 더 오래 돌려야 하면 아래의 클라우드 루틴을 씁니다.
일회성 알림 — 말로 예약합니다
한 번만 실행하고 끝낼 일은 명령어도 필요 없습니다. 말로 부탁하면 클로드가 정확한 시각으로 바꿔 예약하고, 언제 실행되는지 확인해 줍니다.
# 공식 안내의 예시 — 우리말로 "오후 3시에 ~하라고 알려 줘"라고 적어도 됩니다
remind me at 3pm to push the release branch
in 45 minutes, check whether the integration tests passed지금 잡힌 예약을 보거나 지우는 것도 말로 합니다. “지금 잡힌 예약 작업이 뭐가 있지?”, “배포 확인 예약은 취소해 줘”라고 적으면 됩니다. 예약마다 짧은 식별 번호가 붙고, 한 세션에 최대 50개까지 담을 수 있습니다.
클라우드 루틴 — 컴퓨터를 꺼도 도는 무인 당번
루틴(routine)은 프롬프트와 작업할 폴더(저장소), 연결한 도구를 하나로 묶어 저장해 두고 앤트로픽 클라우드에서 자동으로 실행하는 기능입니다. /loop가 “내가 지켜보는 알람”이라면, 루틴은 “회사가 세워 둔 무인 당번”입니다. 내 컴퓨터가 꺼져 있어도 돌아갑니다.
만들 때도 말로 합니다. 클로드 코드 입력창에서 /schedule에 원하는 내용을 적으면, 클로드가 일정·저장소·프롬프트를 되물으며 채운 뒤 계정에 저장합니다.
# 매일 오전 9시 PR 검토 루틴 /schedule daily PR review at 9am # 한 번만 실행하는 예약도 말로 — 실행 후 자동으로 꺼집니다 /schedule tomorrow at 9am, summarize yesterday's merged PRs
- 프롬프트가 가장 중요합니다. 루틴은 혼자 알아서 실행되기 때문에, 무엇을 할지와 무엇이 성공인지까지 프롬프트 안에 빠짐없이 적어야 합니다.
- 루틴이 실행되는 조건은 일정·API(다른 프로그램이 보내는 신호)·GitHub에서 일어난 일 세 종류입니다. 한 루틴에 여러 개를 섞어도 됩니다. 클로드 코드 입력창에서
/schedule로 만드는 루틴은 일정에 따라 실행됩니다. GitHub에서 일어난 일을 조건으로 붙이는 것은 웹과 입력창 어느 쪽에서도 됩니다. 어느 쪽이든 그 저장소에 Claude GitHub 앱이 설치되어 있어야 하고, 입력창에서 붙이려면 클로드 코드 2.1.225 버전 이상이 필요합니다. API 조건은 웹(claude.ai/code/routines)에서만 추가할 수 있습니다. - 정각은 피합니다. 9:00처럼 정각에 잡은 루틴은 몇 분 늦게 시작할 수 있습니다. 제시간에 가깝게 돌려야 하면 9:07처럼 몇 분 지난 시각으로 잡습니다. 웹에서 새 루틴을 만들면 일정도 처음부터 정각에서 몇 분 지난 시각으로 잡혀 나옵니다.
- 관리도 같은 입력창에서 합니다. 목록 보기는
/schedule list, 수정은/schedule update, 지금 바로 실행은/schedule run입니다. 웹에서는 루틴 상세 화면 맨 위에 있는 켜기·끄기 스위치로 잠시 멈추거나 다시 켜고, Run now 버튼으로 바로 돌려 봅니다. 삭제는 루틴 이름 옆 메뉴에서 합니다. - 루틴은 대화형 세션과 똑같이 구독 사용량을 씁니다. 이와 별도로 예약 실행·지금 바로 실행·API 신호처럼 루틴을 시작하는 방법마다 시간당 실행 횟수 상한이 있고, 한 번만 실행되는 루틴도 예약 실행으로 함께 셉니다. 예약 실행이 상한을 넘으면 상한이 풀릴 때까지 기다렸다가 실행됩니다. 입력창에서 한 번만 도는 루틴을 만들 때는 시각을 말로 적으면 됩니다. 클로드가 지금 시각을 기준으로 정확한 날짜와 시각으로 바꿔 확인해 준 뒤 저장합니다.
- 루틴이 저절로 멈출 때도 있습니다. 구독을 잠시 멈추면 루틴도 멈추고, 구독을 다시 살린 뒤에는 루틴을 직접 다시 켜야 합니다. GitHub 연결이 끊기거나 만료되면 루틴이 바로 꺼지지 않고 최대 72시간 동안 실행을 건너뛰며 기다립니다. 그 안에 다시 연결하면 저절로 다시 실행되고, 72시간이 지나면 꺼지므로 다시 연결한 뒤 직접 켭니다.
- 루틴은 내 개인 계정 소속이라 동료와 공유되지 않습니다. 커밋(바뀐 내용을 한 묶음으로 저장하는 일)과 PR 등 모든 활동도 내 이름으로 기록됩니다. PR은 작업 결과를 합쳐 달라고 올리는 요청서입니다.
- 매일 바뀌는 상황판(대시보드)도 맡길 수 있습니다. 예약 실행이나 지금 바로 실행(Run now)으로 시작된 루틴은 이미 발행해 둔 아티팩트(결과를 웹 페이지로 받아 보는 것) 페이지를 묻지 않고 새로 고칩니다. 내가 고칠 수 있고 공개로 공유하지 않은 페이지일 때 그렇습니다. 공개한 페이지를 고치거나 페이지를 지울 때, 커넥터(외부 도구를 클로드에 이어 주는 연결선)처럼 페이지 밖의 권한을 쓰는 페이지일 때는 여전히 먼저 묻습니다. 아침마다 저절로 바뀌는 상황판을 원하면 페이지를 먼저 한 번 발행해 두고 그 페이지를 루틴에 맡기는 것이 가장 확실합니다.
주의 — 초록 표시와 크론 읽는 법
예약 시각에 가끔 0 9 * * * 같은 표기가 등장하는데, 이것이 크론(cron)입니다. 분·시·일·월·요일 다섯 칸으로 시각을 적는 표준 방식입니다. 시간표를 숫자로 쓴 것이라고 보면 됩니다. 세션 안 예약에서 모든 시각은 내 컴퓨터의 시간대를 따릅니다.
| 크론 표기 | 뜻 |
|---|---|
*/5 * * * * | 5분마다 |
0 9 * * * | 매일 오전 9시 |
0 9 * * 1-5 | 평일 오전 9시 |
다음 두 가지는 세션 안 예약(/loop·일회성 알림)에만 해당합니다. 첫째, 여러 세션이 같은 시각에 몰리지 않도록 실행 시각은 조금씩 흩어집니다. 분 단위까지 시각이 중요하면 3 9 * * *처럼 정각이 아닌 분으로 잡아 둡니다. 둘째, 세션 안 예약 기능을 아예 끌 수도 있습니다. 환경 변수(프로그램이 켜질 때 참고하는 짧은 설정값)에 CLAUDE_을 넣어 달라고 클로드에게 말로 시키면 됩니다. 그러면 크론 도구와 /loop가 함께 꺼집니다. 클라우드 루틴은 계속 돌아갑니다.
실패는 어떻게 알 수 있을까요
밤새 돌게 걸어 둔 일이 실패하면 아무 일도 일어나지 않습니다. 화면도 안 뜨고 소리도 안 나고, 조용합니다. 무인 자동화의 진짜 위험은 실패한 줄 모르고 지나가는 것입니다. 그래서 자동화를 걸어 둘 때는 성공이 나를 찾아오게 할 게 아니라, 실패가 나를 찾아오게 만들어야 합니다.
실패를 알아차리는 통로는 크게 세 가지입니다. 하나만 믿기보다 성격이 다른 둘을 겹쳐 두는 편이 든든합니다.
| 통로 | 어떻게 알게 되나 | 한계 |
|---|---|---|
| ① 기록으로 남기기 | 어떻게 알게 되나일이 끝날 때 성공·실패를 파일에 적게 하고, 아침에 그 파일만 봅니다. | 한계내가 보러 가야 알 수 있습니다. |
| ② 훅으로 알림 받기 | 어떻게 알게 되나내 컴퓨터에서 소리나 화면 알림이 뜹니다. | 한계내가 컴퓨터 앞에 있을 때만 알 수 있습니다. |
| ③ 실행 기록 화면 | 어떻게 알게 되나클라우드 루틴 상세 화면에서 지난 실행을 엽니다. | 한계초록 표시가 성공을 뜻하지는 않습니다. |
① 결과를 기록으로 남기게 하기 — 가장 단순하면서 가장 믿을 만한 방법입니다. 프롬프트에 “무엇이 성공인가”와 “끝나면 성공·실패를 한 줄로 적어라”를 함께 넣어 둡니다. 그러면 아침에 파일 하나만 열어 보면 됩니다. 이것도 말로 시킵니다.
# 예약을 걸 때 실패 보고 문장을 함께 넣는 예
매일 아침 9시에 어제 들어온 문의를 정리해 줘.
끝나면 날짜와 함께 성공인지 실패인지, 실패면 그 이유를
work-log.md 맨 아래에 한 줄로 적어 줘.이 방식에는 덤이 하나 있습니다. 그날 줄이 아예 안 적혀 있으면, 일이 시작조차 되지 않았다는 신호입니다.
② 훅으로 소리·알림 받기 — 클로드가 일을 마치거나 허락을 기다릴 때 소리·화면 알림을 내도록 훅(정해진 순간이 오면 저절로 실행되는 자동 장치)을 걸어 둘 수 있습니다. 거는 법은 훅 페이지의 알림 레시피에 있습니다. 이 알림은 내 컴퓨터에서 뜨는 알림이라, 내가 그 앞에 있을 때만 제 몫을 합니다. 자는 동안 지나간 알림은 아침에 밀린 알림으로 볼 뿐입니다. 그래서 밤샘 자동화에서는 ①의 보조 수단으로 두십시오.
클로드가 데스크톱 알림을 직접 보낼 수도 있습니다. 이 기능은 내 컴퓨터에서 실행 중인 세션에서만 씁니다. 리모트 컨트롤(Remote Control)을 켜 두었다면 휴대폰으로도 알림이 갑니다. 리모트 컨트롤은 내 컴퓨터에 켜 둔 클로드 코드를 밖에서 웹이나 휴대폰 앱으로 조종하는 기능입니다. 켜는 명령은 「어디서든 쓰기」 페이지에 있습니다. 다만 이 경로는 계정·환경에 따라 다를 수 있으니, 믿고 맡기기 전에 낮에 한 번 시험 삼아 실패하는 상황을 만들어 알림이 실제로 오는지 확인해 보십시오.
③ 클라우드 루틴의 실행 기록 보기 — 컴퓨터를 꺼 둔 채 도는 루틴은 웹의 루틴 목록에서 확인합니다. 해당 루틴을 열면 지난 실행 기록이 보입니다. 실행마다 세션이 하나씩 생기므로, 그 세션을 열면 클로드가 실제로 무엇을 했는지 읽을 수 있습니다. 위의 초록 표시 주의가 바로 여기에 해당합니다. 목록이 초록이어도 세션이 무사히 끝났다는 뜻일 뿐이라, 시킨 일이 됐는지는 안을 열어 봐야 압니다.
우리 회사는 이렇게 씁니다
무인 자동화일수록 결과를 확인하는 장치를 함께 겁니다. 사람이 안 보는 시간에 도는 일은 “돌았다”와 “잘됐다”가 다르기 때문입니다. 예약을 하나 걸 때마다 “이 일이 실패하면 나는 어떻게 알게 되나”를 한 줄로 답해 보고, 답이 없으면 실패 시 보고하는 문장을 프롬프트에 더합니다. 책 14장에서 다루는 무인 운영의 기본기가 이것입니다.