ํฌ์ŠคํŠธ

๐ŸŽญ DOT Studio & Dance of Tal (DOT)

๐ŸŽญ DOT Studio & Dance of Tal (DOT)

โ€œ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ๊ฐ€ ์ด์ œ ํƒˆ์ถค์„ ์ถฅ๋‹ˆ๋‹คโ€
์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜(Orchestration)์„ ๋„˜์–ด, ์ฝ”๋ ˆ์˜ค๊ทธ๋ž˜ํ”ผ(Choreography)๋กœ โ€” AI ์—์ด์ „ํŠธ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €์˜ ๋“ฑ์žฅ


๋ชฉ์ฐจ

  1. ๊ฐœ์š”: ๋ฌด์—‡์ด ๋ฌธ์ œ์ธ๊ฐ€?
  2. ์ฒ ํ•™์  ๋ฐฐ๊ฒฝ: ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์—์„œ ํƒˆ์ถค์œผ๋กœ
  3. Dance of Tal (DOT) โ€” ํ•ต์‹ฌ ๊ฐœ๋… ์ฒด๊ณ„
  4. DOT์˜ ๋‹ค์„ฏ ๊ฐ€์ง€ ์ž์‚ฐ ์ปดํฌ๋„ŒํŠธ
  5. DOT Studio โ€” ํ”ผ๊ทธ๋งˆ ์Šคํƒ€์ผ์˜ AI ์—์ด์ „ํŠธ ํŽธ์ง‘๊ธฐ
  6. ์•„ํ‚คํ…์ฒ˜ ์‹ฌ์ธต ๋ถ„์„
  7. ๊ธฐ์ˆ  ์Šคํƒ ๋ฐ ๋Ÿฐํƒ€์ž„ ๊ฒฝ๊ณ„
  8. ์‹ค์ œ ์‚ฌ์šฉ ํ๋ฆ„: ์„ค์น˜๋ถ€ํ„ฐ ์‹คํ–‰๊นŒ์ง€
  9. ๊ธฐ์กด ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ๋„๊ตฌ๋“ค๊ณผ์˜ ๋น„๊ต
  10. ํ”„๋กœ์ ํŠธ ํ˜„ํ™ฉ ๋ฐ ์˜๋ฏธ
  11. ์ข…ํ•ฉ ํ‰๊ฐ€ ๋ฐ ์‹œ์‚ฌ์ 

1. ๊ฐœ์š”: ๋ฌด์—‡์ด ๋ฌธ์ œ์ธ๊ฐ€?

AI ์—์ด์ „ํŠธ ๊ธฐ์ˆ ์ด ๋น ๋ฅด๊ฒŒ ์„ฑ์ˆ™ํ•ด๊ฐ€๊ณ  ์žˆ๋Š” 2026๋…„ ํ˜„์žฌ, ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ๋ฐฉ์‹์—๋Š” ๊ทผ๋ณธ์ ์ธ ๊ตฌ์กฐ์  ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ํŒจํ„ด์€ ํ•˜๋‚˜์˜ โ€œ๋ฉ”์ธ ์—์ด์ „ํŠธ(Main Agent)โ€๊ฐ€ ์—ฌ๋Ÿฌ โ€œ์„œ๋ธŒ ์—์ด์ „ํŠธ(Subagent)โ€๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ด ๋ฐฉ์‹์€ ์ฒ˜์Œ์—๋Š” ์—ญํ•  ๋ถ„๋ฆฌ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, ์‹œ๊ฐ„์ด ์ง€๋‚ ์ˆ˜๋ก ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋“ค์„ ๋…ธ์ถœ์‹œํ‚จ๋‹ค.

1.1 ๊ธฐ์กด ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ๊ตฌ์กฐ์˜ ๋ฌธ์ œ

graph TD
    MA["๐Ÿง  Main Agent\n(์ง€ํœ˜์ž)"]
    SA1["๐Ÿค– Sub Agent 1\n์ฝ”๋”ฉ ๋‹ด๋‹น"]
    SA2["๐Ÿค– Sub Agent 2\n๊ฒ€์ƒ‰ ๋‹ด๋‹น"]
    SA3["๐Ÿค– Sub Agent 3\nํ…Œ์ŠคํŠธ ๋‹ด๋‹น"]
    SA4["๐Ÿค– Sub Agent 4\n๋ฆฌ๋ทฐ ๋‹ด๋‹น"]

    MA -->|"ํ˜ธ์ถœ / ๋ช…๋ น"| SA1
    MA -->|"ํ˜ธ์ถœ / ๋ช…๋ น"| SA2
    MA -->|"ํ˜ธ์ถœ / ๋ช…๋ น"| SA3
    MA -->|"ํ˜ธ์ถœ / ๋ช…๋ น"| SA4

    style MA fill:#ff6b6b,color:#fff
    style SA1 fill:#adb5bd,color:#fff
    style SA2 fill:#adb5bd,color:#fff
    style SA3 fill:#adb5bd,color:#fff
    style SA4 fill:#adb5bd,color:#fff

์ด ๊ตฌ์กฐ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

์ข…์†์„ฑ์˜ ์‹ฌํ™”. ์„œ๋ธŒ ์—์ด์ „ํŠธ๋Š” ์ด๋ฆ„๋งŒ ์—์ด์ „ํŠธ์ผ ๋ฟ, ์‚ฌ์‹ค์ƒ ๋ฉ”์ธ ์—์ด์ „ํŠธ์˜ ๋‚ด๋ถ€ ๊ธฐ๋Šฅ(ํ•จ์ˆ˜)์ฒ˜๋Ÿผ ๊ตณ์–ด๋ฒ„๋ฆฐ๋‹ค. ๋…๋ฆฝ์ ์ธ ํŒ๋‹จ์„ ํ•˜๋Š” ์ฃผ์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ, ์ƒ์œ„ ์—์ด์ „ํŠธ์˜ ์ง€์‹œ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ถ€์†ํ’ˆ์œผ๋กœ ์ „๋ฝํ•œ๋‹ค.

์žฌ์‚ฌ์šฉ ๋ถˆ๊ฐ€. ํŠน์ • ๋งฅ๋ฝ์—์„œ ํŠน์ • ๋ฉ”์ธ ์—์ด์ „ํŠธ๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋œ ์„œ๋ธŒ ์—์ด์ „ํŠธ๋Š” ๋‹ค๋ฅธ ์›Œํฌํ”Œ๋กœ์šฐ์—์„œ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ๋งค์šฐ ์–ด๋ ต๋‹ค. ์ฝ”๋“œ ์•ˆ์— ํ•˜๋“œ์ฝ”๋”ฉ๋œ ๊ด€๊ณ„์™€ ์„ค์ • ๋•Œ๋ฌธ์—, ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•˜๋Š” ์—์ด์ „ํŠธ๋ฅผ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•˜๋ ค๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‚˜ ๋‹ค๋ฆ„์—†๋‹ค.

์„ค์ •์˜ ๋ถˆํˆฌ๋ช…์„ฑ. ๊ฐ ์—์ด์ „ํŠธ๊ฐ€ ์–ด๋–ค MCP(Model Context Protocol) ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€, ์–ด๋–ค ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š”์ง€, ์–ด๋–ค ๋ชจ๋ธ๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€๊ฐ€ ์ฝ”๋“œ๋‚˜ ์„ค์ • ํŒŒ์ผ ๊นŠ์ˆ™์ด ์ˆจ์–ด๋ฒ„๋ฆฐ๋‹ค. ์‹ค์ œ๋กœ ์‹œ์Šคํ…œ์ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ•œ๋ˆˆ์— ํŒŒ์•…ํ•˜๊ธฐ๊ฐ€ ์ ์  ์–ด๋ ค์›Œ์ง„๋‹ค.

ํ™•์žฅ์„ฑ์˜ ๋ถ•๊ดด. ์—์ด์ „ํŠธ๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ํ˜‘์—… ๊ตฌ์กฐ๊ฐ€ ํ’๋ถ€ํ•ด์ง€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ƒ์œ„ ์—์ด์ „ํŠธ ์•„๋ž˜์— ๊ธฐ๋Šฅ๋“ค์ด ๊ณ„์† ๋งค๋‹ฌ๋ฆฌ๋Š” ๋‹จ์ˆœํ•œ ํŠธ๋ฆฌ(tree) ๊ตฌ์กฐ๋กœ ๊ณ ์ฐฉ๋œ๋‹ค. ์ด๊ฒƒ์€ ์ง„์ •ํ•œ โ€œ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ํ˜‘์—…โ€์ด๋ผ๊ธฐ๋ณด๋‹ค, ๋ณต์žกํ•œ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์Šคํƒ์— ๊ฐ€๊น๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•œ๊ตญ ์ „ํ†ต ๊ณต์—ฐ ์˜ˆ์ˆ ์˜ ๊ฐœ๋…์„ ๋นŒ๋ ค ์žฌ์ •์˜ํ•˜๋ ค๋Š” ์‹œ๋„๊ฐ€ ๋ฐ”๋กœ Dance of Tal(DOT) ์ด๊ณ , ๊ทธ ์œ„์— ๋งŒ๋“ค์–ด์ง„ ์‹œ๊ฐ์  ํŽธ์ง‘ ํ™˜๊ฒฝ์ด DOT Studio์ด๋‹ค.


2. ์ฒ ํ•™์  ๋ฐฐ๊ฒฝ: ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์—์„œ ํƒˆ์ถค์œผ๋กœ

ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์— ๋‹ด๊ธด ํ•ต์‹ฌ ์€์œ ๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ด ํ”„๋กœ์ ํŠธ ์ „์ฒด๋ฅผ ํŒŒ์•…ํ•˜๋Š” ์—ด์‡ ๋‹ค.

2.1 ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜(Orchestration) ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ํ•œ๊ณ„

์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์€ ์ง€ํœ˜์ž(conductor)๊ฐ€ ๋ชจ๋“  ์—ฐ์ฃผ์ž์˜ ํ–‰๋™์„ ์ง€์‹œํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์˜ค์ผ€์ŠคํŠธ๋ผ์—์„œ ๋ฐ”์ด์˜ฌ๋ฆฐ ์ฃผ์ž๋Š” ์ง€ํœ˜์ž์˜ ์‹ ํ˜ธ ์—†์ด๋Š” ๋ฐ•์ž๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๋Š”๋‹ค. AI ์—์ด์ „ํŠธ ์‹œ์Šคํ…œ์—์„œ ์ด๊ฒƒ์€ โ€œ๋ฉ”์ธ ์—์ด์ „ํŠธ๊ฐ€ ์„œ๋ธŒ ์—์ด์ „ํŠธ์—๊ฒŒ ๋ช…๋ น์„ ๋‚ด๋ฆฌ๋Š”โ€ ๊ตฌ์กฐ๋กœ ๋‚˜ํƒ€๋‚œ๋‹ค.

2.2 ์ฝ”๋ ˆ์˜ค๊ทธ๋ž˜ํ”ผ(Choreography)์™€ ํƒˆ์ถค์˜ ์€์œ 

๋ฐ˜๋ฉด ํƒˆ์ถค(Talchum)์€ ๋‹ค๋ฅด๋‹ค. ํƒˆ์ถค์—์„œ ๊ฐ ๋ฌด์šฉ์ˆ˜๋Š” ์ž์‹ ๋งŒ์˜ ํƒˆ(๊ฐ€๋ฉด, ์ •์ฒด์„ฑ)์„ ์“ฐ๊ณ , ์ž์‹ ๋งŒ์˜ ์ถค์‚ฌ์œ„(๊ธฐ์ˆ )๋ฅผ ์ง€๋‹Œ ์ฑ„, ๋‹ค๋ฅธ ๋ฌด์šฉ์ˆ˜๋“ค๊ณผ ๊ด€๊ณ„๋ฅผ ๋งบ์œผ๋ฉฐ ๊ณต์—ฐ์„ ๋งŒ๋“ค์–ด๊ฐ„๋‹ค. ์ง€ํœ˜์ž๊ฐ€ ์—†์–ด๋„ ๊ณต์—ฐ์€ ์ง„ํ–‰๋œ๋‹ค. ๊ฐ์ž๊ฐ€ ๋…๋ฆฝ์ ์ธ ์กด์žฌ์ด๋ฉด์„œ๋„, ์„œ๋กœ์˜ ์›€์ง์ž„์— ๋ฐ˜์‘ํ•˜๋ฉฐ ์ „์ฒด์ ์ธ ๋งฅ๋ฝ์„ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค.

graph LR
    subgraph "๐ŸŽญ ํƒˆ์ถค ๋ชจ๋ธ (Choreography)"
        P1["๐ŸŽญ ๋ฌด์šฉ์ˆ˜ A\nํƒˆ + ์ถค + ๋„๊ตฌ"]
        P2["๐ŸŽญ ๋ฌด์šฉ์ˆ˜ B\nํƒˆ + ์ถค + ๋„๊ตฌ"]
        P3["๐ŸŽญ ๋ฌด์šฉ์ˆ˜ C\nํƒˆ + ์ถค + ๋„๊ตฌ"]
        P1 <-->|"๊ด€๊ณ„ / ํ˜‘์—…"| P2
        P2 <-->|"๊ด€๊ณ„ / ํ˜‘์—…"| P3
        P1 <-->|"๊ด€๊ณ„ / ํ˜‘์—…"| P3
    end

    subgraph "๐ŸŽผ ์˜ค์ผ€์ŠคํŠธ๋ผ ๋ชจ๋ธ (Orchestration)"
        C["๐ŸŽผ ์ง€ํœ˜์ž\n๋ฉ”์ธ ์—์ด์ „ํŠธ"]
        M1["๐ŸŽป ์—ฐ์ฃผ์ž A"]
        M2["๐ŸŽป ์—ฐ์ฃผ์ž B"]
        M3["๐ŸŽป ์—ฐ์ฃผ์ž C"]
        C -->|"๋ช…๋ น"| M1
        C -->|"๋ช…๋ น"| M2
        C -->|"๋ช…๋ น"| M3
    end

DOT์˜ ์ œ์ž‘์ž monarchjuno๋Š” ์ด ์€์œ ๋ฅผ ํ†ตํ•ด ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ์‹œ์Šคํ…œ์˜ ์ƒˆ๋กœ์šด ๊ฐ€๋Šฅ์„ฑ์„ ์ œ์‹œํ•œ๋‹ค. ๊ฐ ์—์ด์ „ํŠธ๊ฐ€ ๋…๋ฆฝ์ ์ธ ์ •์ฒด์„ฑ, ๋Šฅ๋ ฅ, ์„ค์ •์„ ๊ฐ–์ถ˜ โ€œํผํฌ๋จธ(Performer)โ€๋กœ ์กด์žฌํ•˜๊ณ , ์ด๋“ค์ด ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ํ๋ฆ„์„ ๋งŒ๋“ค์–ด๊ฐ€๋Š” ๋ฐฉ์‹์ด ๋” ๊ฑด๊ฐ•ํ•œ ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ์•„ํ‚คํ…์ฒ˜๋ผ๋Š” ๊ฒƒ์ด๋‹ค.


3. Dance of Tal (DOT) โ€” ํ•ต์‹ฌ ๊ฐœ๋… ์ฒด๊ณ„

DOT๋Š” ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ๋„ค ๊ฐ€์ง€ ํ•ต์‹ฌ ๋‹จ์œ„๋ฅผ ์ •์˜ํ•œ๋‹ค. ์ด ๋„ค ๊ฐ€์ง€๋Š” ํƒˆ์ถค์˜ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ์ง์ ‘ ์ด๋ฆ„์„ ๋”ฐ์™”๋‹ค.

graph TB
    subgraph "DOT ๊ฐœ๋… ์ฒด๊ณ„"
        TAL["๐ŸŽญ Tal (ํƒˆ)\n์—์ด์ „ํŠธ์˜ ์ •์ฒด์„ฑ๊ณผ ์„ฑ๊ฒฉ\n'๋ˆ„๊ตฌ์ธ๊ฐ€'"]
        DANCE["๐Ÿ’ƒ Dance (์ถค)\n์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋Šฅ๋ ฅ๊ณผ ์Šคํ‚ฌ\n'๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€'"]
        PERFORMER["๐ŸŽช Performer (ํผํฌ๋จธ)\nTal + Dance + Model + MCP\n'์–ด๋–ป๊ฒŒ ์‹คํ–‰๋˜๋Š”๊ฐ€'"]
        ACT["๐ŸŽฌ Act (๊ณต์—ฐ)\n์—ฌ๋Ÿฌ ํผํฌ๋จธ์˜ ํ˜‘์—… ํ๋ฆ„\n'ํ•จ๊ป˜ ์–ด๋–ป๊ฒŒ ์›€์ง์ด๋Š”๊ฐ€'"]
        STAGE["๐ŸŸ๏ธ Stage (๋ฌด๋Œ€)\n์ „์ฒด ์ž‘์—… ํ™˜๊ฒฝ\n'์–ด๋–ค ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰๋˜๋Š”๊ฐ€'"]

        TAL --> PERFORMER
        DANCE --> PERFORMER
        PERFORMER --> ACT
        ACT --> STAGE
    end

3.1 Tal (ํƒˆ) โ€” ์ •์ฒด์„ฑ ๋ ˆ์ด์–ด

Tal์€ ์—์ด์ „ํŠธ์˜ ์˜๊ตฌ์ ์ธ ์ •์ฒด์„ฑ์„ ์ •์˜ํ•œ๋‹ค. โ€œํ•ญ์ƒ ์ผœ์ ธ ์žˆ๋Š” ๋ช…๋ น ๋ ˆ์ด์–ด(always-on instruction layer)โ€๋กœ์„œ, ์—์ด์ „ํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜๊ณ , ์–ด๋–ค ์›์น™์„ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ํ–‰๋™ํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๊ทœ์ •ํ•œ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋งฅ๋ฝ์—์„œ๋ผ๋ฉด โ€œ์—„๊ฒฉํ•œ ํƒ€์ž… ์•ˆ์ „์„ฑ์„ ์šฐ์„ ์‹œํ•˜๋Š” ์‹œ๋‹ˆ์–ด TypeScript ๊ฐœ๋ฐœ์žโ€์ฒ˜๋Ÿผ ํ‘œํ˜„๋  ์ˆ˜ ์žˆ๋‹ค.

Tal์€ tal/@author/name ํ˜•์‹์˜ URN(Uniform Resource Name)์œผ๋กœ ์‹๋ณ„๋˜๋ฉฐ, ๊ธ€๋กœ๋ฒŒ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ๊ฒŒ์‹œํ•˜๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์€ npm ํŒจํ‚ค์ง€์ฒ˜๋Ÿผ ๋ฒ„์ „ ๊ด€๋ฆฌ๋˜๊ณ  ๊ณต์œ ๋˜๋Š” AI ์ •์ฒด์„ฑ ๋ชจ๋“ˆ์ด๋‹ค.

3.2 Dance (์ถค) โ€” ์Šคํ‚ฌ ์ปจํ…์ŠคํŠธ ๋ ˆ์ด์–ด

Dance๋Š” ์—์ด์ „ํŠธ๊ฐ€ ํŠน์ • ์ƒํ™ฉ์—์„œ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์„ ํƒ์  ์Šคํ‚ฌ ๋˜๋Š” ๋Šฅ๋ ฅ ์ปจํ…์ŠคํŠธ๋‹ค. ํ•„์š”ํ•  ๋•Œ๋งŒ ๋กœ๋“œ๋˜๋Š”(loaded on demand) ๋ชจ๋“ˆ์‹ ์—ญ๋Ÿ‰ ๋ ˆ์ด์–ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด โ€œ์—„๊ฒฉํ•œ TDD(ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ) ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ผโ€๊ฑฐ๋‚˜ โ€œํŠน์ • JSON ์Šคํ‚ค๋งˆ๋ฅผ ๋”ฐ๋ฅด๋Š” ๊ตฌ์กฐ์  ์ถœ๋ ฅ์„ ๊ฐ•์ œํ•˜๋ผโ€๋Š” ์‹์˜ ํฌ๋งท ์ œ์•ฝ์ด๋‚˜ ์›Œํฌํ”Œ๋กœ์šฐ ๊ทœ์น™์„ ๋‹ด๋Š”๋‹ค.

Dance ์—ญ์‹œ dance/@author/name ํ˜•์‹์˜ URN์œผ๋กœ ๊ด€๋ฆฌ๋˜๋ฉฐ, ์„œ๋กœ ๋‹ค๋ฅธ Tal๊ณผ ์กฐํ•ฉํ•ด ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•œ ๋ฒˆ ์ž˜ ๋งŒ๋“ค์–ด์ง„ โ€œํ”„๋ก ํŠธ์—”๋“œ ์ ‘๊ทผ์„ฑ ๊ฒ€์‚ฌโ€ Dance๋Š” ์–ด๋–ค Tal๊ณผ๋„ ๊ฒฐํ•ฉํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

3.3 Performer (ํผํฌ๋จธ) โ€” ์‹คํ–‰ ๋‹จ์œ„

Performer๋Š” Tal, Dance, ์„ ํƒ๋œ AI ๋ชจ๋ธ, ์—์ด์ „ํŠธ ์‹คํ–‰ ๋ชจ๋“œ, ๊ทธ๋ฆฌ๊ณ  MCP ์„œ๋ฒ„ ๋ฐ”์ธ๋”ฉ์ด ๋ชจ๋‘ ๊ฒฐํ•ฉ๋œ ์‹ค์ œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์—์ด์ „ํŠธ ๋‹จ์œ„๋‹ค. ์ด๊ฒƒ์ด DOT ์‹œ์Šคํ…œ์—์„œ ์‹ค์งˆ์ ์œผ๋กœ โ€œ์—์ด์ „ํŠธโ€๋ผ๊ณ  ๋ถ€๋ฅผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

Performer๋Š” DOT Studio์˜ ์บ”๋ฒ„์Šค ์œ„์—์„œ ๋…๋ฆฝ์ ์ธ ๊ฐ์ฒด๋กœ ์กด์žฌํ•˜๋ฉฐ, ์‹œ๊ฐ์ ์œผ๋กœ ๊ตฌ์„ฑํ•˜๊ณ  ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ค‘์š”ํ•œ ๊ฒƒ์€ Performer๊ฐ€ ํŠน์ • ์›Œํฌํ”Œ๋กœ์šฐ(Act)์— ์ข…์†๋˜์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์—ฌ๋Ÿฌ Act์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค.

3.4 Act (๊ณต์—ฐ) โ€” ํ˜‘์—… ํ๋ฆ„ ๊ทธ๋ž˜ํ”„

Act๋Š” ์—ฌ๋Ÿฌ Performer๊ฐ€ ์ฐธ์—ฌํ•˜๋Š” ์‹คํ—˜์ ์ธ ์ง€ํ–ฅ์„ฑ ์›Œํฌํ”Œ๋กœ์šฐ ๊ทธ๋ž˜ํ”„(directed workflow graph)๋‹ค. ๋‹จ์ˆœํ•œ ์„ ํ˜• ์‹คํ–‰ ์ˆœ์„œ๊ฐ€ ์•„๋‹ˆ๋ผ, ์›Œ์ปค(worker) ๋…ธ๋“œ, ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ(orchestrator) ๋…ธ๋“œ, ๋ณ‘๋ ฌ(parallel) ๋…ธ๋“œ ๋“ฑ ๋‹ค์–‘ํ•œ ์‹คํ–‰ ํŒจํ„ด์„ ์กฐํ•ฉํ•˜์—ฌ ๋ณต์žกํ•œ ๋‹ค๋‹จ๊ณ„ AI ํ˜‘์—… ํ๋ฆ„์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

Act๋Š” DAG(Directed Acyclic Graph, ๋ฐฉํ–ฅ์„ฑ ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„) ๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ, ์ด์ „ ๋‹จ๊ณ„์˜ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋ฅผ ์„ ํƒํ•˜๋Š” ์กฐ๊ฑด๋ถ€ ๋ถ„๊ธฐ(conditional branching)๋„ ์ง€์›ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด โ€œ๊ธด๊ธ‰ ํ•ซํ”ฝ์Šค ์ƒํ™ฉ์—์„œ๋Š” ํ…Œ์ŠคํŠธ ์ž‘์„ฑ ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋›ด๋‹คโ€๋Š” ์‹์˜ ๋™์  ์›Œํฌํ”Œ๋กœ์šฐ ๋ณ€ํ˜•์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

3.5 Stage (๋ฌด๋Œ€) โ€” ํ”Œ๋žซํผ ๋ฐ”์ธ๋”ฉ

Stage๋Š” ์กฐ๋ฆฝ๋œ ์ปจํ…์ŠคํŠธ ํŽ˜์ด๋กœ๋“œ๋ฅผ ํŠน์ • ๋ฒค๋”๋‚˜ ํ”Œ๋žซํผ(Cursor, Windsurf, Claude API, Codex ๋“ฑ)์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์†Œ๋น„ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ๋ ˆ์ด์–ด๋‹ค. DOT Studio ๋ฌธ๋งฅ์—์„œ Stage๋Š” ํŠน์ • ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•ด ์ €์žฅ๋œ ์ŠคํŠœ๋””์˜ค ์ž‘์—… ๊ณต๊ฐ„(workspace) ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•˜๊ธฐ๋„ ํ•œ๋‹ค.


4. DOT์˜ ๋‹ค์„ฏ ๊ฐ€์ง€ ์ž์‚ฐ ์ปดํฌ๋„ŒํŠธ

Dance of Tal V2 ์•„ํ‚คํ…์ฒ˜๋Š” AI ์ปจํ…์ŠคํŠธ๋ฅผ ๋‹ค์„ฏ ๊ฐ€์ง€ ์—„๊ฒฉํ•˜๊ฒŒ ํƒ€์ž…์ด ์ง€์ •๋œ(strictly typed) URN ๊ธฐ๋ฐ˜ ์ž์‚ฐ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ถ„ํ•ดํ•œ๋‹ค.

classDiagram
    class Tal {
        +URN: tal/@author/name
        +์—ญํ• : AI ์ง€์„ฑ ํŽ˜๋ฅด์†Œ๋‚˜
        +๋‚ด์šฉ: ๋ถ„์„์  ์‚ฌ๊ณ ๋ฐฉ์‹, ์˜์‚ฌ๊ฒฐ์ • ํ”„๋ ˆ์ž„์›Œํฌ
        +์˜ˆ์‹œ: "๋ฉ”๋ชจ๋ฆฌ ๋ฐ€๋„๋ฅผ ์šฐ์„ ์‹œํ•˜๋Š” Rust ์‹œ์Šคํ…œ ์•„ํ‚คํ…ํŠธ"
    }

    class Dance {
        +URN: dance/@author/name
        +์—ญํ• : ํฌ๋งท ์ œ์•ฝ ๋ ˆ์ด์–ด
        +๋‚ด์šฉ: ๊ตฌ์กฐ์  ์ถœ๋ ฅ ํ–‰๋™ ๊ฐ•์ œ
        +์˜ˆ์‹œ: "ํ…Œ์ŠคํŠธ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๋Š” ์—„๊ฒฉํ•œ TDD"
    }

    class Act {
        +URN: act/@author/name
        +์—ญํ• : ๋™์  ์›Œํฌํ”Œ๋กœ์šฐ ์—”์ง„
        +๋‚ด์šฉ: DAG ๊ธฐ๋ฐ˜ ์กฐ๊ฑด๋ถ€ ์‹คํ–‰
        +์˜ˆ์‹œ: "๊ธด๊ธ‰ ํ•ซํ”ฝ์Šค ์‹œ ํ…Œ์ŠคํŠธ ์šฐํšŒ"
    }

    class Stage {
        +URN: stage/@author/name
        +์—ญํ• : ํ”Œ๋žซํผ ๋ฐ”์ธ๋”ฉ ๋ ˆ์ด์–ด
        +๋‚ด์šฉ: ๋ฒค๋”๋ณ„ ํŽ˜์ด๋กœ๋“œ ๋ณ€ํ™˜
        +์˜ˆ์‹œ: "Cursor ์ „์šฉ ์„ค์ •"
    }

    class Combo {
        +URN: combo/@author/name
        +์—ญํ• : ์ž ๊ธˆ ํŒŒ์ผ (Lockfile)
        +๋‚ด์šฉ: Tal + Dance ๋ฒ„์ „ ๋งคํ•‘
        +์œ ์‚ฌ์ฒด: package-lock.json
    }

    Tal --> Combo : ๋ฐ”์ธ๋”ฉ
    Dance --> Combo : ๋ฐ”์ธ๋”ฉ
    Combo --> Stage : ์ ์šฉ
    Act --> Stage : ์‹คํ–‰

