본문 바로가기
AI/Claude code

[Claude Code]/ralph-loop, /loop

by Machine-Geon 2026. 3. 16.
반응형

/ralph-loop과 /loop, 어떻게 다른가

이름은 비슷하지만 목적이 전혀 다른 두 가지 루프 기능. 기원부터 실제 사용법까지 정리했다.


Ralph의 기원 — 구토하는 심슨 캐릭터

모든 것은 오픈소스 개발자 Geoffrey Huntley가 작성한 단 세 줄의 셸 스크립트에서 시작됐다.

while :; do
  cat PROMPT.md | claude-code
done

AI에게 프롬프트를 던지고, 결과(에러 포함)를 다시 AI에게 먹이고, 답이 나올 때까지 반복한다. Huntley는 이 기법을 Ralph라고 불렀다.

"브루트 포스와 끈질김의 결합. AI가 에러를 뱉어내도 계속 시도한다."
— Geoffrey Huntley

이름의 유래는 두 가지다. 첫째는 1980년대 미국 속어로 "ralph" = 구토하다 — AI가 에러를 쏟아내도 개의치 않는다는 의미다. 둘째는 심슨의 캐릭터 Ralph Wiggum — 무지하지만 포기하지 않고 끈질기게 시도하는 그 아이.

이 단순한 아이디어는 삽시간에 퍼졌다. 커뮤니티에서 Stop Hook 기반의 구현체가 만들어졌고, 결국 Anthropic이 공식 플러그인으로 패키징claude.com/plugins/ralph-loop에 올렸다.


/ralph-loop — 완성될 때까지 반복

핵심 원리는 하나다. Claude Code가 작업을 마치고 종료하려 할 때, Stop Hook이 그 종료를 가로막는다. 그리고 동일한 프롬프트를 다시 투입한다. 변경된 파일은 그대로 남아있으므로 다음 이터레이션은 이전 결과를 보고 개선한다.

프롬프트 투입 → Claude 작업 → 종료 시도 → Stop Hook 차단 → 재투입 (파일 유지) → ...

종료 조건: completion-promise 출력 + EXIT_SIGNAL 둘 다 만족해야 루프가 멈춘다.

설치

# Anthropic 공식 마켓플레이스 추가
/plugin marketplace add anthropics/claude-code

# ralph-loop 설치
/plugin install ralph-loop

실제 예시 — TDD로 기능 구현

테스트가 모두 통과할 때까지 스스로 고쳐가며 반복하게 만드는 예시다.

/ralph-loop:ralph-loop "Kafka consumer lag 모니터링 API를 TDD로 구현.

1. 실패하는 테스트 먼저 작성
2. 최소한의 코드로 테스트 통과
3. ./gradlew test 실행
4. 실패한 테스트가 있으면 수정 후 재실행
5. 전체 통과 확인 후 완료 신호 출력:
   <promise>COMPLETE</promise>" --max-iterations 20

--max-iterations는 생략하면 안 된다. 완성 기준이 모호한 프롬프트는 영원히 루프를 돈다. 반드시 git 커밋 이후에 실행할 것 — 롤백 포인트가 없으면 리스크가 크다.


/loop — 정해진 시간마다 반복

2026년 3월, Anthropic은 Claude Code v2.1.71에 네이티브 /loop 커맨드를 추가했다. 이름은 비슷하지만 ralph-loop와 목적이 완전히 다르다.

/loop세션 레벨 cron이다. 인터벌과 태스크를 주면 Claude가 내부적으로 cron 표현식을 생성하고, 세션이 살아있는 동안 주기적으로 그 작업을 실행한다. cron 문법을 몰라도 된다. "5분마다", "매시간"처럼 자연어로 설명하면 된다.

인터벌 + 태스크 등록 → cron 생성 (내부) → N분 대기 → Claude 실행 → N분 대기 → ...

종료 조건: 세션 종료 또는 3일 후 자동 만료.

실제 예시 — 배포 모니터링

배포 중에 5분마다 서버 상태를 자동으로 체크하게 만드는 예시다.

# 5분마다 스테이징 서버 상태 확인
/loop 5m check if staging at port 8080 is responding, report HTTP status

# 1시간마다 PR 리뷰 재실행 (기존 skill 조합)
/loop 1h /review-pr 1234

# 등록된 루프 목록 확인
/loop list
# ID: a3f8c1b2  interval: */5 * * * *  prompt: check if staging...

# 특정 루프 취소
/loop cancel a3f8c1b2

주의: /loop는 세션이 종료되면 같이 끝난다. 터미널을 닫으면 루프도 사라진다. 세션을 넘어서 유지하고 싶다면 Desktop의 Scheduled Tasks 기능을 사용해야 한다.


둘의 차이를 한눈에

/ralph-loop /loop
목적 태스크를 완성시킴 주기적으로 반복 실행
트리거 이전 결과를 보고 재시도 시간 인터벌 (cron)
종료 completion-promise 달성 세션 종료 or 3일 만료
컨텍스트 파일 변경 누적 매 실행마다 독립
유스케이스 테스트 통과, 기능 완성 모니터링, 상태 체크

한 문장으로 정리하면 이렇다. /ralph-loop는 "완성될 때까지 계속 고쳐", /loop는 "5분마다 확인해줘".

둘은 경쟁 관계가 아니다. 배포를 /loop로 모니터링하면서, 동시에 /ralph-loop:ralph-loop로 다음 기능을 개발하는 식으로 함께 쓸 수 있다.


TL;DR

  • /ralph-loop — 작업을 completion-promise에 도달할 때까지 자율 반복. 기원은 Geoff Huntley의 bash while loop.
  • /loop — 지정한 인터벌마다 동일 프롬프트를 반복 실행하는 세션 레벨 cron. 세션 종료 시 같이 끝남.
반응형

'AI > Claude code' 카테고리의 다른 글

[Claude Code] btw  (0) 2026.03.13
[Claude Code] rtk-ai (token-killer)  (0) 2026.03.13
Claude 2월 업데이트 정리  (0) 2026.03.06
[Claude Code] Claude Remote Control  (0) 2026.02.25
[Claude Code] Claude Code 실행 직후 종료되는 문제  (0) 2026.02.09