ํ•˜๋„ค์Šค ์—”์ง€๋‹ˆ์–ด๋ง์˜ ํ•ต์‹ฌ์€ โ€œ๋ชจ๋ธ์„ ๋” ๋˜‘๋˜‘ํ•˜๊ฒŒ ์“ฐ๋Š” ๋ฒ•โ€๋ณด๋‹ค ํŒ€์ด ํ”๋“ค๋ฆฌ์ง€ ์•Š๊ฒŒ ์šด์˜ ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฒ•์— ์žˆ์Šต๋‹ˆ๋‹ค. OpenAI๊ฐ€ ๊ณต๊ฐœํ•œ Codex ์šด์˜ ์‚ฌ๋ก€๋ฅผ ๋ณด๋ฉด, ์‚ฌ๋žŒ์ด ์ง์ ‘ ์ฝ”๋“œ๋ฅผ ๋œ ์“ฐ๋Š” ๋Œ€์‹  ์ €์žฅ์†Œ ๊ตฌ์กฐยท๊ฐ€๋“œ๋ ˆ์ผยทํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„์— ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ํˆฌ์žํ–ˆ์„ ๋•Œ ์†๋„์™€ ์•ˆ์ •์„ฑ์ด ํ•จ๊ป˜ ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค.

์‹ค๋ฌด์—์„œ๋Š” ์—ญํ•  ์ „ํ™˜, ์ €์žฅ์†Œ ์ง€์‹๊ตฌ์กฐ, ์ž๋™ ๊ฒŒ์ดํŠธ, ์ฃผ๊ฐ„ GC ๋ฃจํ”„์ฒ˜๋Ÿผ ๋ฐ”๋กœ ์šด์˜์— ๋ถ™์ผ ์ˆ˜ ์žˆ๋Š” ์ถ•๋ถ€ํ„ฐ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

์•ˆ๋‚ด: ์ด ๋ฌธ์„œ๋Š” ์ƒ์„ฑํ˜• AI๋ฅผ ํ™œ์šฉํ•ด ์ดˆ์•ˆ์„ ์ž‘์„ฑํ–ˆ๊ณ , ๊ณต๊ฐœ ๊ทผ๊ฑฐ ๋ฌธ์„œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‚ฌ๋žŒ์ด ๊ฒ€ํ† ยท๋ณด์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธ€์˜ ๊ทผ๊ฑฐ ์ž๋ฃŒ

ํ•ต์‹ฌ ์š”์•ฝ

  • ํ•˜๋„ค์Šค์˜ ๋ชฉ์ ์€ 1ํšŒ ์„ฑ๊ณต์ด ์•„๋‹ˆ๋ผ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ์„ฑ๊ณต๋ฅ ์„ ๋†’์ด๋Š” ๊ฒƒ์ด๋‹ค.
  • ์ €์žฅ์†Œ๋Š” ์ฝ”๋“œ ์ฐฝ๊ณ ๊ฐ€ ์•„๋‹ˆ๋ผ ์šด์˜ ์ง€์‹์˜ ์‹œ์Šคํ…œ ์˜ค๋ธŒ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.
  • ๊ทœ์น™์€ ๋ฌธ์žฅ์œผ๋กœ ๊ถŒ๊ณ ํ•˜์ง€ ๋ง๊ณ , ๋ฆฐํŠธ/ํ…Œ์ŠคํŠธ/๊ฒŒ์ดํŠธ๋กœ ๊ฐ•์ œํ•ด์•ผ ์˜ค๋ž˜ ๊ฐ„๋‹ค.
  • ์ž์œจ์„ฑ์„ ๋†’์ผ์ˆ˜๋ก โ€œ๊ธฐ๋Šฅโ€๋ณด๋‹ค โ€œ๊ด€์ธกยท๋ณต๊ตฌยทGCโ€๊ฐ€ ๋” ์ค‘์š”ํ•ด์ง„๋‹ค.
flowchart LR
    A["๋ชฉํ‘œยท๋ฒ”์œ„ ๊ณ ์ •"] --> B["๊ฐ€๋“œ๋ ˆ์ผ ์ •์˜\n(๊ธˆ์ง€/ํ—ˆ์šฉ/์Šน์ธ)"]
    B --> C["์—์ด์ „ํŠธ ์‹คํ–‰"]
    C --> D["๊ด€์ธก ๋กœ๊ทธ ์ˆ˜์ง‘"]
    D --> E["์ž๋™ ๊ฒŒ์ดํŠธ ํŒ์ •"]
    E --> F["ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜\n(ํ”„๋กฌํ”„ํŠธ/ํ…Œ์ŠคํŠธ)"]
    F --> A

์‹œ๊ฐํ™” (Excalidraw)

!

  • ์›๋ณธ ํŽธ์ง‘ ํŒŒ์ผ: Agent/Archive/OpenAI ๋น„์ฆˆ๋‹ˆ์Šค ํ™œ์šฉ/images/openai-biz-14-harness-loop.excalidraw

๐Ÿง  ์น ํŒ ์น˜ํŠธ์‹œํŠธ

  • ์‚ฌ๋žŒ์€ ๋ฐฉํ–ฅ์„ ์ •ํ•˜๊ณ , ํ•˜๋„ค์Šค๋Š” ๋ฐ˜๋ณต ํ’ˆ์งˆ์„ ์ง€ํ‚จ๋‹ค
  • AGENTS๋Š” ๋ฐฑ๊ณผ์‚ฌ์ „์ด ์•„๋‹ˆ๋ผ โ€œ๋ชฉ์ฐจโ€์—ฌ์•ผ ํ•œ๋‹ค
  • ๋กœ๊ทธ ์—†์ด ๋ณต๊ตฌ๋Š” ์—†๋‹ค, ๊ฒŒ์ดํŠธ ์—†์ด ์ผ๊ด€์„ฑ์€ ์—†๋‹ค
  • ์ฃผ๊ฐ„ GC๋Š” ๋Œ€์ฒญ์†Œ๊ฐ€ ์•„๋‹ˆ๋ผ โ€œ๋งค์ผ ์ž‘์€ ๋ถ€์ฑ„ ์ƒํ™˜โ€์ด๋‹ค

OpenAI ์‚ฌ๋ก€์—์„œ ๋ฐ˜๋“œ์‹œ ๊ฐ€์ ธ์™€์•ผ ํ•  6๊ฐ€์ง€

1) ์—”์ง€๋‹ˆ์–ด ์—ญํ•  ์ „ํ™˜: ์ฝ”๋“œ ์ž‘์„ฑ์ž โ†’ ํ™˜๊ฒฝ ์„ค๊ณ„์ž

OpenAI ์‚ฌ๋ก€์˜ ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€๋Š” ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค. ์†๋„์˜ ๋ณ‘๋ชฉ์€ ๋ชจ๋ธ ์„ฑ๋Šฅ๋ณด๋‹ค ํ™˜๊ฒฝ์˜ ๋ช…ํ™•์„ฑ์—์„œ ์ž์ฃผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์—์ด์ „ํŠธ๊ฐ€ ์‹คํŒจํ•  ๋•Œ ์‚ฌ๋žŒ์€ โ€œ๋” ์ข‹์€ ํ”„๋กฌํ”„ํŠธโ€๋ฅผ ๊ณ ๋ฏผํ•˜๊ธฐ๋ณด๋‹ค, ์–ด๋–ค ๋Šฅ๋ ฅ์ด ์ €์žฅ์†Œ์— ๋น ์กŒ๋Š”์ง€(๋„๊ตฌ/๋ฌธ์„œ/๊ฒ€์ฆ)๋ฅผ ๋จผ์ € ์ฑ„์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‹ค๋ฌด ์ ์šฉ:

  • ์ž‘์—… ์‹คํŒจ๋ฅผ โ€œ๊ฐœ์ธ ์‹ค์ˆ˜โ€๊ฐ€ ์•„๋‹ˆ๋ผ โ€œ์‹œ์Šคํ…œ ๋ˆ„๋ฝ ์‹ ํ˜ธโ€๋กœ ๋ถ„๋ฅ˜
  • ์‹คํŒจ ํ‹ฐ์ผ“๋งˆ๋‹ค ๋ˆ„๋ฝ ๋Šฅ๋ ฅ 1๊ฐœ๋ฅผ ๋ฌธ์„œ ๋˜๋Š” ๋„๊ตฌ๋กœ ํ™˜์›
  • ๊ฐ™์€ ์‹คํŒจ๊ฐ€ 2ํšŒ ๋ฐ˜๋ณต๋˜๋ฉด ์ž๋™ ๊ฒŒ์ดํŠธ ํ›„๋ณด๋กœ ์Šน๊ฒฉ

