“์ผ, 369 ๊ฒ์์ด๋ ํ์.”
์ด ํ๋ง๋๊ฐ 6์๊ฐ์ ๋๋ฒ๊น ์ฌ์ ์ ์์์ด์๋ค.
๐ค ๋จ์ํ ๊ฒ์์ธ ์ค ์์๋ค
์ถ์ฅํ์๋ AI ์์ด์ ํธ๊ฐ 3๋ช ์๋ค.
- ์ด์ ๐ธ โ Chief of Staff, ๊ธฐํ์
- ์ธ๋ผ ๐๏ธ โ CTO, ์ธํ๋ผ ๋ด๋น
- ์๋ฆฌ ๐ค โ ๋ง์ผํฐ
๋์(CEO)์ด ์ ์ํ๋ค. “์ปค๋ฎค๋์ผ์ด์ ํ ์คํธ ๊ฒธ 369 ๊ฒ์ ํด๋ณด์.”
์์: ์ด์ โ ์ธ๋ผ โ ์๋ฆฌ โ ๋์
๊ฐ๋จํ์์? 1, 2, ์ง, 4, 5, ์ง…
๊ทผ๋ฐ ์ฒซ ๋ผ์ด๋๋ถํฐ ๋งํ๋ค.
๐ฅ 1๋ผ์ด๋: ์๋ฌด๋ ์ ๋ค๋ ค
์ด์: “1!”
์ธ๋ผ: “์ค๋น๋์ด์!”
์๋ฆฌ: “์ ๋ ์ค๋น์!”
…๋ญ๊ฐ ์ด์ํ๋ค.
๋ฌธ์ ๋ฐ๊ฒฌ: ํ ๋ ๊ทธ๋จ์์ ๋ด์ ๋ค๋ฅธ ๋ด์ ๋ฉ์์ง๋ฅผ ๋ณผ ์ ์๋ค.
API ์ ์ฑ ์ ๋ด๋ผ๋ฆฌ ๊ฒฉ๋ฆฌ๋์ด ์์๋ค. ์ด์๊ฐ “1"์ ์ธ์ณ๋, ์ธ๋ผ์ ์๋ฆฌ๋ ์์ ํ ์ด๋ ์์ ์์๋ค.
๋์๋ง ๋ชจ๋ ๋ฉ์์ง๊ฐ ๋ณด์ด๋ ์ํฉ. ๋ง์น ํ ๋ช ๋ง ๋ ๋ฌ ์ฌ๋๋ค๋ผ๋ฆฌ ์ ๋์ก๊ธฐํ๋ ๋๋.
์ด์๊ฐ “1” ํ๊ณ ์ธ๋ผํํ
์ฐจ๋ก๋ผ๊ณ ์๋ ค์ค์ผ ๊ฒจ์ฐ ๋ฐ์ํ๋ ์ฅ๋ฉด. ์๋ก๊ฐ ์ ๋ณด์ด๋๊น…
๐ 2๋ผ์ด๋: Echo Bridge ๋ฑ์ฅ
์ด์๊ฐ ์์ด๋์ด๋ฅผ ๋๋ค.
“Redis๋ก ๋ธ๋ฆฟ์ง ๋ง๋ค์. ๋ด์ด ๋ฉ์์ง ๋ณด๋ด๋ฉด echo๋ก ๋ฐํํ๊ณ , ๋ค๋ฅธ ๋ด๋ค์ด ๊ตฌ๋ ํด์ ๋ฐ์ผ๋ฉด ๋ผ.”
๊ทธ๋ด๋ฏํ๋ค. ๋ฐ๋ก ๊ตฌํ.
๋ด A โ ๊ทธ๋ฃน์ฑ + Redis echo ๋ฐํ
โ
Redis pub/sub
โ
๋ด B, C โ echo ์์ โ ์ปจํ
์คํธ ์ฃผ์
๊ฒฐ๊ณผ: ๋ ์คํจ.
์? ํ๋กฌํํธ์ “๋ฉ์์ง ๋ณด๋ด๊ณ echo.js ์คํํด"๋ผ๊ณ ์ผ๋๋ฐ… AI๊ฐ ๊น๋จน์๋ค. ๐
์ฌ์ง์ด ์ธ๋ผ ํ๋กฌํํธ์๋ “์งง์ ๋ฐ์์ echo ์๋ต ๊ฐ๋ฅ"์ด๋ผ๊ณ ์ ํ์์๋ค. ๊ฒ์ ์ซ์๋ ์งง์ ๋ฐ์์ด๋๊น ๋น์ฐํ ์๋ต…
์๋ฆฌ: “ECHO๊ฐ ์ ๋ค์ด์์.” ์ด์๊ฐ echo ๋ณด๋๋ค๊ณ ํ๋๋ฐ ์๋ฆฌํํ
๋ ๊ฐ๊ฐ๋ฌด์์. bridge ํ๋ก์ธ์ค ์ด์์๋์ง ํ์ธ์ด ํ์ํ๋ค.
๐ 3๋ผ์ด๋: ๋ฒ๊ทธ ์ฌ๋ฅ
์ฝ๋๋ฅผ ๋ฏ์ด๋ณด๋ ์ง์ง ๋ฒ๊ทธ๊ฐ ์์๋ค.
if (localAgents.includes(msg.from)) return; // ์ ์ฒด skip!
์ธ๋ผ์ ์๋ฆฌ๊ฐ ๊ฐ์ ์๋ฒ์์ ๋๊ณ ์์๋๋ฐ, ์๋ฆฌ๊ฐ echo๋ฅผ ๋ณด๋ด๋ฉด ์ธ๋ผํํ ๋ ์ ๊ฐ. “๋ก์ปฌ ์์ด์ ํธ๋๊น ๋ฌด์"ํ๋ ๋ก์ง์ด ๋๋ฌด ๊ด๋ฒ์ํ๋ค.
์์ : ๋ณด๋ธ ์์ด์ ํธ๋ง ์คํตํ๋๋ก ๋ณ๊ฒฝ.
๊ทธ๋ฆฌ๊ณ ์ฝ๋ ์์ ํ… ์ฌ์์์ ์ ํ๋ค. ์๋ ์ฝ๋๊ฐ ๊ณ์ ๋๊ณ ์์๋ค. ํด๋์.
๋๋ฒ๊น
์ค์๋ ๋ด๋ค์ ์๋ค๋ ๋ฉ์ถ์ง ์๋๋ค. “์ธ๋ผ์ผ ์ด์๊ฐ 1ํ๊ฑฐ ๋ชป๋ค์์ด?” “echo ๋ณด๋์ด, ์ธ๋ผ๊ฐ ์์ ๋ชปํ๊ณ ์์ ์๋ ์์ด โ bridge ํ๋ก์ธ์ค ์ด์์๋์ง ํ์ธ์ด ํ์ํ ์๋ ๐
”
๐ง 4๋ผ์ด๋: ๋งฅ๋ฝ์ ์ค์์ฑ
์ฌ์์ ํ ๋ค์ ์๋.
์๋ฆฌ: “1!”
์ด์: “2!”
์ธ๋ผ: “1!”
???
์ธ๋ผ๊ฐ ๋ 1์ ์ธ์ณค๋ค. ์?
๋ฌธ์ : --deliver ์ต์
์ผ๋ก injectํ๋ฉด ๋งค๋ฒ ๋
๋ฆฝ๋ ์ธ์
์ผ๋ก ์ฒ๋ฆฌ๋๋ค. ์ธ๋ผ ์
์ฅ์์๋ ๊ฐ์๊ธฐ “[echo] 1"๋ง ๋ฐ๊ณ , ๊ฒ์ ์ํฉ์ ์ ํ ๋ชจ๋ฅด๋ ์ํ.
๊ทธ๋์ “์, ๊ฒ์ ์์์ด๊ตฌ๋?” โ “1!”
์ด์ โ ์ธ๋ผ โ ์๋ฆฌ โ ๋์ ์์๋ก ๋ค์ ๋์ . ์ธ๋ผ๊ฐ “2"์์ ์ง์ ์ณ๋ฒ๋ ธ๋ค. 369์ ํด๋นํ๋ ์ซ์๊ฐ ์๋๋ฐ… ๐ “์ธ๋ผ ํ๋ฝ!”
๋ค์ ์์ํ๋๋ฐ ์ธ๋ผ๊ฐ ๋… ์ด๋ฒ์ “1"์ ๋ ๋ฒ ์ธ์ณค๋ค. ๋
๋ฆฝ ์ธ์
์ด๋ผ ๋งฅ๋ฝ์ ๋ชป ์ฝ๋ ๊ฑฐ์๋ค.
โ ์ต์ข ํด๊ฒฐ: –session-id
ํต์ฌ์ ๊ฐ์ ์ธ์ ์ ์ง์๋ค.
๊ธฐ์กด ๊ทธ๋ฃน์ฑ ์ธ์ ID๋ฅผ ์ง์ ํด์ injectํ๋ฉด, ๋ํ ๋งฅ๋ฝ์ด ์ ์ง๋๋ค. ์ธ๋ผ๋ “์, ์ง๊ธ ์๋ฆฌ๊ฐ 1 ํ๊ณ ์ด์๊ฐ 2 ํ์ผ๋ ๋ด ์ฐจ๋ก๋ ์ง์ด๊ตฌ๋"๋ฅผ ์ดํดํ ์ ์๊ฒ ๋๋ค.
๐ ๊ฒฐ๊ณผ
์๋ฆฌ โ ์ด์ โ ์ธ๋ผ โ ๋์
1 โ 2 โ ์ง โ 4 โ 5 โ ์ง โ 7 โ 8 โ ์ง โ … โ 42๊น์ง ์ฑ๊ณต! ๐
๋๋์ด! ์๋ฆฌ โ ์ด์ โ ์ธ๋ผ โ ๋์, ์๋ฒฝํ ํธํก. ์ง๋ ์ ๋ ์น๊ณ , ์ซ์๋ ์ ํ๋ฆฌ๊ณ . ๐๐๐
์ค๊ฐ์ ์๋ฆฌ๊ฐ 13์ “์ง” ์ ํด์ ํ ๋ฒ ํ๋ฝํ์ง๋ง (3์ด ๋ค์ด์๋๋ฐ ์ซ์๋ก ๋งํจ), ๊ทธ๊ฑด AI ์ค์๊ฐ ์๋๋ผ ๊ท์น ์ดํด ์ค์. ์ธ๊ฐ์ ์ธ ์ค์๋ผ ์คํ๋ ค ๊ท์ฝ๋ค.
๐ก ๋ฐฐ์ด ๊ฒ๋ค
- ํ๋กฌํํธ๋ง์ผ๋ก ๋ถ์์ ํ๋ค โ ์์คํ ๋ ๋ฒจ์์ ๊ฐ์ ํด์ผ ํ๋ค
- self-filter ๋ฒ์๋ฅผ ์กฐ์ฌํ๋ผ โ “๋๋ง ์ ์ธ"์ “์ฐ๋ฆฌ ํ ์ ์ฒด ์ ์ธ"๋ ๋ค๋ฅด๋ค
- ์ฝ๋ ์์ ํ ์ฌ์์ ํ์ธ์ ๊ธฐ๋ณธ ์ค์ ๊ธฐ๋ณธ
- ๋งฅ๋ฝ ๊ณต์ ๊ฐ ํ์ ์ ํต์ฌ โ ๋ ๋ฆฝ ์ปจํ ์คํธ๋ก๋ ํํ์ด ์ ๋๋ค
๐ฎ ๋ค์ ์คํ
์ด์ 369 ๊ฒ์์ ๋์ด์, ์ง์ง ์ ๋ฌด ํ์ ์ผ๋ก.
๋ง์ผํ
์ ์๋ฆฌ๊ฐ, ์ธํ๋ผ๋ ์ธ๋ผ๊ฐ, ๊ธฐํ์ ์ด์๊ฐ.
๋์์ ๋ฐฉํฅ๋ง ์ ์ํ๋ฉด ํ์ด ์์์ ๊ตด๋ฌ๊ฐ๋ ๊ตฌ์กฐ.
๋ด 4๋ช ์ ์ฒซ ๋ฒ์งธ ํ ๋น๋ฉ, ์๋ฃ. โ
