Claude Code를 위한 Ralph
CI
License: MIT
Version
Tests
GitHub Issues
Mentioned in Awesome Claude Code
Follow on X
지능형 종료 감지 및 속도 제한(rate limiting)을 갖춘 자율 AI 개발 루프
Ralph는 Geoffrey Huntley의 Claude Code 기술을 구현한 것으로, 그가 Ralph Wiggum의 이름을 따서 명명한 연속적인 자율 개발 사이클을 가능하게 합니다. 이 도구는 Claude Code가 무한 루프와 API 과사용(API overuse)을 방지하는 내장 안전 장치와 함께 프로젝트를 완료될 때까지 반복적으로 개선할 수 있도록 하는 연속적인 자율 개발 사이클을 구현합니다.
한 번 설치하면 어디서든 사용 가능 - Ralph는 모든 디렉터리에서 사용할 수 있는 전역 명령(global command)이 됩니다.
프로젝트 현황 (Project Status)
버전(Version): v0.11.5 - 활성 개발 (Active Development)
핵심 기능(Core Features): 작동 및 테스트 완료 (Working and tested)
테스트 커버리지(Test Coverage): 784개 테스트, 100% 통과율 (pass rate)
현재 지원 기능
- 지능형 종료 감지 기능을 갖춘 자율 개발 루프
- 이중 조건 종료 게이트: 완료 지표와 명시적인
EXIT_SIGNAL 두 가지 모두 필요
- 시간당 초기화되는 호출 제한(100회/시간, 설정 가능)
- 고급 오류 감지 기능이 있는 회로 차단기(무한 루프 방지)
- 의미론적 이해 및 2단계 오류 필터링을 갖춘 응답 분석기
- 자동 텍스트 구문 분석으로의 폴백 기능을 지원하는 JSON 출력 형식
- 컨텍스트 보존을 위한
--resume 플래그를 사용한 세션 연속성 확보(세션 하이재킹 방지)
- 설정 가능한 타임아웃을 갖는 세션 만료(기본값: 24시간)
- 최신 CLI 플래그:
--output-format, --allowed-tools, --no-continue
ralph-enable 위저드를 사용한 대화형 프로젝트 활성화 기능
- 프로젝트 설정을 위한
.ralphrc 설정 파일
- 실시간 Claude Code 가시성을 위한
--live 플래그를 이용한 라이브 스트리밍 출력
- 로그 로테이션:
ralph.log는 10MB 단위로 순환하며 4개의 아카이브 파일 유지
- API 호출 없이 루프를 시뮬레이션하는 건너뛰기 모드 (
--dry-run)
ralph-stats 분석 명령을 이용한 메트릭 추적 (루프당 JSON Lines 형식의 메트릭)
- 주요 루프 이벤트에 대한 데스크톱 알림 기능 (
--notify) (macOS/Linux/터미널 벨)
--backup 및 --rollback 복원 기능을 갖춘 자동 Git 백업 브랜치
- 정확한 막힌 루프 감지를 위한 다중 라인 오류 일치 검색
- 사용자 프롬프트와 함께하는 5시간 API 제한 처리 기능
- 실시간 모니터링을 위한 tmux 통합
- PRD(Product Requirements Document) 가져오기 기능
- GitHub 이슈 가져오기:
ralph-import --github-issue 및 메타데이터 필터(레이블, 제목, 담당자, 마일스톤, 상태)를 이용하며, 첫 번째/대화형/우선순위 선택과 --dry-run 미리보기를 지원
- GitHub Actions를 사용한 CI/CD 파이프라인 연동 기능
- 깔끔한 제거를 위한 전용 제거 스크립트
최근 개선 사항
미출시 - 보안: .ralphrc가 데이터로 파싱됨 (#346)
.ralphrc는 더 이상 source로 실행되지 않습니다: 알려진 키에 대한 KEY=VALUE 라인만 리터럴 값으로 적용됩니다. 셸 구문 ($VAR, $(...), 연결된 명령어)은 경고와 함께 거부되며, 이는 해당 기능에 의존했던 .ralphrc 파일에는 **호환성 문제(breaking)**를 일으킵니다.
CLAUDE_CODE_CMD, RALPH_SHELL_INIT_FILE, SANDBOX_DOCKER_IMAGE, SANDBOX_E2B_TEMPLATE 및 SANDBOX_DOCKER_NETWORK (host 없음)는 .ralphrc에서 제공하는 기본 값만 허용합니다. 사용자 정의 값은 환경 변수(또는 --sandbox-* 플래그)로 설정해야 합니다. 이는 ralph, ralph-import, 및 ralph-queue에 적용됩니다. docs/CLI_OPTIONS.md를 참조하십시오.
v0.11.5 - 커뮤니티 버그 수정 (최신)
- API 제한 오탐지 수정: 타임아웃(종료 코드 124)이 더 이상 API 5시간 제한으로 잘못 식별되지 않습니다 (#183).
- 3단계 API 제한 감지: 타임아웃 가드(timeout guard) → 구조적 JSON (
rate_limit_event) → 필터링된 텍스트 폴백(fallback).
- 비상주 모드(Unattended mode): API 제한 프롬프트가 종료하는 대신 타임아웃 시 자동으로 대기합니다.
- bash 3.x 호환성 수정:
${,,} 소문자 치환이 POSIX tr로 대체되었습니다 (#187).
- API 제한 감지를 위한 8개의 새 테스트 추가 (548개 → 566개 테스트).
⚠️ [IMG:N]
v0.11.4 - 버그 수정 및 호환성
- 진행 감지 수정: 루프 내의 Git 커밋이 이제 진행 상황으로 계산됩니다 (#141)
- 체크박스 정규식(regex) 수정: 날짜 항목
[2026-01-29]은 더 이상 체크박스로 계산되지 않습니다 (#144)
- 세션 하이재킹 수정:
--continue 대신 --resume <세션_ID>를 사용해야 합니다 (#151)
- EXIT_SIGNAL 재정의 수정:
STATUS: COMPLETE와 EXIT_SIGNAL: false가 이제 계속 작동합니다 (#146)
- ralph-import 무한 대기(hanging) 문제 수정 (비대화형 모드에
--print 플래그 추가)
- ralph-import 절대 경로 처리 수정
- macOS의 Homebrew coreutils를 위한 크로스 플랫폼 날짜 명령어 수정
- 환경 변수를 통해 설정 가능한 회로 차단기 임계값(circuit breaker thresholds) 추가 (#99)
- 비제로
base-index 설정을 위한 tmux 지원 추가
- 진행 감지 및 체크박스 정규식에 대한 13개의 새로운 회귀 테스트 케이스 추가
v0.11.3 - 라이브 스트리밍 및 Beads 수정
--live 플래그를 사용하여 실시간 Claude Code 가시성을 위한 라이브 스트리밍 출력 모드 추가 (#125)
- 올바른
bd list 인수를 사용한 beads 작업 가져오기(import) 기능 수정 (#150)
- CodeRabbit 검토 수정 적용: camelCase 변수, 상태를 존중하는 폴백(fallback), jq 가드
- 라이브 스트리밍 및 beads 가져오기 개선을 위한 12개의 새로운 테스트 케이스 추가
v0.11.2 - 설정 권한 수정
- 이슈 #136 수정:
ralph-setup이 일관된 도구 권한으로 .ralphrc를 생성하도록 수정
- 기본
ALLOWED_TOOLS 업데이트: Edit, Bash(npm *), 그리고 Bash(pytest) 포함
ralph-setup과 ralph-enable 모두 동일한 .ralphrc 구성을 생성합니다
- 모니터가 모든 CLI 매개변수를 내부 ralph 루프로 전달하도록 수정 (#126)
- 권한 및 매개변수 포워딩에 대한 16개의 새로운 테스트 케이스 추가
v0.11.1 - 완료 표시기 수정
- JSON 출력 모드에서 정확히 5번의 루프 후에 발생하는 조기 종료(premature exit) 문제 수정
completion_indicators는 이제 EXIT_SIGNAL: true일 때만 누적됩니다
- 문서화된 이중 조건 종료 게이트 동작에 맞게 조정
v0.11.0 - Ralph Enable Wizard
- 기존 프로젝트에 Ralph를 활성화하기 위한
ralph-enable 대화형 위자드(interactive wizard) 추가
- 5단계 위자드: 환경 감지 (Environment Detection) → 작업 소스 선택 (Task Source Selection) → 구성 (Configuration) → 파일 생성 (File Generation) → 검증 (Verification)
- 프로젝트 유형(TypeScript, Python, Rust, Go) 및 프레임워크(Next.js, FastAPI, Django)를 자동 감지
- beads, GitHub Issues 또는 PRD 문서에서 작업을 가져옴
- CI/자동화를 위한 비대화형 버전인
ralph-enable-ci 추가
- 새로운 라이브러리 컴포넌트:
enable_core.sh, wizard_utils.sh, task_sources.sh
v0.10.1 - 버그 수정 및 모니터 경로 수정 (Bug Fixes & Monitor Path Corrections)
- v0.10.0 호환성을 위해
ralph_monitor.sh의 하드코딩된 경로 수정
- JSON 형식에서 EXIT_SIGNAL 구문 분석(parsing) 오류 수정
- 안전 회로 차단기 (safety circuit breaker) 추가 (5회 연속 완료 표시 후 강제 종료)
- 들여쓰기가 된 마크다운에 대한 체크박스 파싱 수정
v0.10.0 - .ralph/ 하위 폴더 구조 (BREAKING CHANGE)
- 주의: Ralph 관련 모든 파일을
.ralph/ 하위 폴더로 이동
- 프로젝트 루트는 깨끗하게 유지:
src/, README.md, 사용자 파일만 남음
- 기존 프로젝트 업그레이드를 위한
ralph-migrate 명령어 추가
<details>
<summary>이전 버전 (v0.9.x)</summary>
v0.9.9 - EXIT_SIGNAL 게이트 및 제거 스크립트 (EXIT_SIGNAL Gate & Uninstall Script)
- 조기 종료 버그 수정: 완료 표시를 위해 Claude의 명시적인
EXIT_SIGNAL: true가 필요하도록 변경
- 깨끗한 Ralph 제거를 위한 전용
uninstall.sh 스크립트 추가
v0.9.8 - PRD 가져오기를 위한 최신 CLI (Modern CLI for PRD Import)
ralph_import.sh를 Claude Code CLI JSON 출력 형식을 사용하도록 현대화
- 구조화된 JSON 오류 메시지로 에러 처리 기능 향상
v0.9.7 - 세션 수명 주기 관리 (Session Lifecycle Management)
- 자동 리셋 트리거를 포함한 완전한 세션 수명 주기 관리 구현
- 수동 세션 재설정을 위한
--reset-session CLI 플래그 추가
v0.9.6 - JSON 출력 및 세션 관리 (JSON Output & Session Management)
- Claude Code CLI JSON 형식을 지원하도록
parse_json_response() 확장
- 세션 관리 함수 추가
v0.9.5 - v0.9.0 - PRD 가져오기 테스트(PRD import tests), 프로젝트 설정 테스트(project setup tests), 설치 테스트(installation tests), 프롬프트 파일 수정(prompt file fix), 최신 CLI 명령어 추가(modern CLI commands), 회로 차단기 개선 사항(circuit breaker enhancements)
진행 중 (In Progress)
v1.0까지의 로드맵: 최종 다듬기 작업 진행 중 | 전체 로드맵 | 기여 환영! (Contributions welcome!)
주요 기능 (Features)
-
자율 개발 루프 (Autonomous Development Loop) - 프로젝트 요구사항에 따라 Claude Code를 지속적으로 실행합니다.
-
지능형 종료 감지 (Intelligent Exit Detection) - 완료 지표(completion indicators)와 명시적인 EXIT_SIGNAL 두 가지 조건을 모두 확인해야 합니다.
-
세션 연속성 (Session Continuity) - 자동 세션 관리 기능을 통해 루프 반복 간 컨텍스트를 보존합니다.
-
세션 만료 (Session Expiration) - 설정 가능한 타임아웃(기본값: 24시간)과 자동 세션 재설정 기능이 있습니다.
-
속도 제한 처리 (Rate Limiting) - 시간당 제한 및 카운트다운 타이머가 포함된 내장 API 호출 관리 기능을 제공합니다.
-
5시간 API 제한 처리 (5-Hour API Limit Handling) - 비감독 모드(unattended mode)를 위해 타임아웃 가드, JSON 파싱, 필터링된 텍스트의 세 가지 계층적 감지 및 자동 대기 기능이 있습니다.
-
실시간 모니터링 (Live Monitoring) - 루프 상태, 진행 상황 및 로그를 보여주는 실시간 대시보드를 제공합니다.
-
작업 관리 (Task Management) - 우선순위가 지정된 작업 목록과 진행 상황 추적을 통해 구조화된 접근 방식을 제공합니다.
-
프로젝트 템플릿 (Project Templates) - 모범 사례 구조를 갖춘 새 프로젝트의 빠른 설정을 지원합니다.
-
대화형 프로젝트 설정 (Interactive Project Setup) - 기존 프로젝트에 대한 작업 가져오기(task import) 기능을 가진 ralph-enable 마법사(wizard)를 제공합니다.
-
설정 파일 (Configuration Files) - 프로젝트별 설정 및 도구 권한을 위한 .ralphrc 파일을 사용합니다.
-
종합 로깅 (Comprehensive Logging) - 타임스탬프와 상태 추적 기능이 포함된 상세 실행 로그를 제공합니다.
-
설정 가능한 타임아웃(Configurable Timeouts) - Claude Code 작업에 대한 실행 시간 제한 설정 (1~120분)
-
상세 진행 모드(Verbose Progress Mode) - 실행 중 선택적 상세 진행 업데이트
-
응답 분석기(Response Analyzer) - 의미론적 이해를 갖춘 AI 기반의 Claude Code 응답 분석
-
회로 차단기(Circuit Breaker) - 2단계 필터링, 다중 라인 오류 매칭 및 자동 복구 기능을 갖춘 고급 오류 감지
-
CI/CD 통합(Integration) - 자동화된 테스트가 포함된 GitHub Actions 워크플로우
-
깔끔한 제거(Clean Uninstall) - 완전한 제거를 위한 전용 제거 스크립트
-
실시간 스트리밍 출력(Live Streaming Output) - --live 플래그를 사용한 Claude Code 실행의 실시간 가시성 확보
-
Docker 샌드박스 실행(Docker Sandbox Execution) - --sandbox docker를 사용하여 격리된 컨테이너에서 Claude Code 실행 (리소스 제한, 네트워크 정책, 안전한 자격 증명 전달)
-
E2B 클라우드 샌드박스 실행(E2B Cloud Sandbox Execution) - --sandbox e2b를 사용하여 E2B 클라우드 샌드박스에서 Claude Code 실행 (파일 동기화, 세션 복구, --sandbox-max-cost를 사용한 비용 추적)
빠른 시작 (Quick Start)
Ralph는 두 가지 단계로 구성됩니다: **일회성 설치(one-time installation)**와 프로젝트별 설정(per-project setup).
INSTALL ONCE USE MANY TIMES
+-----------------+ +----------------+++
| ./install.sh | -> | ralph-setup project1 |
...
단계 1: Ralph 설치 (일회성)
시스템에 전역적으로 Ralph를 설치합니다:
git clone https://github.com/frankbria/ralph-claude-code.git
cd ralph-claude-code
./install.sh
이 명령어는 ralph, ralph-monitor, ralph-setup, ralph-import, ralph-queue, ralph-migrate, ralph-enable, 그리고 ralph-enable-ci 명령어를 PATH에 추가합니다.
참고: 이 작업은 시스템당 한 번만 수행하면 됩니다. 설치 후 원한다면 클론된 저장소를 삭제해도 무방합니다.
단계 2: 프로젝트 초기화 (프로젝트별)
옵션 A: 기존 프로젝트에 Ralph 활성화 (권장)
cd my-existing-project
...
옵션 B: 기존 PRD/사양 가져오기
ralph-import my-requirements.md my-project
cd my-project
...
옵션 C: 처음부터 새 프로젝트 생성
ralph-setup my-awesome-project
cd my-awesome-project
...
지속적인 사용 (설정 후)
Ralph이 설치되고 프로젝트가 초기화되면: