AI 에이전트 루프: Ralph와 Sisyphus
TL;DR
AI 코딩 에이전트를 무한 루프로 돌리는 방식이 요즘 핫합니다. Ralph는 "끝날 때까지 계속 돌려"라는 단순한 bash 루프고, Sisyphus는 여러 모델을 팀처럼 굴리는 오케스트레이터입니다. 둘 다 "완료될 때까지 포기하지 않는다"는 철학은 같지만 접근 방식이 다릅니다.
글을 쓰게 된 계기
Claude Code에서 Ralph Loop를 한동안 써왔습니다. 자기 전에 돌려놓고 아침에 일어나서 결과 확인하는 재미가 쏠쏠하더군요. 예전에 AutoGPT 같은 자율 에이전트 써볼 때 느꼈던 그 감각이 다시 왔습니다.
그러다 파이토치 한국 사용자 모임에 올라온 글에서 oh-my-claudecode라는 프로젝트를 발견했습니다. OpenCode의 oh-my-opencode에서 Sisyphus 오케스트레이션 컨셉을 Claude Code용으로 포팅한 거였죠.
OpenCode가 왜 핫한지 잘 몰랐는데, 이 글 보고 알아보니 확실히 핫한 이유가 있더군요. Ralph와는 다른 접근법으로 "끝날 때까지 돌린다"를 구현한 건데, 둘을 비교해보니 꽤 흥미로워서 정리해봅니다.
참고로 이 글은 다음 포스트에서 소개할 oh-my-claudecode의 Ralplan(Ralph + Plan을 합친 기능)을 이해하기 위한 사전 지식이기도 합니다.
Ralph: 바보같이 단순한 게 핵심

Ralph Wiggum은 심슨 가족의 그 Ralph 맞습니다. Geoffrey Huntley가 2025년 5월에 처음 공개한 기법인데, 핵심은 놀랍도록 단순합니다:
while :; do cat PROMPT.md | claude ; done이게 끝입니다. 진짜로.
에이전트가 작업하고, 끝났다고 생각하면 종료하려 하고, 루프가 다시 같은 프롬프트를 넣어주고, 에이전트가 이전 작업 결과(git history, 파일 변경사항)를 보고 다음 할 일을 찾습니다. 이걸 "완료됨" 조건이 충족될 때까지 반복하는 방식이죠.
왜 "Ralph Wiggum"인가
Huntley 본인 말로는 이 기법을 발견했을 때 "토할 것 같았다(ralph)"고 합니다. 소프트웨어 개발의 미래가 보였기 때문이죠. 심슨 가족의 Ralph Wiggum 캐릭터처럼 "실패해도 계속 시도하는" 철학을 담았다더군요.
Ralph의 핵심 원칙
매 반복마다 새로운 컨텍스트로 시작합니다. 이전 대화 기록이 쌓이면 컨텍스트 윈도우가 낭비되고, 모델이 과거 실패에 매몰됩니다. Ralph는 이걸 피합니다.
"Backpressure"로 에이전트를 조종합니다. "이렇게 해라"가 아니라 "잘못하면 거부당한다"는 환경을 만듭니다. 테스트, 린트, 타입체크가 게이트 역할을 하는 거죠.
플랜은 일회용입니다. 계획이 틀어지면 고치려 하지 말고 버리고 새로 만듭니다. 재생성이 더 쌉니다.
Anthropic 공식 플러그인
Claude Code에 공식 Ralph Wiggum 플러그인이 있습니다:
/ralph-loop "REST API 만들어줘" --completion-promise "COMPLETE" --max-iterations 20다만 커뮤니티에서는 공식 플러그인에 대해 아쉬움을 표하는 목소리도 있습니다. HumanLayer의 Dex Horthy는 직접 테스트해본 후 "원래 Ralph의 핵심은 '영원히 돌리기'가 아니라 '작은 작업 단위를 독립된 컨텍스트 윈도우로 쪼개기'"라고 지적했습니다. Stop Hook 방식으로 구현된 공식 플러그인이 이 철학을 제대로 담지 못했다는 거죠.
Huntley 본인도 공식 플러그인에 대해 "귀엽긴 한데, 사람들이 이걸 써보고 '이게 Ralph가 아닌데?'라고 생각할까 봐 걱정된다"고 언급했습니다.
Sisyphus → oh-my-claudecode: 팀을 굴리는 오케스트레이터

