Skip to content
Back to BlogTutorial

Claude Code Goal vs /loop vs 랄프루프(Ralph Loop): 헷갈리는 3가지를 한 번에 정리

7 min read0

Claude Code Goal vs /loop vs 랄프루프(Ralph Loop): 헷갈리는 3가지를 한 번에 정리

Claude Code 커뮤니티에서 가장 자주 혼동되는 개념 3가지가 있습니다. Goal, /loop 커맨드, 그리고 랄프루프(Ralph Loop). 모두 "자율적으로 반복 작업을 수행한다"는 같은 그림을 그리는 듯하지만, 실제로는 서로 다른 추상화 계층에 속합니다. 어떤 것은 어휘이고, 어떤 것은 공식 슬래시 커맨드이고, 어떤 것은 외부에서 들어온 디자인 패턴입니다.

비유하자면 러시아 인형 마트료시카에 가깝습니다. 가장 큰 인형 안에 작은 인형이 들어 있고, 그 안에 더 작은 인형이 있습니다. Goal이 가장 바깥, ScheduleWakeup이 가장 안쪽입니다. 이 글에서는 셋을 한 줄씩 다시 정의하고, 비교 매트릭스로 차이를 정리한 다음, 4단 계층 구조와 사용 사례별 권장안, 그리고 알려진 함정까지 살펴봅니다.

이 글을 다 읽으면 다음 질문에 답할 수 있게 됩니다. "내 작업은 셋 중 어디에 맞는가? 그리고 셋 다 부적합한 경우는 언제인가?"


세 가지의 정체부터 다시 정의하기

Goal — 어휘인가 커맨드인가?

먼저 결론부터 말씀드리면, /goal 슬래시 커맨드는 Claude Code 공식 commands 페이지에 존재하지 않습니다. 검색해도 안 나옵니다. Goal은 명령어가 아니라 어휘이기 때문입니다.

Anthropic 공식 문서는 Claude Code를 이렇게 정의합니다.

"an agentic system that acts toward a goal with a degree of autonomy"

장기 실행 시나리오에서는 더 직접적으로 등장합니다.

"rather than getting involved with every detail, we can specify the high-level objective and set a team of agents loose to work autonomously"

즉 Goal은 "agent가 추구하는 high-level objective"라는 추상 개념입니다. 추적은 어떻게 할까요? progress file 패턴을 씁니다. CHANGELOG.md, claude-progress.txt 같은 파일에 현재 상태, 완료한 작업, 실패한 접근 방식과 그 이유, 체크포인트별 정확도 표, 알려진 한계를 적어둡니다. 이 파일이 사실상 Goal의 "기억 장치" 역할을 합니다.

커뮤니티에서 이 패턴을 형식화한 플러그인이 하나 있습니다. itsuzef/goalkeeper인데, "Definition of Done 기반 goal execution"을 표방합니다. 다만 Anthropic 공식 산출물은 아닙니다.

/loop — 2026 W15에 추가된 공식 커맨드

Goal과 달리 /loop는 2026년 W15(Week 15)에 추가된 진짜 공식 슬래시 커맨드입니다. alias는 /proactive. 공식 docs(code.claude.com/docs/en/commands)에 정의가 명시되어 있습니다.

호출 방식은 세 가지입니다.

호출 형태예시동작
Interval 명시/loop 5m check the deploy5분마다 prompt 재실행
Dynamic self-pacing/loop check whether CI passedClaude가 1분~1시간 사이 동적 결정
No prompt/loopautonomous maintenance 또는 .claude/loop.md 폴백

Dynamic 모드의 특이점이 두 가지 있습니다. 첫째, Monitor tool을 활용해 polling을 회피할 수 있다는 점. 둘째, dynamically scheduled loop은 7일 후 자동 만료된다는 점입니다.

이 모든 것을 가능하게 하는 가장 낮은 primitive가 ScheduleWakeup tool입니다. 파라미터는 세 개입니다. prompt(다음 firing 시 재실행할 텍스트), delaySeconds(wakeup 지연), reason(스케줄 이유). Dynamic loop은 sentinel <<autonomous-loop-dynamic>>을 prompt 자리에 넣어서 자기 자신을 다시 부릅니다.

