본문으로 건너뛰기
Ralph의 실용 가이드 的文章封面图

Ralph의 실용 가이드

AI 보조

snarktank/ralph 전체 운영 매뉴얼 – 설치부터 실제 사용까지, PRD 작성, 사이클 실행, 품질 게이트 및 학습 내용을 다룹니다.

소개

이전 글에서 우리는 Ralph의 핵심 원칙인 무한 루프 + 매번 새로운 컨텍스트 + 파일을 유일한 정보 소스로 이해했습니다. 이 세 가지 기둥은 간단해 보이지만 개념을 이해하는 것부터 실제로 실행하는 것까지 세부적으로 해결해야 할 부분이 많습니다.

이 기사에서는 시작해 보겠습니다. snarktank/ralph를 사용하여 설치부터 실행까지 전체 과정을 완료하는 방법을 배우게 됩니다. snarktank/ralph는 커뮤니티에서 가장 성숙한 Ralph 구현 중 하나입니다(별 10,000개 이상). Claude Code와 Amp라는 두 가지 도구와 PRD 생성, JSON 변환 및 자동화된 실행을 위한 완전한 도구 체인을 지원합니다.

전제조건

시작하기 전에 환경이 다음 요구 사항을 충족하는지 확인하세요.

종속성설명
AI 프로그래밍 도구클로드 코드(npm install -g @anthropic-ai/claude-code) 또는 Amp CLI
jqJSON 처리 도구(macOS: brew install jq)
힘내프로젝트는 Git 저장소여야 합니다
# 检查依赖
claude --version   # Claude Code CLI
jq --version       # JSON 处理
git --version      # Git

설치 및 구성

snarktank/ralph는 사용 시나리오에 따라 선택할 수 있는 다양한 설치 방법을 제공합니다.

방법 1: Claude Code에서 직접 설치(권장)

가장 쉬운 방법은 Claude Code 대화에 GitHub 링크를 붙여넣고 Claude가 자동으로 설치를 완료하도록 하는 것입니다.

Install this skill for me: https://github.com/snarktank/ralph

Claude Code는 자동으로 저장소를 복제하고 기술 파일을 올바른 위치에 복사합니다. /prd/ralph 명령은 설치 후에 사용할 수 있습니다.

방법 2: Claude Code 마켓 설치

market 명령을 통해 설치:

# 添加并安装插件
/plugin marketplace add snarktank/ralph
/plugin install ralph-skills@ralph-marketplace

설치 후 /prd(PRD 생성) 및 /ralph(JSON으로 변환) 두 가지 기술을 사용할 수 있습니다.

방법 3: 수동 스킬 설치(Claude Code/Amp)

기술 파일을 해당 도구의 전역 구성 디렉터리에 수동으로 복사합니다.

# 先克隆仓库
git clone https://github.com/snarktank/ralph.git /tmp/ralph

# Claude Code 用户
cp -r /tmp/ralph/skills/prd ~/.claude/skills/
cp -r /tmp/ralph/skills/ralph ~/.claude/skills/

# Amp 用户
cp -r /tmp/ralph/skills/prd ~/.config/amp/skills/
cp -r /tmp/ralph/skills/ralph ~/.config/amp/skills/

/prd/ralph 명령은 설치 후에 사용할 수 있습니다.

방법 4: 프로젝트 수준 설치

Ralph 스크립트를 프로젝트에 직접 복사합니다. 팀 공유 또는 사용자 정의 스크립트가 필요한 시나리오에 이상적입니다.

# 克隆 Ralph 仓库
git clone https://github.com/snarktank/ralph.git /tmp/ralph

# 复制核心文件到项目
mkdir -p scripts/ralph
cp /tmp/ralph/ralph.sh scripts/ralph/
cp /tmp/ralph/CLAUDE.md scripts/ralph/   # Claude Code 用户
# 或
cp /tmp/ralph/prompt.md scripts/ralph/   # Amp 用户

# 赋予执行权限
chmod +x scripts/ralph/ralph.sh

설치가 완료되면 프로젝트 구조는 다음과 같습니다.

your-project/
├── scripts/ralph/
│   ├── ralph.sh        # 核心循环脚本
│   └── CLAUDE.md       # Claude Code 的 Prompt 模板
├── tasks/              # PRD 文件目录(执行时自动创建)
│   └── prd.json        # 你的任务定义
└── ...