์ด ๊ตฌ์กฐ์—์„œ ๊ฐ€์žฅ ํฅ๋ฏธ๋กœ์šด ๊ฒƒ์€ Combo์˜ ๊ฐœ๋…์ด๋‹ค. Combo๋Š” ํŠน์ • ๋ฒ„์ „์˜ Tal๊ณผ Dance๋ฅผ ํ•˜๋‚˜์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปจํ…์ŠคํŠธ ํ”„๋กœํŒŒ์ผ์— ์ •์ ์œผ๋กœ ๋ฐ”์ธ๋”ฉํ•˜๋ฉฐ, ์ด๋Š” JavaScript ์ƒํƒœ๊ณ„์˜ package-lock.json๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•˜๋‹ค. ํŠน์ • ๋ฒ„์ „์˜ ์˜์กด์„ฑ์„ ๊ณ ์ •ํ•จ์œผ๋กœ์จ AI ์ปจํ…์ŠคํŠธ์˜ ์žฌํ˜„ ๊ฐ€๋Šฅ์„ฑ(reproducibility)์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค.


5. DOT Studio โ€” ํ”ผ๊ทธ๋งˆ ์Šคํƒ€์ผ์˜ AI ์—์ด์ „ํŠธ ํŽธ์ง‘๊ธฐ

DOT Studio๋Š” DOT์˜ ๊ฐœ๋… ์ฒด๊ณ„๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ฐ˜ ์บ”๋ฒ„์Šค ํŽธ์ง‘๊ธฐ์ด์ž ๋Ÿฐํƒ€์ž„์ด๋‹ค. ๊ณต์‹ ์„ค๋ช…์— ๋”ฐ๋ฅด๋ฉด โ€œAI ์—์ด์ „ํŠธ ๊ตฌ์„ฑ์„ ์œ„ํ•œ ์‹œ๊ฐ์  ์ž‘์—… ๊ณต๊ฐ„(visual workspace for composing and orchestrating AI agents)โ€์ด๋‹ค.

5.1 ํ•ต์‹ฌ ํŠน์ง•: ๋‹จ์ˆœํ•œ โ€œ์˜ˆ์œ UIโ€๊ฐ€ ์•„๋‹ˆ๋‹ค

DOT Studio๋ฅผ ๋‹จ์ˆœํžˆ ์—์ด์ „ํŠธ๋ฅผ ์˜ˆ์˜๊ฒŒ ๊ทธ๋ ค์ฃผ๋Š” ์‹œ๊ฐํ™” ๋„๊ตฌ๋กœ ์˜คํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋„๊ตฌ์˜ ๋ณธ์งˆ์€ ๋‹ค๋ฅด๋‹ค. DOT Studio๋Š” ์—์ด์ „ํŠธ ํ–‰๋™์„ ๊ตฌ์กฐํ™”๋œ ์ž‘์—… ๊ณต๊ฐ„ ์ƒํƒœ(structured workspace state) ๋กœ ๋‹ค๋ฃจ๋ฉฐ, ๋ชจ๋“  ์„ค์ •์ด ์ˆจ๊ฒจ์ง„ ํ”„๋กฌํ”„ํŠธ๋‚˜ ๋ถˆํˆฌ๋ช…ํ•œ ์„ค์ • ํŒŒ์ผ ์•ˆ์— ๋งค๋ชฐ๋˜์ง€ ์•Š๊ณ  ๊ฐ€์‹œ์ ์ด๊ณ (visible), ํŽธ์ง‘ ๊ฐ€๋Šฅํ•˜๋ฉฐ(editable), ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ(reusable) ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค.

5.2 ์ฃผ์š” ๊ธฐ๋Šฅ

ํผํฌ๋จธ ์ปดํฌ์ €(Performer Composer). ์บ”๋ฒ„์Šค ์œ„์—์„œ Tal(์ •์ฒด์„ฑ ๋ ˆ์ด์–ด)๊ณผ Dance(์Šคํ‚ฌ ์ปจํ…์ŠคํŠธ) ์ž์‚ฐ์„ ์—ฐ๊ฒฐํ•˜๊ณ , AI ๋ชจ๋ธ์„ ์„ ํƒํ•˜๊ณ , MCP ์„œ๋ฒ„๋ฅผ ํ• ๋‹นํ•˜๋ฉฐ, ์ปดํŒŒ์ผ๋œ ํ”„๋กฌํ”„ํŠธ ๋ด‰ํˆฌ(prompt envelope)๋ฅผ ๋ฏธ๋ฆฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์ด ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

Act ์—๋””ํ„ฐ(Act Editor, ์‹คํ—˜์  ๊ธฐ๋Šฅ). ์›Œ์ปค(worker), ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ(orchestrator), ๋ณ‘๋ ฌ(parallel) ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋œ ๋ฉ€ํ‹ฐ ๋…ธ๋“œ AI ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๊ทธ๋ž˜ํ”„ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ง„์ž…์ (entry point)์„ ์„ค์ •ํ•˜๊ณ , ํ๋ฆ„ ์—ฃ์ง€(flow edge)์™€ ๋ธŒ๋žœ์น˜ ์—ฃ์ง€(branch edge)๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ณต์žกํ•œ ์กฐ๊ฑด๋ถ€ ์‹คํ–‰ ํ๋ฆ„์„ ์ง๊ด€์ ์œผ๋กœ ๋งŒ๋“ ๋‹ค.

Act ์Šค๋ ˆ๋“œ ๋Ÿฌ๋„ˆ(Act Thread Runner, ์‹คํ—˜์  ๊ธฐ๋Šฅ). ๊ตฌ์„ฑํ•œ Act๋ฅผ ์‹ค์ œ๋กœ ์‹คํ–‰ํ•˜๊ณ , ๊ฒฐ๊ณผ๊ฐ€ ๋…ธ๋“œ ๋‹จ์œ„๋กœ ์‹ค์‹œ๊ฐ„ ํŽผ์ณ์ง€๋Š” ๊ฒƒ์„ ๊ด€์ฐฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋ณต์ ์ธ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์œ„ํ•ด ๋…ธ๋“œ ์„ธ์…˜์„ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ ๋‚ด์—์„œ ์‚ด์•„์žˆ๋Š” ์ƒํƒœ(alive)๋กœ ์œ ์ง€ํ•œ๋‹ค.

์ดˆ์•ˆ ๋ฐ ๊ฒŒ์‹œ(Draft & Publish). ์บ”๋ฒ„์Šค์—์„œ Tal๊ณผ Dance ์ดˆ์•ˆ์„ ๋งŒ๋“ค๊ณ , ๋กœ์ปฌ์— ์ €์žฅํ•œ ํ›„, DOT ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ํ†ตํ•ด ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ชจ๋“  ์ž‘์—…์ด Studio๋ฅผ ๋– ๋‚˜์ง€ ์•Š๊ณ  ์ด๋ฃจ์–ด์ง„๋‹ค.

5.3 Studio Assistant

DOT Studio์—๋Š” ๋ฐ˜๋ณต์ ์ธ ์ž‘์—…์„ ์ž๋™ํ™”ํ•˜๋Š” ๋‚ด์žฅ ์–ด์‹œ์Šคํ„ดํŠธ์ธ Studio Assistant๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. ์ง์ ‘ ์บ”๋ฒ„์Šค๋ฅผ ํŽธ์ง‘ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๋ฐ˜๋ณต์ ์ด๊ณ  ํŒจํ„ดํ™”๋œ ์ž‘์—…์€ Studio Assistant์—๊ฒŒ ์œ„์ž„ํ•  ์ˆ˜ ์žˆ๋‹ค.

5.4 ์‹คํ–‰ ์•„ํ‚คํ…์ฒ˜