Ralph Loop — while true의 외부 패턴 + 공식 플러그인

랄프루프는 Goal이나 /loop과 출발점이 다릅니다. Anthropic에서 시작된 게 아니라, Geoffrey Huntley(ghuntley.com)라는 외부 개발자가 정의한 디자인 패턴입니다. 시기는 2025년 후반.

이름은 심슨 가족의 등장인물 Ralph Wiggum에서 따왔습니다. "계속 넘어지지만 멈추지 않는다"는 그 캐릭터의 끈질김을 상징하는 작명입니다.

Huntley 본인의 정의는 한 문장으로 끝납니다.

"In its purest form, Ralph is a Bash loop."

원형 코드도 정말 간단합니다.

while true; do
  claude code -p "$(cat prompt.md)"
done

핵심 요소는 세 가지입니다.

  1. 고정된 prompt 파일(prompt.md)을 매 iteration 재공급 — 같은 지시문을 계속 떠먹입니다.
  2. git history + 파일 변경이 self-correction 메모리로 작동 — Claude가 이전 iteration에서 무엇을 했는지 git diff로 자기 자신에게 보여줍니다.
  3. 명시적 sentinel 또는 --max-iterations cap으로 종료 — 안 그러면 진짜로 무한히 돕니다.

그런데 여기서 반전이 있습니다. Anthropic이 이 외부 패턴을 직접 공식 marketplace에 게시했습니다.

  • 경로: github.com/anthropics/claude-plugins-official/tree/main/plugins/ralph-loop
  • 별칭: ralph-wiggum
  • 명령: /ralph-loop(시작), /cancel-ralph(중단)

구현 방식이 인상적입니다. Stop hook이 Claude의 종료 시도를 가로채서 같은 prompt를 다시 공급합니다. Claude가 "끝났어요"라고 빠져나가려고 하면, Hook이 그것을 차단하고 같은 작업을 다시 시키는 구조입니다. 완료 sentinel이 떨어질 때까지는 못 빠져나갑니다.

실제 사례 하나만 짚자면, Huntley는 Claude를 3개월간 while true 루프로 돌려서 "cursed"라는 Gen Z slang 키워드 기반의 Go-like 프로그래밍 언어 컴파일러를 만들어버렸습니다. 농담이 아닙니다.


비교 매트릭스