제안: 첫 번째 방법이 가장 쉽습니다. GitHub 링크를 Claude Code에 전달하면 됩니다. 설치 프로세스를 수동으로 제어하려면 방법 2(market 명령) 또는 방법 3(수동 복사)을 선택하세요. 스크립트를 팀과 공유하거나 사용자 정의해야 하는 경우 방법 4를 선택하십시오.


핵심 파일 구조

Ralph의 메모리는 전적으로 파일 시스템에 의존합니다. Ralph를 잘 사용하기 위해서는 각 파일의 역할을 이해하는 것이 필수입니다.

ralph.sh - 루프 엔진

이것이 Ralph의 핵심입니다. 새로운 AI 인스턴스를 지속적으로 생성하는 bash 스크립트입니다.

# 基本用法
./scripts/ralph/ralph.sh [max_iterations]        # 默认:Amp
./scripts/ralph/ralph.sh --tool claude [iterations]  # 使用 Claude Code

각 반복에서 ralph.sh는 다음 단계를 수행합니다.

  1. 기능 분기 생성(prd.json의 branchName에서)
  2. 우선순위가 가장 높은 미완성 스토리(passes: false)를 선택하세요.
  3. 이 스토리를 구현하기 위해 AI 인스턴스를 생성합니다.
  4. 품질 검사 실행(유형 검사, 테스트)
  5. 통과 확인 → git commit; 검사 실패 → 다음 반복으로 남겨두기
  6. prd.json을 업데이트하고 스토리를 passes: true로 표시합니다.
  7. 배운 내용을 Progress.txt에 추가하세요.
  8. 모든 스토리가 완료되거나 최대 반복 횟수에 도달할 때까지 반복합니다.

기본 반복 제한은 10입니다. 프로젝트 복잡성에 따라 조정합니다.

# 简单项目
./scripts/ralph/ralph.sh --tool claude 10

# 复杂项目
./scripts/ralph/ralph.sh --tool claude 50

prd.json - 작업 정의

이것이 Ralph의 "두뇌"입니다. 모든 작업이 정의되는 곳입니다. 이는 플랫 JSON 파일입니다.

{
  "projectName": "Blog i18n Translation",
  "branchName": "ralph/i18n-translation",
  "userStories": [
    {
      "id": "US-001",
      "title": "Translate homepage metadata",
      "description": "Create content/docs/meta.en.json with English translations for all navigation items",
      "acceptanceCriteria": [
        "meta.en.json file exists with valid JSON format",
        "All navigation titles are translated to English",
        "pnpm types:check passes"
      ],
      "priority": 1,
      "passes": false,
      "dependsOn": [],
      "notes": "Reference the existing meta.json structure"
    },
    {
      "id": "US-002",
      "title": "Translate blog post hello-world",
      "description": "Create content/blog/hello-world.en.mdx, translated from Chinese to English",
      "acceptanceCriteria": [
        "hello-world.en.mdx file exists",
        "All QuoteCard components have defaultLang='en'",
        "Internal links use /en/ prefix",
        "Code blocks remain untranslated",
        "pnpm types:check passes"
      ],
      "priority": 2,
      "passes": false,
      "dependsOn": ["US-001"],
      "notes": "Preserve MDX component props format"
    }
  ]
}

필드 설명:

필드설명
projectName로그 및 브랜치 이름 지정에 사용되는 프로젝트 이름
branchNameGit 분기 이름 - Ralph가 자동으로 생성합니다
id스토리 고유 식별자, 권장되는 US-001 형식
title짧은 제목
description자세한 설명 - 구체적일수록 좋습니다
acceptanceCriteria승인 기준 목록 - 가장 중요한 필드입니다
priority우선 순위 번호 - 숫자가 작을수록 먼저 실행됩니다
passes완료 여부 - Ralph가 자동으로 업데이트됩니다
dependsOn종속 스토리 ID 목록
notes추가 팁 및 상황

Progress.txt - 경험 기록

이것이 랄프의 '장기 기억'이다. 각 반복 후에 AI는 추가 학습 경험을 추가합니다.

=== Iteration 1 (US-001) ===
- Discovered: typecheck command is `pnpm types:check`, not `pnpm typecheck`
- Discovered: meta.en.json needs to mirror exact structure of meta.json
- Pattern: fumadocs i18n uses `.en.` suffix convention

=== Iteration 2 (US-002) ===
- Discovered: QuoteCard requires both `quote` and `quoteZh` props
- Gotcha: internal links must use /en/ prefix for English pages
- Pattern: code blocks should never be translated

다음 반복을 위한 새로운 Claude 인스턴스는 이 파일을 읽고 즉시 이전 경험을 모두 얻습니다. 이것이 Ralph의 실행이 점점 더 좋아지는 이유입니다. 지식은 반복 간에 축적되지만 컨텍스트는 깨끗하게 유지됩니다.

AGENTS.md - 지속적인 지식 기반

Ralph는 Progress.txt 외에도 프로젝트의 AGENTS.md(또는 CLAUDE.md) 파일도 업데이트합니다. Claude Code와 Amp는 시작할 때 자동으로 이 파일을 읽습니다.

Progress.txt와 달리 AGENTS.md는 안정적인 프로젝트 간 지식을 기록합니다.

# AGENTS.md

## Codebase Conventions
- Use fumadocs for documentation framework
- MDX files use custom components: QuoteCard, BlogImage, GlossaryCard
- i18n files use `.en.mdx` suffix

## Gotchas
- Always run `pnpm types:check` after modifying MDX files
- QuoteCard: set `defaultLang='en'` in English translations

PRD 작성

PRD(제품 요구 사항 문서)의 품질이 Ralph의 실행 결과를 직접적으로 결정합니다. 글을 잘 썼어요. 순조롭게 항해를 하게 됐어요, 랄프. 잘못 작성하면 Ralph는 같은 이야기에서 반복적으로 실패할 것입니다.

스킬을 사용하여 PRD 생성

snarktank/ralph 스킬이 설치되어 있으면 대화식으로 PRD를 생성할 수 있습니다.

# 在 Claude Code 或 Amp 中
/prd I want to add i18n support to the blog, translating all Chinese content to English

AI는 몇 가지 명확한 질문(관련된 문서, 기술 스택 제한, 품질 표준 등)을 묻고 구조화된 PRD 문서를 생성합니다.

생성 후 /ralph 명령을 사용하여 PRD를 prd.json 형식으로 변환합니다.

/ralph    # 转换 PRD 为 prd.json

수동으로 PRD 작성

prd.json을 직접 작성할 수도 있습니다. 다음은 주요 설계 원칙입니다.

원칙 1: 스토리 세분성은 보통입니다

각 스토리는 한 번의 반복으로 완료될 수 있을 만큼 작아야 하며, 독립적으로 가치를 전달할 수 있을 만큼 커야 합니다.

// ❌ 太大:一次迭代完不成
{
  "id": "US-001",
  "title": "Build complete user authentication system",
  "description": "Implement registration, login, forgot password, OAuth, permission management..."
}

// ❌ 太小:没有独立价值
{
  "id": "US-001",
  "title": "Create email field on User table",
  "description": "Add email field to User model"
}

// ✅ 刚好:一次迭代能完成,有独立价值
{
  "id": "US-001",
  "title": "Implement email/password login",
  "description": "Create login API and login page with email/password authentication",
  "acceptanceCriteria": [
    "POST /api/auth/login accepts email + password",
    "Returns JWT token",
    "Login page form submits successfully",
    "All tests pass"
  ]
}

경험 법칙: 스토리에는 13개의 파일 수정이 포함되며 35개의 승인 기준이 있습니다.

원칙 2: 승인 기준은 자동으로 검증 가능해야 합니다

Ralph는 스토리가 완전한지 확인해야 하므로 승인 기준을 객관적으로 평가할 수 있어야 합니다.

// ❌ 模糊的标准
"acceptanceCriteria": [
  "Code quality is good",
  "Performance is decent",
  "User experience is smooth"
]

// ✅ 可验证的标准
"acceptanceCriteria": [
  "pnpm types:check passes",
  "pnpm test passes",
  "API response time < 200ms",
  "File src/auth/login.ts exists and exports loginHandler function"
]

원칙 3: dependencyOn을 사용하여 실행 순서 제어

일부 이야기에는 종속성이 있습니다. dependsOn 필드는 Ralph가 올바른 순서로 실행되도록 보장합니다.