์ฐธ๊ณ : https://openai.com/index/harness-engineering/

2) AGENTS๋Š” ๋ชฉ์ฐจ, ์ €์žฅ์†Œ๊ฐ€ ์‹œ์Šคํ…œ ์˜ค๋ธŒ ๋ ˆ์ฝ”๋“œ

๊ธด AGENTS 1๊ฐœ์— ๋‹ค ๋„ฃ๋Š” ๋ฐฉ์‹์€ ๊ธˆ๋ฐฉ ๋‚ก์Šต๋‹ˆ๋‹ค. OpenAI ์‚ฌ๋ก€์ฒ˜๋Ÿผ AGENTS๋ฅผ ์งง์€ ๋ชฉ์ฐจ๋กœ ๋‘๊ณ , ์ƒ์„ธ ๊ธฐ์ค€์€ docs/๋กœ ๋ถ„๋ฆฌํ•˜๋ฉด ์—์ด์ „ํŠธ์™€ ์‚ฌ๋žŒ ๋ชจ๋‘ ํƒ์ƒ‰ ๋น„์šฉ์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

์‹ค๋ฌด ์ ์šฉ:

  • AGENTS.md: 80~120์ค„ ์ด๋‚ด(์›์น™/๋งํฌ/๊ธˆ์ง€/์Šน์ธ)
  • docs/ops/: runbook, error-codes, execution-plans ๋ถ„๋ฆฌ
  • ๋ฌธ์„œ ์‹ ์„ ๋„ ์ฒดํฌ๋ฅผ CI๋กœ ๊ฐ•์ œ

์ฐธ๊ณ : https://cookbook.openai.com/articles/codex_exec_plans

3) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž์ฒด๋ฅผ ์—์ด์ „ํŠธ๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค๊ธฐ

OpenAI ์‚ฌ๋ก€์—์„œ ์ธ์ƒ์ ์ธ ๋ถ€๋ถ„์€ UI/๋กœ๊ทธ/๋ฉ”ํŠธ๋ฆญ์„ ์—์ด์ „ํŠธ๊ฐ€ ์ง์ ‘ ๋‹ค๋ฃจ๊ฒŒ ๋งŒ๋“  ์ ์ž…๋‹ˆ๋‹ค. ์ฆ‰ โ€œ์ฝ”๋“œ๋งŒ ์ฝ๋Š” ์—์ด์ „ํŠธโ€๊ฐ€ ์•„๋‹ˆ๋ผ โ€œ์‹คํ–‰ ์ƒํƒœ๋ฅผ ๋ณด๋Š” ์—์ด์ „ํŠธโ€๋กœ ํ™•์žฅํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹ค๋ฌด ์ ์šฉ:

  • ์ž‘์—… ๋‹จ์œ„ ํ™˜๊ฒฝ(worktree/dev env) ๋ถ„๋ฆฌ
  • DOM ์Šค๋ƒ…์ƒท/์Šคํฌ๋ฆฐ์ƒท/๋กœ๊ทธ ์ฟผ๋ฆฌ ๊ฒฝ๋กœ๋ฅผ ํ‘œ์ค€ํ™”
  • PR ํ…œํ”Œ๋ฆฟ์— ์žฌํ˜„ ์ฆ๊ฑฐ(์Šคํฌ๋ฆฐ์ƒท/๋กœ๊ทธ) ์ฒจ๋ถ€ ๊ฐ•์ œ