graph LR
    subgraph "DOT Studio ๋Ÿฐํƒ€์ž„ ๊ฒฝ๊ณ„"
        STUDIO["๐ŸŽจ DOT Studio\n(React 19 + React Flow)\n์บ”๋ฒ„์Šค, UX, ์ƒํƒœ๊ด€๋ฆฌ\nํ”„๋กฌํ”„ํŠธ ์กฐํ•ฉ"]
        DOT_PKG["๐Ÿ“ฆ dance-of-tal ํŒจํ‚ค์ง€\n์ž์‚ฐ ํฌ๋งท\n๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์‹œ๋งจํ‹ฑ์Šค"]
        OPENCODE["โšก OpenCode\n๋ชจ๋ธ ์‹คํ–‰ ์—”์ง„\n์„ธ์…˜ ๊ด€๋ฆฌ\nํˆด ์‹คํ–‰"]
        REGISTRY["๐ŸŒ DOT Registry\n(Cloudflare Workers)\n๊ธ€๋กœ๋ฒŒ ์ž์‚ฐ ์ €์žฅ์†Œ"]
    end

    STUDIO -->|"stage ์ƒํƒœ, UX, ํ”„๋กฌํ”„ํŠธ ์กฐํ•ฉ"| DOT_PKG
    STUDIO -->|"๋ชจ๋ธ ์‹คํ–‰, ์„ธ์…˜, ํˆด"| OPENCODE
    DOT_PKG -->|"์ž์‚ฐ ํฌ๋งท, ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์‹œ๋งจํ‹ฑ์Šค"| REGISTRY

    style STUDIO fill:#6c63ff,color:#fff
    style DOT_PKG fill:#ff6b6b,color:#fff
    style OPENCODE fill:#ffd93d,color:#333
    style REGISTRY fill:#6bcb77,color:#fff

์ด ์•„ํ‚คํ…์ฒ˜์—์„œ ํ•ต์‹ฌ์€ ์—ญํ•  ๋ถ„๋ฆฌ๋‹ค. DOT Studio๋Š” ์ž‘์—… ๊ณต๊ฐ„ ๋ ˆ์ด์–ด(workspace layer)๋กœ์„œ UX์™€ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๋ฐ˜๋ฉด, ์‹ค์ œ AI ๋ชจ๋ธ ์‹คํ–‰์˜ ๊ถŒํ•œ์€ OpenCode๊ฐ€ ๊ฐ€์ง„๋‹ค. Studio๋Š” OpenCode๋ฅผ ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜๋ ค ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๊ฒƒ์€ ๋„๊ตฌ์˜ ์ฑ…์ž„ ๋ฒ”์œ„๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๋Š” ์ข‹์€ ์•„ํ‚คํ…์ฒ˜ ๊ฒฐ์ •์ด๋‹ค.

5.5 OpenCode์™€์˜ ํ†ตํ•ฉ

OpenCode๋Š” ํ„ฐ๋ฏธ๋„์—์„œ ์‹คํ–‰๋˜๋Š” AI ์ฝ”๋”ฉ ์—์ด์ „ํŠธ ๋Ÿฐํƒ€์ž„์œผ๋กœ, DOT Studio๋Š” ์ด ์œ„์—์„œ ๋™์ž‘ํ•˜๋Š” ์—์ด์ „ํŠธ ๊ตฌ์„ฑ ๋ ˆ์ด์–ด๋‹ค. OpenCode๊ฐ€ http://localhost:4096์—์„œ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ, Studio์˜ Hono(๊ฒฝ๋Ÿ‰ Node.js ์›น ํ”„๋ ˆ์ž„์›Œํฌ) ๋ฐฑ์—”๋“œ๊ฐ€ http://localhost:3001์—์„œ, Vite ๊ฐœ๋ฐœ ์„œ๋ฒ„(ํด๋ผ์ด์–ธํŠธ)๊ฐ€ http://localhost:5173์—์„œ ๋™์ž‘ํ•œ๋‹ค.


6. ์•„ํ‚คํ…์ฒ˜ ์‹ฌ์ธต ๋ถ„์„

6.1 ๋ ˆํฌ์ง€ํ† ๋ฆฌ ๊ตฌ์กฐ

1
2
3
4
5
6
dot-studio/
โ”œโ”€โ”€ src/           # React ์•ฑ, ์บ”๋ฒ„์Šค ์ปดํฌ๋„ŒํŠธ, ์ƒํƒœ ์Šฌ๋ผ์ด์Šค (Zustand)
โ”œโ”€โ”€ server/        # Hono ๋ผ์šฐํŠธ, OpenCode ํ†ตํ•ฉ, Act ๋Ÿฐํƒ€์ž„
โ”œโ”€โ”€ shared/        # ํฌ๋กœ์Šค ๋Ÿฐํƒ€์ž„ ํ—ฌํผ, ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์œ ํ‹ธ๋ฆฌํ‹ฐ
โ”œโ”€โ”€ client/        # ๋นŒ๋“œ๋œ ๋ธŒ๋ผ์šฐ์ € ์ž์‚ฐ (์ƒ์„ฑ๋จ)
โ””โ”€โ”€ cli.ts         # CLI ์ง„์ž…์  (npx dot-studio ๋ช…๋ น์–ด)

6.2 ์ƒํƒœ ๊ด€๋ฆฌ์™€ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜

stateDiagram-v2
    [*] --> Idle: Studio ์‹œ์ž‘
    Idle --> Composing: ํผํฌ๋จธ ๊ตฌ์„ฑ
    Composing --> Drafting: ์ดˆ์•ˆ ์ž‘์„ฑ
    Drafting --> Publishing: ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๊ฒŒ์‹œ
    Drafting --> Testing: Act ์‹คํ–‰
    Testing --> Running: Thread Runner ํ™œ์„ฑํ™”
    Running --> NodeExecution: ๋…ธ๋“œ๋ณ„ ์‹คํ–‰
    NodeExecution --> NodeExecution: ๋‹ค์Œ ๋…ธ๋“œ
    NodeExecution --> Completed: ๋ชจ๋“  ๋…ธ๋“œ ์™„๋ฃŒ
    Completed --> Idle: ๊ฒฐ๊ณผ ํ™•์ธ ํ›„
    Publishing --> Idle: ๊ฒŒ์‹œ ์™„๋ฃŒ

DOT Studio๋Š” XState๋ฅผ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์—”์ง„์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. XState๋Š” ์œ ํ•œ ์ƒํƒœ ๊ธฐ๊ณ„(Finite State Machine) ๋ฐ ์ƒํƒœ ์ฐจํŠธ(Statecharts) ๊ตฌํ˜„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ๋ณต์žกํ•œ UI ์ƒํƒœ์™€ ๋น„๋™๊ธฐ ํ๋ฆ„์„ ์•ˆ์ „ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•˜๋‹ค. ์—์ด์ „ํŠธ ์‹คํ–‰ ํ๋ฆ„์˜ ์ƒํƒœ ์ „์ด๋ฅผ ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ์„ ์–ธ์  ์ƒํƒœ ๊ธฐ๊ณ„๋กœ ํ‘œํ˜„ํ•จ์œผ๋กœ์จ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ๊ณผ ๋””๋ฒ„๊น… ์šฉ์ด์„ฑ์„ ํ™•๋ณดํ•œ๋‹ค.

6.3 URN ๊ธฐ๋ฐ˜ ์ž์‚ฐ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

DOT์˜ ์ž์‚ฐ์€ ๋ชจ๋‘ category/@author/name ํ˜•์‹์˜ URN์œผ๋กœ ์‹๋ณ„๋œ๋‹ค:

1
2
3
4
5
tal/@monarchjuno/system-architect
dance/@react-core/strict-tdd
act/@myteam/emergency-hotfix-workflow
stage/@myteam/cursor-setup
combo/@myteam/backend-v1

์ด ๋ช…๋ช… ์ฒด๊ณ„๋Š” npm์˜ ์Šค์ฝ”ํ”„๋“œ ํŒจํ‚ค์ง€(@author/package-name) ๊ฐœ๋…๊ณผ ๋™์ผํ•˜๋‹ค. ์ €์ž ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ GitHub ๊ณ„์ •๊ณผ ์—ฐ๋™๋˜์–ด ๋ณดํ˜ธ๋˜๋ฏ€๋กœ, ๋ˆ„๊ฐ€ ๋งŒ๋“  ์ž์‚ฐ์ธ์ง€ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„๋œ๋‹ค.

6.4 ์˜์กด์„ฑ ์ฃผ์ž…(DI) ํŒจ๋Ÿฌ๋‹ค์ž„์˜ AI ์ ์šฉ

DOT์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์•„์ด๋””์–ด ์ค‘ ํ•˜๋‚˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™์˜ ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection) ์›์น™์„ AI ์ปจํ…์ŠคํŠธ ๊ด€๋ฆฌ์— ์ ์šฉํ–ˆ๋‹ค๋Š” ์ ์ด๋‹ค.

๊ธฐ์กด ๋ฐฉ์‹์€ ์ˆ˜์ฒœ ์ค„์งœ๋ฆฌ AGENTS.md ํŒŒ์ผ์„ ์ฝ”๋“œ๋ฒ ์ด์Šค์— ํ†ต์งธ๋กœ ๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ์ด ๋ฐฉ์‹์˜ ๋ฌธ์ œ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๋ฐ”๋€Œ๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ํŒจ๋Ÿฌ๋‹ค์ž„์ด ๋“ฑ์žฅํ–ˆ์„ ๋•Œ, AI์˜ ์ถ”๋ก ์„ ๊นจ๋œจ๋ฆฐ ๊ฒƒ์ด ์–ด๋А ๋ ˆ์ด์–ด์ธ์ง€ ๋””๋ฒ„๊น…ํ•˜๋Š” ๊ฒƒ์ด ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•ด์ง„๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