{
  "userStories": [
    {
      "id": "US-001",
      "title": "Create database schema",
      "dependsOn": []
    },
    {
      "id": "US-002",
      "title": "Implement user registration API",
      "dependsOn": ["US-001"]
    },
    {
      "id": "US-003",
      "title": "Implement login page",
      "dependsOn": ["US-002"]
    }
  ]
}

원칙 4: 메모에 맥락을 제공하세요

메모 필드는 AI에게 추가 힌트를 제공합니다. AI가 모를 수도 있는 귀하가 알고 있는 정보를 여기에 적어 보십시오.

{
  "notes": "Project uses fumadocs framework, i18n files follow .en.mdx suffix naming. Reference content/docs/notes/speckit/concept.en.mdx for translation style."
}

Ralph 루프 실행

PRD가 준비되면 루프를 실행할 차례입니다.

실행 시작

# 使用 Claude Code,默认 10 次迭代
./scripts/ralph/ralph.sh --tool claude

# 指定迭代次数
./scripts/ralph/ralph.sh --tool claude 30

# 使用 Amp(默认)
./scripts/ralph/ralph.sh 20

실행 과정

시작하면 다음과 유사한 출력이 표시됩니다.

=== Ralph Loop - Iteration 1 ===
Branch: ralph/i18n-translation
Selected story: US-001 - Translate homepage metadata
Spawning fresh Claude instance...

[Claude Code executing...]

Quality check: pnpm types:check ... PASSED
Committing: feat: [US-001] - Translate homepage metadata
Updating prd.json: US-001 passes: true
Appending to progress.txt

=== Ralph Loop - Iteration 2 ===
Selected story: US-002 - Translate blog post hello-world
Spawning fresh Claude instance...

각 반복은 Claude의 완전히 새로운 인스턴스입니다. prd.json을 읽어 무엇을 해야 할지 알고, Progress.txt를 읽어 이전에 배운 내용을 알고 있습니다.

###완료 신호

모든 스토리가 passes: true로 표시되면 Ralph는 완료 신호를 출력하고 종료합니다.

All stories completed!
<promise>COMPLETE</promise>

모니터링 및 디버깅

Ralph가 실행되는 동안 다음 명령을 사용하여 진행 상황을 볼 수 있습니다.

# 查看每个 story 的完成状态
cat tasks/prd.json | jq '.userStories[] | {id, title, passes}'

# 查看经验日志
cat progress.txt

# 查看最近的 git 提交
git log --oneline -10

# 实时跟踪 Ralph 输出
tail -f progress.txt

자동 보관

다른 branchName을 사용하여 새 기능을 시작하면 Ralph는 마지막 실행의 파일을 archive/YYYY-MM-DD-feature-name/ 디렉터리에 자동으로 보관하여 작업 디렉터리를 깨끗하게 유지합니다.


피드백 루프 및 품질 게이트 제어

Ralph의 "자가 수정" 능력은 전적으로 피드백 루프의 품질에 달려 있습니다. 피드백 루프가 없으면 Ralph는 맹목적으로 반복되는 스크립트일 뿐입니다. 즉, 코드가 올바른지 확인할 수 없는 상태에서 계속해서 코드를 대량 생성합니다.

품질 검사 구성

CLAUDE.md(또는 Prompt.md)에서 QA 명령을 정의합니다.

## Quality Commands

After implementing each story, run these checks IN ORDER:

1. `pnpm types:check` — TypeScript type checking
2. `pnpm test` — Unit tests
3. `pnpm build` — Full build verification

If any check fails:
- DO NOT commit
- Fix the issue
- Re-run all checks
- Only commit when all checks pass

품질 접근 제어 수준

계층 구조도구포착된 문제
즉각적인 피드백TypeScript 컴파일러유형 오류, 구문 오류
기능 검증단위 테스트논리 오류, 극단적인 경우
통합 검증빌드 명령종속성 문제, 구성 오류
런타임 검증개발자 브라우저 기술UI 렌더링 문제(프런트 엔드 프로젝트)

프런트 엔드 스토리의 경우 Ralph는 "개발자 브라우저 기술을 사용하여 브라우저에서 확인"이라는 허용 기준을 추가할 것을 권장합니다. AI가 실제로 브라우저를 열어 페이지가 올바르게 렌더링되는지 확인하도록 합니다.

