Claude Agent SDKλ₯Ό μ¬μ©ν 무μ€λ¨ μμ¨ μ½λ© μμ΄μ νΈμ λλ€.
Rate limit μλ μ²λ¦¬, μΈμ μλ μ΄μ΄νκΈ°λ₯Ό ν΅ν΄ μ¬λμ κ°μ μμ΄ ν둬ννΈ κΈ°λ°μΌλ‘ νλ‘μ νΈλ₯Ό λκΉμ§ μμ±ν©λλ€.
μ΄ νλ‘μ νΈλ Claude Code CLIκ° νμν©λλ€.
claude --versionλ²μ μ΄ μΆλ ₯λλ©΄ μ€μΉλμ΄ μλ κ²μ λλ€. μ€μΉλμ΄ μμ§ μλ€λ©΄ Claude Code μ€μΉ κ°μ΄λλ₯Ό μ°Έκ³ νμΈμ.
claudeμ λͺ λ Ήμ΄ μ€ν ν μ μμ μΌλ‘ λνκ° μμλλ©΄ μΈμ¦μ΄ μλ£λ κ²μ λλ€. λ‘κ·ΈμΈμ΄ μ λμ΄ μλ€λ©΄ μλμΌλ‘ λ‘κ·ΈμΈ νλ‘μΈμ€κ° μμλ©λλ€.
# μ μ₯μ ν΄λ‘
git clone <repository-url>
cd autonomous-coding
# μμ‘΄μ± μ€μΉ
pip install -e .python src/cmd/autonomous_coding.py \
--project-dir ./generations/my_project \
--prompts-dir ./prompts| μ΅μ | μ€λͺ |
|---|---|
--project-dir |
νλ‘μ νΈκ° μμ±λ λλ ν 리 (νμ) |
--prompts-dir |
ν둬ννΈ ν νλ¦Ώμ΄ μλ λλ ν 리 (νμ) |
--max-iterations |
μ΅λ λ°λ³΅ νμ (κΈ°λ³Έκ°: 무μ ν) |
# λ°λ³΅ νμ μ ν
python src/cmd/autonomous_coding.py \
--project-dir ./generations/my_project \
--prompts-dir ./prompts \
--max-iterations 5μ΄ μΉμ μ΄ ν΅μ¬μ λλ€. μμ¨ μ½λ© μμ΄μ νΈλ 3κ°μ ν둬ννΈ νμΌμ κΈ°λ°μΌλ‘ λμν©λλ€.
prompts/
βββ app_spec.txt # 무μμ λ§λ€ κ²μΈκ°
βββ initializer_prompt.md # 첫 λ²μ§Έ μμ΄μ νΈμ νλ μ§μΉ¨
βββ coding_prompt.md # μ΄ν μμ΄μ νΈλ€μ νλ μ§μΉ¨
μν : λ§λ€κ³ μ νλ μ ν리μΌμ΄μ μ μμ ν μ€κ³ λ¬Έμ
ν¬ν¨ν΄μΌ ν λ΄μ©:
- νλ‘μ νΈ κ°μ λ° λͺ©ν
- κΈ°μ μ€ν (νλ‘ νΈμλ, λ°±μλ, DB λ±)
- ν΅μ¬ κΈ°λ₯ λͺ©λ‘ λ° μμΈ μ€λͺ
- λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§
- API μλν¬μΈνΈ μ μ
- UI/UX λ μ΄μμ λ° λμμΈ μμ€ν
- ꡬν λ¨κ³λ³ κ³ν
- μ±κ³΅ κΈ°μ€
컀μ€ν°λ§μ΄μ§ ν:
<project_specification>
<project_name>λμ νλ‘μ νΈ</project_name>
<overview>νλ‘μ νΈμ λν μμΈ μ€λͺ
...</overview>
<technology_stack>...</technology_stack>
<core_features>...</core_features>
<!-- λ μμΈν μλ‘ μμ΄μ νΈκ° μ ννκ² κ΅¬νν©λλ€ -->
</project_specification>μ΄ νμΌμ΄ μμΈν μλ‘ μμ΄μ νΈμ κ²°κ³Όλ¬Ό νμ§μ΄ λμμ§λλ€. λͺ¨νΈν μꡬμ¬νμ λͺ¨νΈν κ²°κ³Όλ₯Ό λ§λλλ€.
μν : νλ‘μ νΈμ 첫 λ²μ§Έ μμ΄μ νΈκ° μνν μμ μ μ
κΈ°λ³Έ λμ:
app_spec.txtμ½κ³ μ΄ν΄feature_list.jsonμμ± (200κ°μ ν μ€νΈ μΌμ΄μ€)init.shμμ± (νκ²½ μ€μ μ€ν¬λ¦½νΈ)- Git μ μ₯μ μ΄κΈ°ν
- νλ‘μ νΈ κΈ°λ³Έ ꡬ쑰 μμ±
컀μ€ν°λ§μ΄μ§ ν¬μΈνΈ:
- ν μ€νΈ μΌμ΄μ€ κ°μ μ‘°μ (κΈ°λ³Έ 200κ°)
- μ΄κΈ° μ€μ μ€ν¬λ¦½νΈ μꡬμ¬ν λ³κ²½
- νλ‘μ νΈ κ΅¬μ‘° 컀μ€ν°λ§μ΄μ§
μ£Όμ: μ΄ ν둬ννΈλ "ν λ²λ§" μ€νλ©λλ€. νλ‘μ νΈμ λΌλλ₯Ό μ‘λ μν μ΄λ―λ‘ μ μ€νκ² μμ±νμΈμ.
μν : μ΄κΈ°ν μ΄ν λ°λ³΅ μ€νλλ μμ΄μ νΈμ νλ μ§μΉ¨
κΈ°λ³Έ λμ (λ§€ μΈμ λ§λ€):
- νμ¬ μν νμ (νμΌ κ΅¬μ‘°, μ§ν μν© νμΈ)
- μλ² μ€ν (
init.sh) - κΈ°μ‘΄ κΈ°λ₯ κ²μ¦ ν μ€νΈ (νκ· λ°©μ§)
feature_list.jsonμμ λ―Έμλ£ κΈ°λ₯ μ ν- κΈ°λ₯ ꡬν λ° λΈλΌμ°μ ν μ€νΈ
- ν
μ€νΈ ν΅κ³Ό μ
passes: trueλ‘ μ λ°μ΄νΈ - Git μ»€λ° λ° μ§ν μν© κΈ°λ‘
ν΅μ¬ μμΉ:
- ν μΈμ μ νλμ κΈ°λ₯μ μ§μ€
- λΈλΌμ°μ μλνλ‘ μ€μ UI ν μ€νΈ νμ
feature_list.jsonμpassesνλλ§ μμ κ°λ₯ (κΈ°λ₯ μμ /μμ κΈμ§)- μΈμ μ’ λ£ μ λ°λμ clean state μ μ§
컀μ€ν°λ§μ΄μ§ ν¬μΈνΈ:
- ν μ€νΈ λ°©λ²λ‘ λ³κ²½ (puppeteer μΈ λ€λ₯Έ λꡬ)
- μ»€λ° λ©μμ§ νμ
- μ§ν μν© κΈ°λ‘ λ°©μ
- app_spec.txt μμ±: κ°μ₯ μ€μν©λλ€. μνλ μ±μ μ΅λν μμΈνκ² κΈ°μ νμΈμ.
- initializer_prompt.md: λλΆλΆ κ·Έλλ‘ μ¬μ© κ°λ₯. ν μ€νΈ μΌμ΄μ€ μλ§ μ‘°μ νμΈμ.
- coding_prompt.md: λλΆλΆ κ·Έλλ‘ μ¬μ© κ°λ₯. ν μ€νΈ λκ΅¬κ° λ€λ₯΄λ©΄ μμ νμΈμ.
# μ νλ‘μ νΈ μμ
mkdir -p prompts/my_app
cp prompts/initializer_prompt.md prompts/my_app/
cp prompts/coding_prompt.md prompts/my_app/
# app_spec.txtλ§ μλ‘ μμ±
vim prompts/my_app/app_spec.txt
# μ€ν
python src/cmd/autonomous_coding.py \
--project-dir ./generations/my_app \
--prompts-dir ./prompts/my_appCtrl+Cλ‘ μ€λ¨ν μ μμΌλ©°, λμΌν λͺ
λ Ήμ΄λ‘ λ€μ μ€ννλ©΄ μ΄μ΄μ μ§νλ©λλ€.