DOT๋Š” AI์˜ ์ง€์„ฑ(Tal), ํฌ๋งท ์ œ์•ฝ(Dance), ์‹คํ–‰ ์›Œํฌํ”Œ๋กœ์šฐ(Act) ๋ฅผ ์„œ๋กœ ๋ถ„๋ฆฌ๋œ ๋ฒ„์ „ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ ๋งˆ์ดํฌ๋กœ ์ปจํ…์ŠคํŠธ๋กœ ๋ถ„ํ•ดํ•จ์œผ๋กœ์จ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.


7. ๊ธฐ์ˆ  ์Šคํƒ ๋ฐ ๋Ÿฐํƒ€์ž„ ๊ฒฝ๊ณ„

7.1 DOT Studio ๊ธฐ์ˆ  ์Šคํƒ

๋ ˆ์ด์–ด๊ธฐ์ˆ ์—ญํ• 
ํ”„๋ก ํŠธ์—”๋“œReact 19, Zustand, React Flow, Vite์บ”๋ฒ„์Šค UI, ์ƒํƒœ ๊ด€๋ฆฌ, ๋…ธ๋“œ ๊ทธ๋ž˜ํ”„ ๋ Œ๋”๋ง
๋ฐฑ์—”๋“œHono, tsx๊ฒฝ๋Ÿ‰ API ์„œ๋ฒ„, TypeScript ์ง์ ‘ ์‹คํ–‰
์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜XState์ƒํƒœ ๊ธฐ๊ณ„ ๊ธฐ๋ฐ˜ ์›Œํฌํ”Œ๋กœ์šฐ ๊ด€๋ฆฌ
AI ๋Ÿฐํƒ€์ž„OpenCode SDK์‹ค์ œ ๋ชจ๋ธ ์‹คํ–‰, ์„ธ์…˜, ํˆด ํ˜ธ์ถœ
์ž์‚ฐ ์‹œ์Šคํ…œdance-of-tal ํŒจํ‚ค์ง€Tal/Dance/Act ์ž์‚ฐ ํฌ๋งท ๋ฐ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ

7.2 dance-of-tal CLI ๊ธฐ์ˆ  ์Šคํƒ

๋ ˆ์ด์–ด๊ธฐ์ˆ ์—ญํ• 
๋Ÿฐํƒ€์ž„Node.js โ‰ฅ 20.19.0 (๊ถŒ์žฅ 22.22.1)์‹คํ–‰ ํ™˜๊ฒฝ
์–ธ์–ดTypeScript 98.7%ํƒ€์ž… ์•ˆ์ „์„ฑ
๋ ˆ์ง€์ŠคํŠธ๋ฆฌCloudflare Workers๊ธ€๋กœ๋ฒŒ ์—ฃ์ง€ ๋ฐฐํฌ
MCP ํ†ตํ•ฉMCP ์„œ๋ฒ„ ํ”„๋กœํ† ์ฝœIDE/์—์ด์ „ํŠธ ์—ฐ๋™

7.3 ์ง€์› ํ”Œ๋žซํผ ๋ฐ ํ†ตํ•ฉ

DOT๋Š” ๋‹ค์Œ ํ”Œ๋žซํผ๋“ค๊ณผ์˜ ํ†ตํ•ฉ์„ ์ง€์›ํ•œ๋‹ค:

  • Cursor โ€” AI ์ฝ”๋“œ ์—๋””ํ„ฐ
  • Windsurf โ€” AI ์ฝ”๋“œ ์—๋””ํ„ฐ (Codeium)
  • Claude Desktop โ€” Anthropic Claude ๋ฐ์Šคํฌํ†ฑ ํด๋ผ์ด์–ธํŠธ
  • OpenAI API โ€” OpenAI ๋ชจ๋ธ ์ง์ ‘ ์—ฐ๋™
  • Codex โ€” OpenAI Codex
  • Antigravity โ€” AI ์—์ด์ „ํŠธ ํ”Œ๋žซํผ

8. ์‹ค์ œ ์‚ฌ์šฉ ํ๋ฆ„: ์„ค์น˜๋ถ€ํ„ฐ ์‹คํ–‰๊นŒ์ง€

8.1 ์›๋ผ์ด๋„ˆ ์„ค์น˜

1
2
3
4
5
# macOS / Linux
curl -fsSL https://danceoftal.com/install.sh | sh

# npm ์ „์—ญ ์„ค์น˜
npm install -g dance-of-tal@latest dot-studio@latest

8.2 DOT CLI๋ฅผ ํ†ตํ•œ ์—์ด์ „ํŠธ ์ปจํ…์ŠคํŠธ ๊ด€๋ฆฌ

sequenceDiagram
    participant Dev as ๊ฐœ๋ฐœ์ž
    participant CLI as dot CLI
    participant Registry as DOT Registry
    participant MCP as MCP Server
    participant IDE as IDE (Cursor ๋“ฑ)

    Dev->>CLI: dot init
    CLI-->>Dev: .dance-of-tal/ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ

    Dev->>CLI: dot login (GitHub ์ธ์ฆ)
    CLI-->>Dev: @username ๋„ค์ž„์ŠคํŽ˜์ด์Šค ํ™œ์„ฑํ™”

    Dev->>CLI: dot install tal/@monarchjuno/system-architect
    CLI->>Registry: URN์œผ๋กœ ์ž์‚ฐ ์กฐํšŒ
    Registry-->>CLI: Tal ์ž์‚ฐ ๋‹ค์šด๋กœ๋“œ
    CLI-->>Dev: .dance-of-tal/registry/์— ์ €์žฅ

    Dev->>CLI: dot install dance/@react-core/strict-tdd
    CLI->>Registry: URN์œผ๋กœ ์ž์‚ฐ ์กฐํšŒ
    Registry-->>CLI: Dance ์ž์‚ฐ ๋‹ค์šด๋กœ๋“œ

    Dev->>CLI: dot lock --tal system-architect --dance strict-tdd --name my_app
    CLI-->>Dev: Combo ์ƒ์„ฑ (๋ฒ„์ „ ์ž ๊ธˆ)

    Dev->>CLI: dot compile
    CLI-->>Dev: ๊ตฌ์กฐ์  ํ˜ธํ™˜์„ฑ ๊ฒ€์ฆ

    Dev->>CLI: dot run my_app
    CLI->>MCP: ์ปจํ…์ŠคํŠธ ํŽ˜์ด๋กœ๋“œ ์ฃผ์ž…
    MCP->>IDE: ์ž๋™ ์ปจํ…์ŠคํŠธ ๋งˆ์šดํŠธ

8.3 DOT Studio๋ฅผ ํ†ตํ•œ ์‹œ๊ฐ์  ์—์ด์ „ํŠธ ๊ตฌ์„ฑ

1
2
3
4
5
6
# ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ Studio ์‹คํ–‰
cd my-project
npx dot-studio .

# ๋˜๋Š” ํฌํŠธ ์ง€์ •
dot-studio --port 3005 .

Studio๊ฐ€ ์‹คํ–‰๋˜๋ฉด ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ์„œ๋น„์Šค๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋œ๋‹ค:

์„œ๋น„์ŠคURL์—ญํ• 
Vite ํด๋ผ์ด์–ธํŠธhttp://localhost:5173React ์บ”๋ฒ„์Šค UI
Hono API ์„œ๋ฒ„http://localhost:3001๋ฐฑ์—”๋“œ API
OpenCode ๋Ÿฐํƒ€์ž„http://localhost:4096AI ๋ชจ๋ธ ์‹คํ–‰ ์—”์ง„

8.4 GitHub์—์„œ ์ง์ ‘ Dance ์Šคํ‚ฌ ์ถ”๊ฐ€

1
2
3
# GitHub ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ Dance ์Šคํ‚ฌ ์ง์ ‘ ์ถ”๊ฐ€
dot add acme/agent-skills
# โœ“ Added 3 Dance skill(s) from acme/agent-skills

์ด ๊ธฐ๋Šฅ์€ npm์—์„œ github:user/repo ํ˜•์‹์œผ๋กœ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•˜๋‹ค. ์ค‘์•™ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  GitHub์˜ ๋ชจ๋“  ๊ณต๊ฐœ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ Dance ์Šคํ‚ฌ ์†Œ์Šค๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด, ์ƒํƒœ๊ณ„ ํ™•์žฅ์ด ๋งค์šฐ ์œ ์—ฐํ•˜๋‹ค.


9. ๊ธฐ์กด ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ๋„๊ตฌ๋“ค๊ณผ์˜ ๋น„๊ต

9.1 ํฌ์ง€์…”๋‹ ๋น„๊ต

quadrantChart
    title ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ๋„๊ตฌ ํฌ์ง€์…”๋‹
    x-axis "์ฝ”๋“œ ์ค‘์‹ฌ --> ์‹œ๊ฐํ™” ์ค‘์‹ฌ"
    y-axis "์ผํšŒ์„ฑ ์‚ฌ์šฉ --> ์žฌ์‚ฌ์šฉ/ํŒจํ‚ค์ง•"
    quadrant-1 "์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์‹œ๊ฐ์  ๋„๊ตฌ"
    quadrant-2 "์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ๋„๊ตฌ"
    quadrant-3 "์ฝ”๋“œ ๊ธฐ๋ฐ˜ ์ผํšŒ์„ฑ ๋„๊ตฌ"
    quadrant-4 "์‹œ๊ฐ์  ์ผํšŒ์„ฑ ๋„๊ตฌ"
    DOT Studio: [0.85, 0.90]
    LangGraph: [0.25, 0.60]
    AutoGen: [0.20, 0.45]
    CrewAI: [0.30, 0.53]
    n8n AI: [0.80, 0.40]
    Flowise: [0.75, 0.35]