품질검사에 실패한 경우

스토리가 반복적으로 QA에 실패하는 경우 Ralph는 동일한 스토리를 무한정 재시도하지 않습니다. 반복 상한에 도달한 후 중지되고 현재 상태를 유지합니다. 다음을 수행할 수 있습니다.

  1. 진행이 중단된 이유를 이해하려면 Progress.txt를 확인하세요.
  2. 문제를 수동으로 수정한 후 다시 실행하세요.
  3. 스토리 세분화 조정(너무 클 수도 있음)
  4. 메모 필드에 더 많은 컨텍스트를 추가하세요.

프롬프트 사용자 정의

Ralph의 프롬프트 템플릿(CLAUDE.md 또는 Prompt.md)은 AI 동작을 제어하는 기본 수단입니다. 설치 후에는 프로젝트에 따라 사용자 정의해야 합니다.

주요 맞춤 아이템

1. 프로젝트별 품질 명령

## Project-Specific Commands
- Typecheck: `pnpm types:check` (not `tsc` or `pnpm typecheck`)
- Test: `pnpm vitest run`
- Build: `pnpm build`
- Lint: `pnpm lint`

2. 코드 스타일 제약

## Code Conventions
- Use TypeScript strict mode
- Prefer named exports over default exports
- Use fumadocs components for MDX content
- Follow existing file naming patterns (kebab-case)

3. 알려진 함정

## Known Gotchas
- MDX files: always import components at the top
- i18n: English files use `.en.mdx` suffix
- Links: English pages must use `/en/` prefix
- QuoteCard: set `defaultLang` to match the file language

4. 막혔을 때 처리

## When Stuck
If you cannot complete a story after 3 attempts within the same iteration:
1. Document what's blocking in progress.txt
2. Move to the next story if possible
3. Do NOT modify files unrelated to the current story

실제 사례: Ralph로 블로그 번역하기

Ralph가 실제로 어떻게 작동하는지 보여주기 위해 다음은 실제 예입니다. Ralph 스타일 자율 에이전트를 사용하여 전체 블로그를 중국어에서 영어로 번역합니다.

프로젝트 설정

이 프로젝트에는 22개 이상의 콘텐츠 파일(블로그 게시물, 문서, 탐색 메타데이터)을 중국어에서 영어로 번역해야 합니다. 이 프로젝트는 fumadocs의 Next.js 블로그를 기반으로 하며 i18n을 지원합니다. 작업은 prd.json 파일에 정의되어 있으며 각각 명확한 승인 기준이 있는 16개의 사용자 스토리를 포함합니다.

scripts/ralph/
├── prd.json          # 16 个 user story,带验收标准
└── progress.txt      # 经验日志,每个 story 完成后更新

모든 사용자 스토리는 일관된 패턴을 따릅니다.

  • 명시적 결과물: "콘텐츠 만들기/blog/xxx.en.mdx"
  • 검증 가능한 기준: "Typecheck 통과", "내부 링크는 /en/ 접두사를 사용합니다."
  • 기술적 제약: "코드 블록을 번역되지 않은 상태로 유지", "QuoteCard에서 defaultLang='en' 설정"

실행 모드

에이전트는 Ralph 방법론의 핵심 원칙을 따릅니다.

  1. 문서는 진실의 원천입니다: prd.json는 어떤 이야기가 전달되었는지 추적합니다(passes: true/false). progress.txt 반복 간 경험을 얻습니다. "Typecheck 명령은 pnpm typecheck이 아니라 pnpm types:check입니다."

  2. 자동화된 품질 게이트: 각 번역 후 pnpm types:check이 실행되어 MDX 파일이 올바르게 컴파일되었는지 확인합니다. 유형 검사에 실패하면 제출하기 전에 수정하세요.

  3. 점진적 발전: 각 스토리는 설명 제출 정보(feat: [US-003] - Translate blog/claude-code-quality-control.mdx)와 함께 독립적으로 제출되며 필요할 때 쉽게 롤백할 수 있습니다.

  4. 병렬 실행: 긴 기사의 경우 여러 하위 에이전트가 동시에 번역됩니다. 예를 들어 US-010(claude-skills 개념 + 실습), US-011(speckit 개념 + 실습) 및 US-012(claude-architecture + claude-subagent)가 병렬로 실행됩니다.