์ฐธ๊ณ : https://openai.com/index/harness-engineering/

4) ์•„ํ‚คํ…์ฒ˜์™€ ์ทจํ–ฅ์€ โ€œ๋ถˆ๋ณ€์‹โ€์œผ๋กœ ๊ฐ•์ œ

๋ฌธ์„œ๋งŒ์œผ๋กœ ๊ตฌ์กฐ๋ฅผ ์ง€ํ‚ค๊ธด ์–ด๋ ต์Šต๋‹ˆ๋‹ค. OpenAI ์‚ฌ๋ก€์ฒ˜๋Ÿผ ๊ฒฝ๊ณ„/์˜์กด ๋ฐฉํ–ฅ/๋กœ๊น… ๊ทœ์น™์„ ๋ฆฐํŠธ์™€ ๊ตฌ์กฐ ํ…Œ์ŠคํŠธ๋กœ ์ž๋™ ํŒ์ •ํ•ด์•ผ, ์†๋„๊ฐ€ ์˜ฌ๋ผ๊ฐ€๋„ ๊ตฌ์กฐ๊ฐ€ ๋ฌด๋„ˆ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‹ค๋ฌด ์ ์šฉ:

  • ์˜์กด ๋ฐฉํ–ฅ ์œ„๋ฐ˜์€ CI ์ฆ‰์‹œ ์‹คํŒจ
  • ๊ฒฝ๊ณ„ ์ž…๋ ฅ ํŒŒ์‹ฑ(typed schema) ๊ฐ•์ œ
  • ํŒŒ์ผ ํฌ๊ธฐ/๋„ค์ด๋ฐ/๋กœ๊ทธ ํ˜•์‹ ๊ฐ™์€ ์ทจํ–ฅ ๊ทœ์น™๋„ ์ฝ”๋“œํ™”

์ฐธ๊ณ : https://platform.openai.com/docs/guides/prompt-engineering

5) ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๋ฐ”๋€Œ๋ฉด ๋ณ‘ํ•ฉ ์ฒ ํ•™๋„ ๋ฐ”๋€๋‹ค

์—์ด์ „ํŠธ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์‚ฌ๋žŒ ๋ฆฌ๋ทฐ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋„˜๊ธฐ๋ฉด, ์ „ํ†ต์ ์ธ โ€œ๋ฌด๊ฑฐ์šด ์„ ์ฐจ๋‹จโ€ ๋ฐฉ์‹์€ ๋ณ‘๋ชฉ์ด ๋ฉ๋‹ˆ๋‹ค. ํ•ต์‹ฌ์€ ๋ฌด์กฐ๊ฑด ๋А์Šจํ•˜๊ฒŒ ๊ฐ€๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ์งง์€ PR + ์ž๋™ ๋ณต๊ตฌ ๊ฐ€๋Šฅํ•œ ๊ฒŒ์ดํŠธ๋กœ ๋ฆฌ์Šคํฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹ค๋ฌด ์ ์šฉ:

  • PR ํฌ๊ธฐ ์ œํ•œ(์ž‘๊ฒŒ ์ชผ๊ฐœ๊ธฐ)
  • flaky ํ…Œ์ŠคํŠธ๋Š” ์žฅ๊ธฐ ๋ธ”๋กœํ‚น ๋Œ€์‹  ํ›„์† ๋ณต๊ตฌ ๋ฃจํ”„๋กœ ์ฒ˜๋ฆฌ
  • ์น˜๋ช… ๊ฒŒ์ดํŠธ์™€ ๊ถŒ์žฅ ๊ฒŒ์ดํŠธ๋ฅผ ๋ถ„๋ฆฌํ•ด ์šด์˜