9.2 ์ฃผ์š” ์ฐจ๋ณ„์ 

๋น„๊ต ํ•ญ๋ชฉ๊ธฐ์กด ๋ฐฉ์‹ (LangGraph, AutoGen ๋“ฑ)DOT / DOT Studio
์—์ด์ „ํŠธ ์ •์˜์ฝ”๋“œ๋กœ ์ง์ ‘ ์ •์˜URN ๊ธฐ๋ฐ˜ ์ž์‚ฐ ํŒจํ‚ค์ง•
์žฌ์‚ฌ์šฉ์„ฑ์ฝ”๋“œ ๋ณต์‚ฌ ๋˜๋Š” ํด๋ž˜์Šค ์ƒ์†๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ dot install
๋ฒ„์ „ ๊ด€๋ฆฌGit ์ปค๋ฐ‹Combo ์ž ๊ธˆํŒŒ์ผ (npm-style)
์‹œ๊ฐํ™”๋ณ„๋„ ๋„๊ตฌ ํ•„์š”Studio ์บ”๋ฒ„์Šค ๋‚ด์žฅ
MCP ํ†ตํ•ฉ๋ณ„๋„ ์„ค์ •Studio์—์„œ ๋ช…์‹œ์  ํ• ๋‹น
์‹คํ–‰ ๊ฐ€์‹œ์„ฑ๋กœ๊ทธ ๊ธฐ๋ฐ˜๋…ธ๋“œ๋ณ„ ์‹ค์‹œ๊ฐ„ ์‹คํ–‰ ๋ทฐ
๋ฐฐํฌ ๋‹จ์œ„์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ฐœ๋ณ„ Tal, Dance, Act

9.3 Addy Osmani์˜ agent-skills์™€์˜ ๊ด€๊ณ„

ํฅ๋ฏธ๋กญ๊ฒŒ๋„, DOT๋Š” Addy Osmani(Google Chrome ํŒ€ ์—”์ง€๋‹ˆ์–ด๋ง ๋””๋ ‰ํ„ฐ)๊ฐ€ ๊ณต๊ฐœํ•œ agent-skills ๋ ˆํฌ์ง€ํ† ๋ฆฌ์™€ ํ˜ธํ™˜๋˜๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ๋‹ค. dot add acme/agent-skills ๋ช…๋ น์ฒ˜๋Ÿผ GitHub ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ง์ ‘ Dance ์Šคํ‚ฌ ์†Œ์Šค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ, ์™ธ๋ถ€ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์—์ด์ „ํŠธ ์Šคํ‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ DOT ์ƒํƒœ๊ณ„๋กœ ํก์ˆ˜ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.


10. ํ”„๋กœ์ ํŠธ ํ˜„ํ™ฉ ๋ฐ ์˜๋ฏธ

10.1 ํ˜„์žฌ ์ƒํƒœ (2026๋…„ 4์›” ๊ธฐ์ค€)

  • DOT Studio: GitHub Stars 23๊ฐœ, Fork 3๊ฐœ โ€” ๋งค์šฐ ์ดˆ๊ธฐ ๋‹จ๊ณ„์ง€๋งŒ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๊ด€์‹ฌ์„ ๋ฐ›๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ์ค‘
  • dance-of-tal ๋ฉ”์ธ ๋ ˆํฌ: Stars 0๊ฐœ โ€” ํ•ต์‹ฌ ํŒจํ‚ค์ง€ ๋ ˆํฌ๋Š” ์•„์ง ์ปค๋ฎค๋‹ˆํ‹ฐ ์ฃผ๋ชฉ๋„๊ฐ€ ๋‚ฎ์Œ
  • npm ํŒจํ‚ค์ง€: dot-studio ๋ฐ dance-of-tal@latest ๊ณต๊ฐœ ๋ฐฐํฌ ์ค‘
  • ๊ณต์‹ ์›น์‚ฌ์ดํŠธ: danceoftal.com ์šด์˜ ์ค‘
  • ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ: Cloudflare Workers ๊ธฐ๋ฐ˜ ๊ธ€๋กœ๋ฒŒ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์šด์˜ ์ค‘
  • ๋ผ์ด์„ ์Šค: MIT (์˜คํ”ˆ์†Œ์Šค)
  • ์ฃผ์š” ๊ธฐ์ˆ : TypeScript 86.6% (Studio), TypeScript 98.7% (dance-of-tal)

10.2 ํ”„๋กœ์ ํŠธ์˜ ํ•ต์‹ฌ ๊ฐ€์น˜

์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ํฅ๋ฏธ๋กœ์šด ์ด์œ ๋Š” ๋‹จ์ˆœํžˆ ์ƒˆ๋กœ์šด ๋„๊ตฌ๋ฅผ ๋งŒ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด ์•„๋‹ˆ๋ผ, AI ์—์ด์ „ํŠธ๋ฅผ ์†Œํ”„ํŠธ์›จ์–ด ์˜์กด์„ฑ์ฒ˜๋Ÿผ ๋‹ค๋ฃจ๋Š” ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์ œ์•ˆํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

npm์ด JavaScript ํŒจํ‚ค์ง€๋ฅผ ํ‘œ์ค€ํ™”ํ•˜๊ณ , Docker๊ฐ€ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ํ‘œ์ค€ํ™”ํ–ˆ๋“ฏ์ด, DOT๋Š” AI ์—์ด์ „ํŠธ ์ปจํ…์ŠคํŠธ๋ฅผ ํ‘œ์ค€ํ™”ํ•˜๋ ค ํ•œ๋‹ค. ๊ฐœ์ธ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋“  โ€œ๋›ฐ์–ด๋‚œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์—์ด์ „ํŠธ ์ •์ฒด์„ฑ(Tal)โ€์„ ์ „ ์„ธ๊ณ„ ๊ฐœ๋ฐœ์ž๋“ค์ด dot install tal/@author/name ํ•˜๋‚˜๋กœ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด, ์ด๋Š” AI ์—์ด์ „ํŠธ ์ƒํƒœ๊ณ„์— ์ƒ๋‹นํ•œ ๋ณ€ํ™”๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

10.3 ํ•œ๊ณ„์™€ ์ฃผ์˜์ 

์‹คํ—˜์  ๊ธฐ๋Šฅ์˜ ๋ถˆ์•ˆ์ •์„ฑ. Act Editor์™€ Act Thread Runner๋Š” ํ˜„์žฌ โ€œExperimental(์‹คํ—˜์ )โ€๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ๋‹ค. ํ•ต์‹ฌ ๊ฐ€์น˜ ์ œ์•ˆ ์ค‘ ํ•˜๋‚˜์ธ ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ํ˜‘์—… ๊ทธ๋ž˜ํ”„ ๊ธฐ๋Šฅ์ด ์•„์ง ์•ˆ์ •ํ™”๋˜์ง€ ์•Š์€ ์ƒํƒœ๋ผ๋Š” ์ ์€ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

OpenCode ์˜์กด์„ฑ. DOT Studio๋Š” OpenCode๋ฅผ AI ์‹คํ–‰ ๋Ÿฐํƒ€์ž„์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. OpenCode ์ž์ฒด๊ฐ€ ๋น„๊ต์  ์ƒˆ๋กœ์šด ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ(sst/opencode)์ด๋ฏ€๋กœ, Studio์˜ ์•ˆ์ •์„ฑ์€ OpenCode์˜ ์„ฑ์ˆ™๋„์—๋„ ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค.

์ƒํƒœ๊ณ„ ์ดˆ๊ธฐ ๋‹จ๊ณ„. ์•„๋ฌด๋ฆฌ ์ข‹์€ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋ผ๋„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ‚ค์ง€๊ฐ€ ์—†์œผ๋ฉด ์˜๋ฏธ๊ฐ€ ์—†๋‹ค. DOT ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๊ณ ํ’ˆ์งˆ Tal, Dance ์ž์‚ฐ์ด ์Œ“์ด๋А๋ƒ๊ฐ€ ์ด ํ”„๋กœ์ ํŠธ์˜ ์„ฑํŒจ๋ฅผ ๊ฒฐ์ •ํ•  ๊ฒƒ์ด๋‹ค.


11. ์ข…ํ•ฉ ํ‰๊ฐ€ ๋ฐ ์‹œ์‚ฌ์ 

11.1 ์•„์ด๋””์–ด์˜ ์ฐธ์‹ ์„ฑ

DOT์˜ ํ•ต์‹ฌ ์•„์ด๋””์–ด๋Š” genuinely(๋ณธ์งˆ์ ์œผ๋กœ) ์ƒˆ๋กญ๋‹ค. AI ์—์ด์ „ํŠธ๋ฅผ โ€œnpm ํŒจํ‚ค์ง€โ€์ฒ˜๋Ÿผ ๋‹ค๋ฃจ๋Š” ์ ‘๊ทผ์€, AI ์—์ด์ „ํŠธ ์‹œ์Šคํ…œ์ด ์ ์  ๋ณต์žกํ•ด์ง€๋Š” ํ˜„ ์‹œ์ ์—์„œ ๋งค์šฐ ์ ์ ˆํ•œ ํƒ€์ด๋ฐ์— ๋‚˜์˜จ ์ œ์•ˆ์ด๋‹ค. ํŠนํžˆ ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ๊ด€์ ์—์„œ ์˜๋ฏธ ์žˆ๋‹ค:

์ฒซ์งธ, ๋ชจ๋“ˆ์„ฑ(Modularity)์˜ AI ์ ์šฉ์ด๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™์ด ์ˆ˜์‹ญ ๋…„์— ๊ฑธ์ณ ๋ฐœ์ „์‹œํ‚จ โ€œ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ(Separation of Concerns)โ€ ์›์น™์„ AI ์ปจํ…์ŠคํŠธ์— ์ ์šฉํ•œ ๊ฒƒ์ด๋‹ค. AI์˜ โ€œ๋ˆ„๊ตฌ์ธ๊ฐ€(์ •์ฒด์„ฑ)โ€์™€ โ€œ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€(๋Šฅ๋ ฅ)โ€์™€ โ€œ์–ด๋–ป๊ฒŒ ํ˜‘์—…ํ•˜๋Š”๊ฐ€(์›Œํฌํ”Œ๋กœ์šฐ)โ€๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ์กด AI ๋„๊ตฌ๋“ค์ด ๋†“์น˜๊ณ  ์žˆ๋˜ ์ค‘์š”ํ•œ ์„ค๊ณ„ ์›์น™์ด๋‹ค.

๋‘˜์งธ, ์žฌํ˜„ ๊ฐ€๋Šฅ์„ฑ(Reproducibility)์˜ ํ™•๋ณด์ด๋‹ค. Combo ์ž ๊ธˆํŒŒ์ผ ๊ฐœ๋…์„ ํ†ตํ•ด AI ์ปจํ…์ŠคํŠธ์˜ ์žฌํ˜„ ๊ฐ€๋Šฅ์„ฑ์„ ๋ณด์žฅํ•˜๋ ค๋Š” ์‹œ๋„๋Š”, AI ์‹œ์Šคํ…œ์˜ ๊ฒฐ์ •๋ก ์  ๋™์ž‘์„ ์ถ”๊ตฌํ•˜๋Š” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ™˜๊ฒฝ์—์„œ ํŠนํžˆ ๊ฐ€์น˜ ์žˆ๋‹ค.

์…‹์งธ, ํƒˆ์ถค์ด๋ผ๋Š” ์€์œ ์˜ ์ ํ•ฉ์„ฑ์ด๋‹ค. ๋‹จ์ˆœํ•œ ๋งˆ์ผ€ํŒ… ์–ธ์–ด๊ฐ€ ์•„๋‹ˆ๋ผ, ์‹œ์Šคํ…œ ์„ค๊ณ„์˜ ๊ทผ๋ณธ ์›์น™์„ ์„ค๋ช…ํ•˜๋Š” ์ •ํ™•ํ•œ ๋น„์œ ๋‹ค. ํ•œ๊ตญ ์ „ํ†ต ๊ณต์—ฐ์—์„œ ๊ฐ ๋ฌด์šฉ์ˆ˜๊ฐ€ ์ž์‹ ๋งŒ์˜ ์ •์ฒด์„ฑ๊ณผ ์—ญํ• ์„ ๊ฐ–๊ณ  ํ˜‘์—…ํ•˜๋Š” ๋ฐฉ์‹์€, ๋ถ„์‚ฐ๋œ AI ์—์ด์ „ํŠธ ํ˜‘์—…์„ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ๋†€๋ž๋„๋ก ์ ํ•ฉํ•˜๋‹ค.

11.2 ์‹ค์šฉ์  ๊ด€์ ์—์„œ์˜ ์กฐ์–ธ

์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹ค์ œ ์—…๋ฌด์— ๋„์ž…ํ•˜๋ ค๋Š” ๋ถ„๋“ค์„ ์œ„ํ•œ ์กฐ์–ธ์ด๋‹ค:

ํ˜„์žฌ ์‹œ์ (2026๋…„ 4์›”)์—์„œ๋Š” POC(Proof of Concept) ๋˜๋Š” ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ ๋ ˆ๋ฒจ์˜ ํƒ์ƒ‰์ด ์ ํ•ฉํ•˜๋‹ค. ํ•ต์‹ฌ ๊ฐœ๋…์€ ํƒ„ํƒ„ํ•˜๊ณ  ๋ฐฉํ–ฅ์„ฑ์ด ์˜ฌ๋ฐ”๋ฅด์ง€๋งŒ, ์•„์ง ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ์ƒํƒœ๊ณ„์˜ ์„ฑ์ˆ™๋„๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐœ์ธ AI ์—์ด์ „ํŠธ ์›Œํฌํ”Œ๋กœ์šฐ ๊ตฌ์„ฑ์ด๋‚˜ Claude Code์™€ ๊ฐ™์€ AI ์ฝ”๋”ฉ ์—์ด์ „ํŠธ๋ฅผ ์ฒด๊ณ„ํ™”ํ•˜๋Š” ์šฉ๋„๋กœ๋Š” ์ถฉ๋ถ„ํžˆ ์‹ค์šฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŠนํžˆ Claude Code + DOT CLI + MCP ์กฐํ•ฉ์€ ์ฃผ๋ชฉํ•  ๋งŒํ•˜๋‹ค. DOT๋ฅผ MCP ์„œ๋ฒ„๋กœ ์‹คํ–‰ํ•˜์—ฌ Claude Desktop์ด๋‚˜ Claude Code์— ์—ฐ๋™ํ•˜๋ฉด, ํ”„๋กœ์ ํŠธ๋ณ„๋กœ ๋‹ค๋ฅธ ์—์ด์ „ํŠธ ์ปจํ…์ŠคํŠธ๋ฅผ ์ž๋™์œผ๋กœ ๋กœ๋“œํ•˜๋Š” ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

1
2
3
4
5
6
7
8
9
// Claude Desktop ๋˜๋Š” Claude Code์˜ MCP ์„ค์ •
{
  "mcpServers": {
    "dance-of-tal": {
      "command": "npx",
      "args": ["-y", "dance-of-tal@latest"]
    }
  }
}

11.3 ํ–ฅํ›„ ๋ฐœ์ „ ๋ฐฉํ–ฅ ์˜ˆ์ธก

์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ๋ฐœ์ „ํ•œ๋‹ค๋ฉด, AI ์—์ด์ „ํŠธ ์‹œ์Šคํ…œ์˜ ๊ตฌ์„ฑ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ™”ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋œ๋‹ค: ๊ณต๊ฐœ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๋งŒ๋“  ๋‹ค์–‘ํ•œ Tal, Dance ์ž์‚ฐ์ด ์ถ•์ ๋˜๊ณ , ๊ธฐ์—…๋“ค์€ ๋‚ด๋ถ€ ํ”„๋ผ์ด๋น— ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์šด์˜ํ•˜์—ฌ ์กฐ์ง ํ‘œ์ค€ ์—์ด์ „ํŠธ ์ปจํ…์ŠคํŠธ๋ฅผ ๊ณต์œ ํ•˜๋ฉฐ, AI ์—์ด์ „ํŠธ์˜ โ€œpackage.jsonโ€์— ํ•ด๋‹นํ•˜๋Š” .dance-of-tal/ ์„ค์ •์ด ํ”„๋กœ์ ํŠธ์˜ ํ‘œ์ค€ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋˜๋Š” ์„ธ์ƒ์ด๋‹ค.

๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ์‹œ์Šคํ…œ์ด ๋‹จ์ˆœํ•œ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์„ ๋„˜์–ด ์ง„์ •ํ•œ ์ฝ”๋ ˆ์˜ค๊ทธ๋ž˜ํ”ผ๋กœ ๋ฐœ์ „ํ•˜๋Š” ์—ฌ์ •์˜ ์ฒซ ๊ฑธ์Œ์œผ๋กœ์„œ, DOT๋Š” ์˜๋ฏธ ์žˆ๋Š” ์‹œ๋„๋‹ค.


๊ด€๋ จ ๋งํฌ

  • DOT Studio GitHub: https://github.com/dance-of-tal/dot-studio
  • dance-of-tal GitHub: https://github.com/dance-of-tal/dance-of-tal
  • ๊ณต์‹ ์›น์‚ฌ์ดํŠธ: https://danceoftal.com
  • DOT Registry: https://danceoftal.com/registry
  • ๋ฌธ์„œ: https://danceoftal.com/docs/studio
  • GeekNews ์†Œ๊ฐœ ๊ธ€: https://news.hada.io/topic?id=28629

๐Ÿ“… ์ž‘์„ฑ ์ผ์ž: 2026-04-17
์ด ๋ฌธ์„œ๋Š” GitHub ๋ ˆํฌ์ง€ํ† ๋ฆฌ, ๊ณต์‹ ์›น์‚ฌ์ดํŠธ, GeekNews ์†Œ๊ฐœ ๊ธ€์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

ยฉ BLUEBUG. ์ผ๋ถ€ ๊ถŒ๋ฆฌ ๋ณด์œ 

Powered by Jekyll with Chirpy theme