주요 교훈

체험세부정보
축적된 지식이 중요합니다초기 스토리에서 발견된 패턴(QuoteCard defaultLang, 링크 접두어 규칙)을 통해 후속 스토리를 더 빠르게 완료할 수 있습니다
피드백 루프로서의 Typecheck문제가 쌓이기 전에 누락된 가져오기 또는 잘못된 MDX를 찾아보세요
병렬화 및 확장 가능6개의 번역 에이전트가 동시에 실행 중이며 완료 시간은 에이전트 1개
PRD 세분화가 중요스토리당 범위 1-2 파일 - 안정적으로 완료할 수 있을 만큼 작고 의미가 있을 만큼 큽니다
진행 로그는 반복되는 실수를 방지합니다Progress.txt의 "코드베이스 패턴" 부분은 동일한 문제가 재발견되는 것을 방지하기 위한 지식 기반이 됩니다

결과

16개의 사용자 스토리가 모두 단일 세션에서 완료되었습니다. 8개의 Meta.en.json 탐색 파일이 생성되었고, 3개의 블로그 게시물이 번역되었으며, 12개의 문서 페이지가 번역되었으며, 전체 사이트 구축이 확인되었습니다. 승인 기준이 명확하고 피드백 루프(유형 확인)가 문제를 즉시 포착하므로 각 번역은 일관된 품질을 유지합니다.

이 프로젝트는 잘 정의된 작업 + 명확한 성공 기준 + 자동화된 검증 + 파일 시스템을 통한 증분 전달 등 Ralph의 완전한 구현 모델을 보여줍니다.


커뮤니티 구현 및 대안

snarktank/ralph가 유일한 옵션은 아닙니다. 이러한 각 구현에는 필요에 따라 고유한 장점과 단점이 있습니다.

자원링크지침
스나크탱크/랄프스나크탱크/랄프이 기사에서 사용된 가장 완벽한 기능은
랄프 오케스트라mikeyobrien/ralph-orchestrator더 많은 사용자 정의 옵션을 갖춘 Mickey O'Brien이 개발함
랄프 루프 에이전트vercel-labs/ralph-loop-agentAI SDK를 기반으로 한 Vercel의 구현
랄피마이클시멜레스/랄피Michael Shimeles의 경량 구현

대안: GSD

GSD는 엄밀히 말하면 Ralph의 "커뮤니티 구현"이 아니라 대안입니다. Ralph의 핵심 원칙(컨텍스트 관리, 원자성 작업)을 적용하지만 토론 → 계획 → 실행 → 확인이라는 보다 완전한 워크플로를 제공합니다.

자원링크지침
GSD(작업 완료)반짝이카우보이/젠장아이디어부터 PRD, 실행까지 완벽한 프레임워크

Ralph가 너무 "원시적"이고 더 많은 프로세스 지원이 필요하다고 생각되면 GSD가 더 적합할 수 있습니다. 자세한 내용은 GSD 심층 분석을 참조하세요.


추천 리소스

공식 출처:

자원링크지침
Geoffrey Huntley의 블로그ghuntley.com/ralph발명가의 원본 기사
랄프 위검 방법ghuntley/ralph-wiggum 방법공식 사용자 가이드

동영상 튜토리얼:

자원링크지침
Ralph Wiggum 심층 토론클로드 코드의 구현이 아닌 이유Geoffrey Huntley가 공식 구현의 문제점을 설명합니다
Ralph의 올바른 사용Ralph Wiggum 루프를 잘못 사용하고 있습니다.Roman(Mentat) 사용법 시연
Ralph에 대해 이야기해야 합니다랄프에 대해 이야기 좀 해야겠어요논란에 대한 테오의 분석

모범 사례 및 FAQ

비용 관리

Ralph의 자동 실행은 API 수수료가 지속적으로 발생함을 의미합니다. 여러 가지 통제 조치:

  • 항상 max_iterations 설정: 가장 기본적인 안전망입니다.
  • 스토리 세분화를 합리적으로 유지: 스토리가 너무 크면 여러 번의 반복이 필요합니다. 너무 상세한 이야기는 시작 오버헤드를 증가시킵니다.
  • 소규모 테스트 우선: 새 프로젝트를 먼저 3~5회 반복 실행한 다음 프롬프트와 품질 액세스 제어가 제대로 작동하는지 확인한 후 확장합니다.