์ฐธ๊ณ : https://docs.github.com/en/actions

6) ์—”ํŠธ๋กœํ”ผ๋Š” ์ฃผ๊ฐ„ GC๋กœ ๊ด€๋ฆฌ

OpenAI ์‚ฌ๋ก€์—์„œ โ€œ๊ธˆ์š”์ผ๋งˆ๋‹ค AI slop ์ •๋ฆฌโ€๊ฐ€ ํ™•์žฅ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๋ฐํžŒ ๋ถ€๋ถ„์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋ฒ•์€ ํšŒ๊ณ ๊ฐ€ ์•„๋‹ˆ๋ผ ์ง€์† GC ์ž๋™ํ™”์ž…๋‹ˆ๋‹ค.

์‹ค๋ฌด ์ ์šฉ:

  • golden principles 5๊ฐœ ๋‚ด์™ธ๋กœ ๋ช…์‹œ
  • ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ •๋ฆฌ ์—์ด์ „ํŠธ(์ค‘๋ณต/์ฃฝ์€ ์ฝ”๋“œ/๊ทœ์น™ ์œ„๋ฐ˜) ์šด์˜
  • ์ €์œ„ํ—˜ ๋ฆฌํŒฉํ† ๋ง์€ ์ž๋™๋จธ์ง€ ํ›„๋ณด๋กœ ๋ถ„๋ฆฌ

์ฐธ๊ณ : https://openai.com/index/harness-engineering/

๋ฐ”๋กœ ์“ฐ๋Š” ์ฝ”๋“œ 2์ข…

A) AGENTS๋ฅผ โ€œ๋ชฉ์ฐจโ€๋กœ ์œ ์ง€ํ•˜๋Š” ์ตœ์†Œ ํ…œํ”Œ๋ฆฟ

# AGENTS.md (์š”์•ฝ๋ณธ)
- ๋ชฉํ‘œ: ๋ฐ˜๋ณต์—…๋ฌด ์ž๋™ํ™” ์•ˆ์ • ์šด์˜
- ์šฐ์„ ์ˆœ์œ„: ์ •ํ™•์„ฑ > ์•ˆ์ •์„ฑ > ์†๋„
- ๊ธˆ์ง€: ์Šน์ธ ์—†๋Š” ์™ธ๋ถ€ ๋ฐœ์†ก / ์›๋ณธ ๋ฐ์ดํ„ฐ ์ง์ ‘ ๋ณ€ํ˜•
- ํ•„์ˆ˜ ๋กœ๊ทธ: error_code, failed_step, next_action, owner
- ์ƒ์„ธ ์šด์˜ ๊ธฐ์ค€: docs/ops/runbook.md
- ์žฅ์•  ์ฝ”๋“œ ์‚ฌ์ „: docs/ops/error-codes.md
- ์‹คํ–‰ ๊ณ„ํš: docs/ops/execution-plans/

B) Harness ๋กœ๊ทธ ์Šคํ‚ค๋งˆ ๊ฒ€์‚ฌ๊ธฐ

# scripts/harness_check.py
import json
import sys
from pathlib import Path
 
REQUIRED = {"error_code", "failed_step", "next_action", "owner"}
 
 
def main(path: str) -> int:
    p = Path(path)
    if not p.exists():
        print(f"[FAIL] log file not found: {path}")
        return 1
 
    missing_count = 0
    for i, line in enumerate(p.read_text(encoding="utf-8").splitlines(), start=1):
        if not line.strip():
            continue
        row = json.loads(line)
        missing = [k for k in REQUIRED if not row.get(k)]
        if missing:
            missing_count += 1
            print(f"[FAIL] line {i}: missing {missing}")
 
    if missing_count:
        print(f"[RESULT] failed rows: {missing_count}")
        return 1
 
    print("[PASS] harness log schema ok")
    return 0
 
 
