ํธ๋ ๋-01-ralph-pattern-diagram.svg
๐ฃ โwhile ๋ฃจํ ํ๋๊ฐ ์ธ์ฃผ ๊ฐ๋ฐํ์ ๋์ฒดํ๋ค.โ
๐ค ์ด๊ฒ ๋ญ๋ฐ?
Ralph Wiggum Pattern์ ์ฌ์จ ๊ฐ์กฑ์ ๊ทธ ๋ฉ์ฒญํ ๋ํ ์๊ฒ์์ ์ด๋ฆ์ ๋ฐ์๋ค.
ํต์ฌ์ ๋จ์ํ๋ค:
while :; do cat PROMPT.md | claude-code ; doneAI ์์ด์ ํธ๋ฅผ ๋ฌดํ ๋ฃจํ์ ๋ฃ๊ณ , ์กฐ๊ฑด์ด ์ถฉ์กฑ๋ ๋๊น์ง ์์์ ๋ฐ๋ณต ์คํํ๊ฒ ๋ง๋๋ ๊ธฐ๋ฒ์ด๋ค.
Geoffrey Huntley๊ฐ 2025๋ ์ค๋ฐ์ ๋์คํํ๊ณ , ์ง๊ธ์ AI ๊ฐ๋ฐ์ ํ์ค ํจํด ์ค ํ๋๊ฐ ๋๋ค.
๐ก ์ ์ค์ํด?
๊ธฐ์กด ๋ฐฉ์์ ๋ฌธ์
- ๊ฐ๋ฐ์๊ฐ AI์๊ฒ ์ง์
- AI๊ฐ ์ฝ๋ ์์ฑ
- ์๋ฌ ๋ฐ์
- ๊ฐ๋ฐ์๊ฐ ์๋ฌ ๋ณต์ฌํด์ ๋ค์ ์ง์
- 1-4 ๋ฐ๋ณตโฆ ๐ฉ
๊ฐ๋ฐ์๊ฐ ๊ณ์ ๊ฐ์ ํด์ผ ํ๋ค.
Ralph์ ํด๊ฒฐ์ฑ
- AI๊ฐ ์ฝ๋ ์์ฑ
- ์๋ฌ ๋ฐ์
- AI๊ฐ ์ค์ค๋ก ์๋ฌ ํ์ธํ๊ณ ์์
- ํ ์คํธ ํต๊ณผํ ๋๊น์ง ๋ฐ๋ณต
- ์๋ฃ โ
๊ฐ๋ฐ์๋ ์๋ฌ ๊ฐ๋ ๋๋ค. ๐
๐ ํต์ฌ ์๋ฆฌ
โ๊ฒฐ์ ๋ก ์ ์ผ๋ก ๋์ ๊ฒ์ด ๋น๊ฒฐ์ ๋ก ์ ์ธ๊ณ์์ ์๋ฆ๋ต๋คโ
Ralph๋ ์ค์ํ๋ค. ๋ง์ด ํ๋ค. ํ์ง๋ง ๊ทธ๊ฒ ํต์ฌ์ด๋ค.
- ์ค์ โ ์์ โ ํ์ต โ ๊ฐ์
- ์ด ๊ณผ์ ์ด ์๋์ผ๋ก ๋ฐ๋ณต๋จ
- ๊ฒฐ๊ตญ Eventual Consistency (์ต์ข ์ ์ผ๊ด์ฑ) ๋ฌ์ฑ
๋ง์น ๊ธฐํ ํ๋์ฒ๋ผ, Ralph๊ฐ ์๋ํ ๋๋ง๋ค ํ๋กฌํํธ๋ฅผ ์กฐ์จํ๋ค.
๐ ๏ธ ์ค์น ๋ฐ ์ค์
์ค๋น๋ฌผ
- Claude Code, Codex, ๋๋ tool call ์ ํ ์๋ AI CLI
- Bash ํ๊ฒฝ
- PROMPT.md ํ์ผ
Step 1: ํ๋ก์ ํธ ๊ตฌ์กฐ ๋ง๋ค๊ธฐ
my-project/
โโโ PROMPT.md # ํต์ฌ ์ง์๋ฌธ
โโโ AGENTS.md # ์์ด์ ํธ ํ๋ ๊ท์น
โโโ specs/ # ์๊ตฌ์ฌํญ ๋ช
์ธ
โ โโโ feature-1.md
โโโ src/ # ์์ค ์ฝ๋
Step 2: PROMPT.md ์์ฑ
## ๋น์ ์ ์๋ฌด
1. specs/ ํด๋์ ์๊ตฌ์ฌํญ์ ์ฝ์ด๋ผ
2. src/์ ๊ตฌํํ๋ผ
3. ํ
์คํธ๋ฅผ ์คํํ๋ผ
4. ์คํจํ๋ฉด ์์ ํ๋ผ
5. ๋ชจ๋ ํ
์คํธ๊ฐ ํต๊ณผํ ๋๊น์ง ๋ฐ๋ณตํ๋ผ
## ๊ท์น
- ํ ๋ฒ์ ํ๋์ ๊ธฐ๋ฅ๋ง ๊ตฌํ
- ์ปค๋ฐ ๋ฉ์์ง๋ ๋ช
ํํ๊ฒ
- ์๋ฌ๊ฐ ๋๋ฉด ์ค์ค๋ก ๋๋ฒ๊น
Step 3: ๋ฃจํ ์คํ
while :; do cat PROMPT.md | claude-code ; done๋๋ ๋ ์ ๊ตํ๊ฒ:
while :; do
cat PROMPT.md | claude-code
if [ $? -eq 0 ]; then
echo "โ
์๋ฃ!"
break
fi
sleep 5
done๐ฌ ์ค์ ์ฌ์ฉ ์์
์์ 1: ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๋ง๋ค๊ธฐ
Geoffrey Huntley๋ Ralph๋ก ์์ ํ ์๋ก์ด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ๋ง๋ค์๋ค.
๋ ๋๋ผ์ด ๊ฑด? ๊ทธ ์ธ์ด๋ LLM ํ๋ จ ๋ฐ์ดํฐ์ ์์๋ค. Ralph๊ฐ ์ธ์ด๋ฅผ ๋ง๋ค๊ณ , ๊ทธ ์ธ์ด๋ก ํ๋ก๊ทธ๋๋ฐ๊น์ง ํ๋ค.
์์ 2: Y Combinator ํด์ปคํค
YC ํด์ปคํค์์ ํ๋ค์ด Ralph ํจํด์ ํ ์คํธํ๋ค.
โ์ฐ๋ฆฌ๋ ์ฝ๋ฉ ์์ด์ ํธ๋ฅผ while ๋ฃจํ์ ๋ฃ์๊ณ , ๊ทธ๊ฒ์ด ํ๋ก๋ํธ๋ฅผ ๋ฐฐํฌํ๋ค.โ
์์ 3: ์ธ์ฃผ ๋์ฒด
ํ ์์ง๋์ด๊ฐ Ralph๋ฅผ ๋ฐฐ์ฐ๊ณ ๋ค์ ๊ณ์ฝ์ ์ ์ฉํ๋ค.
๊ฒฐ๊ณผ? ๋ฏธ์น ROI. ์ด์ ๊ทธ๊ฐ ์๊ฐํ๋ ๊ฑด ์ค์ง Ralph๋ฟ.
โ ๏ธ ์ฃผ์์ฌํญ
1. ๋ช ํํ ์๋ฃ ์กฐ๊ฑด์ด ํ์
Ralph๋ โํ ์คํธ ํต๊ณผโ ๊ฐ์ ๊ฒ์ฆ ๊ฐ๋ฅํ ๋ชฉํ๊ฐ ์์ ๋ ๋น๋๋ค.
โ โ์ข์ ์ฝ๋ ์์ฑํด์คโ โ ๋ฌดํ ๋ฃจํ โ โ๋ชจ๋ ํ ์คํธ๊ฐ ํต๊ณผํ ๋๊น์งโ โ ๋ช ํํ ์ข ๋ฃ ์กฐ๊ฑด
2. ๋น์ฉ ๊ด๋ฆฌ
๋ฌดํ ๋ฃจํ = ๋ฌดํ API ํธ์ถ = ๐ธ
- ์ต๋ ๋ฐ๋ณต ํ์ ์ค์
- ํ์์์ ์ถ๊ฐ
- ๋น์ฉ ๋ชจ๋ํฐ๋ง ํ์
3. ์ ํฉํ ์์ ์ ํ
Ralph์ ์ ํฉ:
- ํ ์คํธ ๊ธฐ๋ฐ ๊ฐ๋ฐ (TDD)
- ๋น๋/๋ฐฐํฌ ์๋ํ
- ์ฝ๋ ๋ง์ด๊ทธ๋ ์ด์
- ๋ฒ๊ทธ ์์
Ralph์ ๋ถ์ ํฉ:
- ์ฐฝ์์ ๋์์ธ ๊ฒฐ์
- ๋น์ฆ๋์ค ๋ก์ง ์ค๊ณ
- ์ฌ์ฉ์ ๊ฒฝํ ํ๋จ
๐ Two Modes: Planning vs Building
Ralph๋ ๋ ๊ฐ์ง ๋ชจ๋๋ก ์๋ํ๋ค:
| ๋ชจ๋ | ์ธ์ ์ฌ์ฉ | ๋ชฉ์ |
|---|---|---|
| PLANNING | ๊ณํ์ด ์๊ฑฐ๋ ์ค๋๋จ | IMPLEMENTATION_PLAN.md ์์ฑ |
| BUILDING | ๊ณํ์ด ์์ | ๊ณํ๋๋ก ๊ตฌํ + ์ปค๋ฐ |
PLANNING ๋ชจ๋:
- specs/์ src/ ๋น๊ต (Gap ๋ถ์)
- ์ฐ์ ์์๊ฐ ๋งค๊ฒจ์ง TODO ๋ฆฌ์คํธ ์์ฑ
- ๊ตฌํ ์์, ์ปค๋ฐ ์์
BUILDING ๋ชจ๋:
- ๊ณํ์์ ํ์คํฌ ์ ํ
- ๊ตฌํ โ ํ ์คํธ โ ์ปค๋ฐ
- ๊ณํ ์ ๋ฐ์ดํธ
โจ ํ์ค ์ ๋ฆฌ
โAI๋ฅผ while ๋ฃจํ์ ๋ฃ์ด๋ผ. ํ ์คํธ๊ฐ ํต๊ณผํ ๋๊น์ง ์์์ ๋๊ฒ ๋๋ฌ๋ผ. ๋ ์๋ฌ ๊ฐ๋ ๋๋ค.โ
๐ ์ฐธ๊ณ ์๋ฃ
- Geoffrey Huntley ์๋ฌธ
- GitHub: how-to-ralph-wiggum
- GitHub: ralph (์๋ํ ๋๊ตฌ)
- VentureBeat: Ralph Wiggum์ด AI๊ณ๋ฅผ ๋คํ๋ ์ด์
๐ ์๋ฆฌ์ฆ ๋ชฉ์ฐจ
- Day 1: Ralph Wiggum Pattern โ ํ์ฌ ๊ธ
- Day 2: Agent Skills
- Day 3: Orchestration Tools
- Day 4: Sub-agents
- Day 5: Beads & Gas Town
- Day 6: OpenClaw