일반적인 함정

함정 1: 스토리가 너무 방대함

증상: 스토리가 반복적으로 실패하고 반복 횟수가 빠르게 소진됩니다.

해결 방법: 2~3개의 작은 스토리로 나눕니다. "완전한 인증 시스템 구축"은 "로그인 API 구현" + "로그인 페이지 생성" + "JWT 미들웨어 추가"로 나누어집니다.

트랩 2: 피드백 루프 없음

증상: Ralph는 스토리가 완료되었다고 주장하지만 실제 코드에 문제가 있습니다.

해결책: 승인 기준에 실행 가능한 확인 명령을 추가하십시오. "코드가 작성되었습니다"는 승인 기준이 아닙니다. "pnpm 테스트를 모두 통과했습니다"입니다.

트랩 3: Progress.txt가 사용되지 않습니다

증상: 동일한 오류가 다른 반복에서 반복적으로 나타납니다.

해결 방법: 프롬프트 템플릿에서 "progress.txt를 읽고 그 안에 있는 규칙을 따르십시오"라고 명시적으로 지시하는지 확인하세요. AI가 자동으로 경험치를 추가하지 않는 경우 프롬프트에 "각 스토리가 완료된 후 Progress.txt에 경험치를 추가하세요"를 추가하세요.

트랩 4: 잘못된 종속성 순서

증상: 스토리가 아직 존재하지 않는 코드에 의존하여 구현이 실패합니다.

해결 방법: dependsOn 필드를 올바르게 설정하십시오. 인프라 이야기가 먼저 나오도록 하세요.

FAQ

**Q: Ralph와 공식 플러그인의 차이점은 무엇인가요? **

핵심 차이점: snarktank/ralph는 반복할 때마다 새로운 프로세스를 생성하는 반면(완전히 새로운 컨텍스트) 공식 플러그인은 동일한 세션 내에서 반복됩니다(컨텍스트는 계속 축적됩니다). 자세한 내용은 이전 기사 분석을 참조하세요.

**Q: 실행 중에 prd.json을 수동으로 수정할 수 있나요? **

그렇습니다. Ralph는 각 반복이 시작될 때 prd.json을 다시 읽습니다. 반복 간에 스토리 설명을 수정하거나, 새 스토리를 추가하거나, 수동으로 스토리를 passes: true(건너뛰기)로 표시할 수 있습니다.

**Q: Ralph가 반복적으로 실패하는 스토리에 막히면 어떻게 해야 하나요? **

  1. Progress.txt를 확인하여 실패 이유를 파악하세요.
  2. 노트에 더 많은 맥락을 추가하세요
  3. 스토리 분할(너무 클 수도 있음)
  4. 차단 문제를 수동으로 수정한 후 다시 실행하세요.

**Q: Ralph가 실행되는 동안 다른 작업을 할 수 있나요? **

그렇습니다. Ralph는 "Human on the Loop"로 설계되었으므로 쳐다볼 필요가 없습니다. AFK 모드에서는 퇴근 전 시작해 다음날 아침 결과를 확인해보세요. Ralph가 작업 중인 파일을 수정하지 마세요.

**Q: 비용을 관리하는 방법은 무엇입니까? **

세 가지 방법: 합리적인 max_iterations을 설정하고, 스토리 세분성을 적절하게 유지하고(낭비되는 반복을 줄이기 위해), 먼저 소규모 시험 실행을 수행하여 프로세스가 올바른지 확인합니다. 일반적으로 스토리가 1020개 있는 프로젝트의 경우 API 수수료는 $50100입니다.


요약

Ralph의 작업 흐름은 다섯 단계로 정리할 수 있습니다.

安装 → 编写 PRD → 配置质量门禁 → 运行循环 → 检查结果

핵심 개념은 동일하게 유지됩니다. 문서를 유일한 진실 소스로 삼고, 각 반복을 처음부터 시작하고, 품질 게이트를 제어하도록 하세요.

이제 프로젝트로 돌아가서 prd.json을 준비하고 ./scripts/ralph/ralph.sh --tool claude을 실행한 후 커피 한 잔을 만드세요.

추가 자료

댓글

목차

Ralph의 실용 가이드 | Yu의 사이버 데스크