if __name__ == "__main__":
    sys.exit(main(sys.argv[1]))

30๋ถ„ ๋„์ž… ๋ฃจํ‹ด (์˜ค๋Š˜ ๋ฐ”๋กœ ์ ์šฉ)

  1. 8๋ถ„: AGENTS๋ฅผ ๋ชฉ์ฐจํ˜•์œผ๋กœ ์ค„์ด๊ณ  ์ƒ์„ธ ๊ทœ์น™์„ docs๋กœ ๋ถ„๋ฆฌ
  2. 7๋ถ„: ๋กœ๊ทธ 4ํ•„๋“œ(error_code, failed_step, next_action, owner) ๊ณ ์ •
  3. 10๋ถ„: CI์— harness_check.py + ํ…Œ์ŠคํŠธ ์—ฐ๊ฒฐ
  4. 5๋ถ„: GC ํ 1๊ฑด ๋“ฑ๋ก(์ค‘๋ณต/๋ฏธ์‚ฌ์šฉ/๊ทœ์น™์œ„๋ฐ˜ ์ค‘ ํƒ1)

์™„๋ฃŒ ๊ธฐ์ค€:

  • ์žฅ์•  ์žฌํ˜„ ์‹œ๊ฐ„ ๋‹จ์ถ•
  • ๋™์ผ ์›์ธ ์žฅ์•  ์žฌ๋ฐœ ๊ฐ์†Œ
  • PR ํŽธ์ฐจ(ํ’ˆ์งˆ/ํ˜•์‹) ๊ฐ์†Œ

๋ฏธ๋‹ˆ ์‚ฌ๋ก€ 2๊ฐœ

์‚ฌ๋ก€ A) ์†๋„๋Š” ๋น ๋ฅธ๋ฐ QA๊ฐ€ ๋ณ‘๋ชฉ์ธ ํŒ€

์ดˆ๊ธฐ์—” PR์ด ๋น ๋ฅด๊ฒŒ ๋Š˜์—ˆ์ง€๋งŒ ์‚ฌ๋žŒ QA๊ฐ€ ๋”ฐ๋ผ๊ฐ€์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ดํ›„ ๋กœ๊ทธ/๊ฒŒ์ดํŠธ/์ฆ๊ฑฐ ์ฒจ๋ถ€๋ฅผ ํ‘œ์ค€ํ™”ํ•˜์ž, QA๊ฐ€ โ€œํƒ์ •โ€์ด ์•„๋‹ˆ๋ผ โ€œํŒ์ •์žโ€ ์—ญํ• ๋กœ ๋ฐ”๋€Œ์–ด ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์•ˆ์ •ํ™”๋์Šต๋‹ˆ๋‹ค.

์‚ฌ๋ก€ B) ๋ฌธ์„œ๋Š” ๋งŽ์€๋ฐ ์‹คํ–‰์ด ํ”๋“ค๋ฆฌ๋Š” ํŒ€

AGENTS ์žฅ๋ฌธ ๋ฌธ์„œ๋ฅผ ์Œ“์•„๋„ ์‹ค์ œ ํ–‰๋™์€ ์ผ๊ด€๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. AGENTS๋ฅผ ๋ชฉ์ฐจํ˜•์œผ๋กœ ์ค„์ด๊ณ  docs๋ฅผ ๋ฆฐํŠธ๋กœ ๊ด€๋ฆฌํ•˜์ž, ๋ฌธ์„œ ์ตœ์‹ ์„ฑ์ด ์œ ์ง€๋˜๊ณ  ์—์ด์ „ํŠธ์˜ ์žฌํ˜„์„ฑ์ด ์˜ฌ๋ผ๊ฐ”์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์ฝ๊ธฐ