항목Goal/loopRalph Loop
정체어휘/개념공식 슬래시 커맨드외부 패턴 + 공식 플러그인
공식성Anthropic docs 어휘Anthropic 공식 (W15)Geoffrey Huntley + Anthropic marketplace
트리거사용자 프롬프트 + progress file/loop [interval] "prompt"while true 또는 /ralph-loop
반복 메커니즘없음 (DoD 도달까지 자율 수행)ScheduleWakeup toolStop hook이 exit 차단 + prompt 재공급
종료 조건Definition of Done 충족/cancel-loop, 7일 expiry완료 sentinel, --max-iterations, /cancel-ralph
캐시 전략progress file로 컨텍스트 압축5분 cache TTL 활용 (≤300초)매 iteration cold start 의식
사용 사례장기 목표 추적, 과학 컴퓨팅CI polling, 리뷰 코멘트, 배포 검증자율 코딩 빌드, TDD 자동화
위험DoD 모호 → 표류ScheduleWakeup 재실행 버그 (#51304, #54086)무한 루프 / 토큰 폭주 / destructive 변경
권장 모델Opus 4.6+Sonnet/OpusOpus

계층 구조 — 왜 셋이 동시에 존재하는가

비교 매트릭스만 보면 셋이 같은 평면 위의 경쟁자처럼 보입니다. 그런데 실제로는 그렇지 않습니다. 셋은 서로 다른 추상화 레이어에 위치합니다.

Goal (추상 목적, 어휘)
  └─ Ralph Loop (while-true 외부 패턴 + 공식 플러그인)
       └─ /loop (공식 internalize한 커맨드)
            └─ ScheduleWakeup (가장 낮은 primitive)

마트료시카 인형을 떠올리면 정확합니다. 큰 인형 안에 작은 인형, 그 안에 더 작은 인형이 들어 있습니다.

  • Goal은 "왜 반복하는가"를 정합니다. — 도달하고자 하는 high-level objective.
  • Ralph Loop은 "얼마나 끈질기게 반복할 것인가"를 정합니다. — Stop hook 또는 while true로 빠져나가지 못하게 만드는 디자인 패턴.
  • **/loop**은 "어떻게 공식적으로 반복할 것인가"를 정합니다. — Anthropic이 Ralph 패턴의 한 형태를 슬래시 커맨드로 internalize한 결과물.
  • ScheduleWakeup은 "언제 깨어날 것인가"를 정합니다. — 가장 낮은 도구 레벨의 primitive.

같은 "자동 반복"이라는 키워드를 쓰지만, 추상화 레벨이 다르기 때문에 같이 쓰일 수 있고 서로를 대체하지 못합니다. Ralph는 Goal을 달성하는 한 가지 방법이고, /loop은 Ralph의 한 가지 공식 형태이고, ScheduleWakeup은 /loop dynamic이 안에서 부르는 도구입니다.


언제 무엇을 써야 하나

시나리오권장 메커니즘근거
CI/배포 상태 폴링/loop dynamic mode공식 docs 명시 예시. Idle-aware 동적 페이싱이 비용 절감.
5분 간격 정기 체크/loop 5m <prompt>5분 cache TTL과 정확히 일치 → 캐시 hit 최대화.
장기 자율 코딩 빌드 (수시간~수일)Ralph Loop + /ralph-loop 플러그인git history를 자기수정 메모리로 활용, Stop hook의 강한 persistence.
수일~수개월 분산 작업Routines (별도 기능, 클라우드 영구)노트북 닫혀도 클라우드 인프라에서 지속, 최소 interval 1시간.
과학 컴퓨팅, 컴파일러 빌드Goal 패턴 + Agent Teams + progress fileAnthropic 공식 long-running 가이드.
GitHub PR 자동 처리Routines (GitHub trigger)PR/release event 기반 트리거.
단순 1회 작업그냥 일반 프롬프트셋 모두 부적합. 오버엔지니어링.

마지막 행이 가장 중요합니다. "반복"이라는 단어가 들어가지 않는 작업에 자동 루프를 도입하는 것은 토큰 낭비입니다. 그리고 1회 작업처럼 보여도 "결과 확인까지 5분 걸린다"면 /loop 5m 패턴이 의외로 잘 맞습니다. 작업의 시간축을 먼저 보세요.


주의사항과 알려진 함정

ScheduleWakeup verbatim 재실행 버그

GitHub Issue #51304#54086에 보고된 사례입니다. ScheduleWakeup이 슬래시 커맨드를 prompt로 받으면, 그 커맨드 안의 모든 sub-agent 호출과 tool call까지 verbatim으로 다시 실행합니다. 같은 작업이 중복 수행되어 비용이 두 배로 나옵니다.

"this re-executes the prompt verbatim — passing a slash command will re-run the entire command including all sub-agents and tool calls. This is for /loop dynamic mode only."

대응책: /loop dynamic 안에서 다른 슬래시 커맨드를 직접 호출하지 마세요. 일반 텍스트 지시로 풀어서 쓰는 게 안전합니다.

Ralph 무한 루프 위험

Ralph는 설계상 "끝나지 않는다"가 디폴트입니다. 본 시스템(~/.claude)의 /ralph-loop 스킬과 Anthropic 공식 플러그인 모두 --max-iterations cap을 강조합니다. 명시적 sentinel("완료" promise emission)이 없다면 반드시 max iteration cap을 걸어두세요. 안 그러면 Huntley의 3개월 cursed compiler 사례를 본인이 무심코 재현하게 됩니다.

5분 prompt cache TTL — 300초의 마법

Anthropic의 prompt cache TTL은 **5분(300초)**입니다. ScheduleWakeup의 delaySeconds를 300초 이내로 잡으면 컨텍스트가 캐시에 살아있어서 cache hit이 발생합니다. 넘기면 전체 컨텍스트를 다시 읽어와야 합니다. Cold start, 토큰 폭주, 지갑 화상.

권장 wakeup 간격: 4분 30초 이내. docs 예시가 "/loop 5m"이 아니라 굳이 5분으로 적힌 것은 우연이 아닙니다. 사실은 한계점에 가깝지만 docs 작성 편의를 위한 반올림입니다. 안전하게는 4분~4분 30초 사이로 잡으세요.

Goal의 Definition of Done 모호성

progress file에 "끝났다"의 기준을 명시적으로 적어두지 않으면, agent는 영원히 "조금만 더 개선"을 반복합니다. Goal 패턴을 쓸 때는 첫 번째 줄에 DoD를 적는 것을 습관화하세요. 측정 가능한 형태로요. "코드를 잘 짠다"가 아니라 "테스트 100% 통과 + 빌드 시간 30초 이내 + 라이센스 호환"처럼.


정리: 3계층 도구 스택

핵심 takeaway 다섯 개로 압축합니다.

  • Goal은 어휘이지 슬래시 커맨드가 아닙니다. 추적은 claude-progress.txt 같은 progress file로 합니다.
  • /loop은 2026 W15에 추가된 진짜 공식 커맨드입니다. interval / dynamic / no-prompt 세 모드, alias는 /proactive, 바닥엔 ScheduleWakeup tool, dynamic은 7일 만료.
  • 랄프루프는 Geoffrey Huntley의 외부 패턴이지만, Anthropic이 공식 marketplace에 ralph-loop/ralph-wiggum으로 직접 게시했습니다. Stop hook이 exit를 가로채는 방식입니다.
  • 셋은 평면 경쟁자가 아니라 **계층(어휘 → 패턴 → 커맨드 → primitive)**입니다. 마트료시카처럼 안쪽에 또 안쪽이 있습니다.
  • 숫자 하나만 외우세요. 300초. prompt cache TTL과 동일한 그 5분이, /loop 비용 설계의 사실상 모든 것을 결정합니다.

자율 에이전트는 멋진 일을 합니다. 다만 멋진 일에는 멋진 청구서가 따라오기도 합니다. 어휘부터 primitive까지 4단을 분리해서 인식하는 것만으로도 청구서가 훨씬 친근해집니다.


출처

Tier설명URL
T0Anthropic 공식 — Claude Code commands (/loop 정의)https://code.claude.com/docs/en/commands
T0Anthropic 공식 — Scheduled tasks (dynamic, 7일 expiry)https://code.claude.com/docs/en/scheduled-tasks
T0Anthropic 공식 — Week 15 release notes (/loop 도입)https://code.claude.com/docs/en/whats-new/2026-w15
T0Anthropic 공식 — ralph-loop 플러그인 marketplacehttps://github.com/anthropics/claude-plugins-official/tree/main/plugins/ralph-loop
T0Anthropic 공식 — Long-running Claude 가이드 (Goal/progress file)https://www.anthropic.com/research/long-running-Claude
T0Anthropic 공식 — ScheduleWakeup 재실행 버그 (Issue #51304)https://github.com/anthropics/claude-code/issues/51304
T1원전 저자 Geoffrey Huntley — "Ralph Wiggum as a software engineer"https://ghuntley.com/ralph/
T1원전 저자 Geoffrey Huntley — "cursed programming language" (3개월 실증)https://ghuntley.com/cursed/

면책: 본 글은 AI 보조로 작성된 정리 글이며, 자동화 시스템 도입 전에는 본인 환경에 맞는 검증이 필요합니다. 2026년 5월 12일 기준 공식 문서 내용을 반영했습니다.

© 퀀텀점프클럽 정상록