Sisyphus는 원래 Oh My OpenCode 프로젝트의 메인 에이전트였습니다. 이름은 그리스 신화의 시시포스에서 따왔죠. 바위를 굴려 올리면 다시 굴러 떨어지고, 또 굴려 올리고... 끝없이 반복하는 그 시시포스요.
oh-my-claudecode: Claude Code로 포팅
최근 Anthropic이 OpenCode 같은 서드파티 앱에서 Claude API를 비공식 경로로 사용하는 것을 제한했습니다. 이 상황에서 Yeachan-Heo가 oh-my-opencode의 컨셉을 Claude Code 네이티브로 포팅한 oh-my-claudecode를 만들었습니다.
Ralph와의 결정적 차이
Ralph는 단일 에이전트가 같은 프롬프트를 반복해서 받습니다. oh-my-claudecode는 32개 전문 에이전트와 5가지 실행 모드(Autopilot, Ultrapilot, Ecomode, Swarm, Pipeline)로 움직입니다.
작업 성격에 맞는 에이전트에게 자동 위임하고, 모델도 스마트하게 라우팅합니다 (단순 작업은 Haiku, 복잡한 추론은 Opus). ralph, ulw, eco 같은 magic keyword로 모드 전환도 가능하고요.
자세한 사용법은 다음 글에서 다루겠습니다.
비교: 언제 뭘 쓸까
| 기준 | Ralph | Sisyphus |
|---|---|---|
| 철학 | 단순함, 반복 | 분업, 오케스트레이션 |
| 설정 난이도 | 낮음 (bash 스크립트) | 중간 (플러그인 설치) |
| 비용 | 단일 모델 (선택에 따라 다름) | 스마트 라우팅으로 30-50% 절약 가능 |
| 적합한 작업 | 단일 기능 구현, 리팩토링 | 대규모 프로젝트, 복잡한 작업 |
| 컨텍스트 관리 | 매번 새로 시작 | 전문 에이전트로 분산 |
Ralph가 나은 경우
- PRD 하나 주고 구현만 맡길 때
- 설정 없이 바로 쓰고 싶을 때
- 단순한 반복 작업 (린트 에러 8000개 잡기 같은)
Sisyphus가 나은 경우
- 프론트 + 백엔드 + DB 다 건드려야 할 때
- 병렬 처리로 속도를 높이고 싶을 때
- "이거 어떻게 해야 할지 모르겠는데 알아서 해줘" 스타일
공통점: 결국 "끝날 때까지"
둘 다 핵심 철학은 같습니다:
"에이전트가 '됐어요' 하고 나가려 하면, '아직이야' 하고 다시 돌린다."
인간이 할 일은 루프 안에서 빠지는 것입니다. 대신 루프 위에 앉아서 환경을 조율하죠. 테스트를 촘촘하게 짜고, 에이전트가 삽질하면 가드레일 추가하고, 방향이 틀어지면 플랜 새로 뽑고.
Geoffrey Huntley 말처럼:
"LLM은 운영자 스킬의 증폭기입니다. 그냥 돌려놓고 도망가면 좋은 결과 안 나옵니다. 베이비시팅 해야 합니다."
마치며
직접 써보고 자기 워크플로우에 맞는 걸 찾는 게 답입니다. 단, Claude Code에서 자체 제공하는 Ralph 플러그인을 쓴다면 --max-iterations 설정은 꼭 하세요. API 비용 폭탄 맞기 싫으면요.
Refs
- Ralph Wiggum as a "software engineer" - Geoffrey Huntley - Ralph 기법 원본 글
- A Brief History of Ralph - HumanLayer Blog - Ralph 역사와 공식 플러그인 비교
- Claude Code Ralph Wiggum Plugin - Anthropic GitHub - 공식 플러그인
- oh-my-claudecode GitHub - Yeachan-Heo - 프로젝트 저장소
- oh-my-claude-sisyphus 소개 - 파이토치 한국 사용자 모임 - Claude Code용 멀티에이전트 오케스트레이션 소개