Skip to content

Latest commit

ย 

History

History
334 lines (237 loc) ยท 23.6 KB

File metadata and controls

334 lines (237 loc) ยท 23.6 KB

English | ํ•œ๊ตญ์–ด

ADHDev

ํ•œ ์ €์žฅ์†Œ ์œ„์˜ ์ฝ”๋”ฉ ์—์ด์ „ํŠธ ์—ด ๊ฐœ โ€” ์„œ๋กœ ๋ฐŸ์ง€ ์•Š๊ฒŒ, ๋ธŒ๋ผ์šฐ์ €์™€ ํฐ์—์„œ.

npm npm standalone CI License: AGPL-3.0

AI ์ฝ”๋”ฉ ์—์ด์ „ํŠธ๋Š” ์ด์ œ ์žฅ์‹œ๊ฐ„ ์‹คํ–‰๋˜๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์›Œ์ปค๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ADHDev๋Š” ๊ทธ๊ฒƒ๋“ค์„ ์œ„ํ•œ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์ž…๋‹ˆ๋‹ค. ์›น ๋˜๋Š” ๋ชจ๋ฐ”์ผ ๋Œ€์‹œ๋ณด๋“œ์—์„œ โ€” Claude Code, Codex, Kimi, Cursor CLI, Antigravity CLI๋ฅผ ๋‚˜๋ž€ํžˆ, ๋ชจ๋“  ๋จธ์‹ ์— ๊ฑธ์ณ โ€” ์—์ด์ „ํŠธ ์„ธ์…˜์„ ์‹คํ–‰ยท๊ฐ์‹œยท์Šน์ธยท์กฐ์ข…ํ•˜๊ณ , ์™„๋ฃŒ๋œ ์ž‘์—…์„ main์— ๋จธ์ง€ํ•˜๋Š” ๋ฌด์ธ ํŒŒ์ดํ”„๋ผ์ธ์— ์ˆ˜๋ ด์„ ๋งก๊ธฐ์„ธ์š”.

์ถฉ๋Œ ์—†๋Š” ๋ณ‘๋ ฌ ์—์ด์ „ํŠธ. ๋ชจ๋“  ํƒœ์Šคํฌ๋Š” ์ž๊ธฐ๋งŒ์˜ git ์›ŒํฌํŠธ๋ฆฌ์—์„œ ๋Œ๊ณ , Refinery๊ฐ€ ๊ฒ€์ฆ์„ ํ†ต๊ณผํ•œ ์ž‘์—…์„ fast-forward๋กœ ์ฐฉ์ง€์‹œํ‚ต๋‹ˆ๋‹ค โ€” ๋จธ์ง€ ๋ฐ์ด ์ˆ™์ทจ ์—†์ด.

์›น์‚ฌ์ดํŠธ: adhf.dev ยท ๋ฌธ์„œ: docs.adhf.dev

ADHDev ๋ฐ์Šคํฌํƒ‘ ๋Œ€์‹œ๋ณด๋“œ โ€” ์ฑ„ํŒ…ยทํ„ฐ๋ฏธ๋„ ๋ทฐ ์ „ํ™˜, ํŒจ๋„ ํ”Œ๋กœํŒ…, ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ถ„ํ• 

๋ฃจํ”„๋Š” ์ด๋ ‡์Šต๋‹ˆ๋‹ค: ์ฑ„ํŒ…์œผ๋กœ ํƒœ์Šคํฌ๋ฅผ ์„ค๋ช… โ†’ ์ฝ”๋””๋„ค์ดํ„ฐ๊ฐ€ ์ ‘์ˆ˜ยทํƒœ๊น…ยทํ์ž‰ โ†’ ๋†€๊ณ  ์žˆ๋Š” ๋จธ์‹ ์ด ์ƒˆ ์›ŒํฌํŠธ๋ฆฌ๋กœ ๊ฐ€์ ธ๊ฐ โ†’ ๋ ˆํฌ ์ž์ฒด์˜ ๊ฒŒ์ดํŠธ๊ฐ€ ํŒ์ • โ†’ main์— ff-๋จธ์ง€, ์›ŒํฌํŠธ๋ฆฌ ์ •๋ฆฌ. ์Šน์ธ์ด ํ•„์š”ํ•  ๋•Œ๋งŒ ํฐ์ด ์šธ๋ฆฝ๋‹ˆ๋‹ค.

์ด ์ €์žฅ์†Œ ์ž์ฒด๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค. ์ตœ๊ทผ main ์ปค๋ฐ‹์˜ ์•ฝ 3๋ถ„์˜ 1์ด Auto-merge via Refinery ์ปค๋ฐ‹์ž…๋‹ˆ๋‹ค โ€” ๋ฏฟ์ง€ ๋ง๊ณ  ์ง์ ‘ ์„ธ์–ด๋ณด์„ธ์š”: git log --oneline -60 | grep -c "via Refinery".


ADHDev๋ฅผ ์“ฐ๋Š” ์ด์œ 

๐ŸŒ ์›น ์šฐ์„  ์ œ์–ด

์—์ด์ „ํŠธ๋Š” ๋กœ์ปฌ์—์„œ ์‹คํ–‰๋˜๊ณ , ๋‹น์‹ ์€ ์–ด๋””์„œ๋“  ์กฐ์ข…ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹œ๋ณด๋“œ๋Š” ์ง„์งœ ์ปจํŠธ๋กค ์„œํ”ผ์Šค์ž…๋‹ˆ๋‹ค โ€” ํ™œ์„ฑ ์„ธ์…˜์„ ๊ฒ€์‚ฌํ•˜๊ณ , ์ฑ„ํŒ…ยทํ„ฐ๋ฏธ๋„ ์ƒํƒœ๋ฅผ ์ฝ๊ณ , ์ž‘์—…์„ ์Šน์ธ ๋˜๋Š” ์ค‘๋‹จํ•˜๊ณ , ์ ์ ˆํ•œ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๋‹ค์‹œ ์—ด๊ณ , ๋ธŒ๋ผ์šฐ์ €๋‚˜ ํœด๋Œ€ํฐ์—์„œ ๋‹ค์Œ ์ง€์‹œ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„์„ ๋ถ™์žก๊ณ  ๊ธฐ๋‹ค๋ฆด ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์Šน์ธ ์•Œ๋ฆผ์—๋Š” ์‹คํ–‰ํ•˜๋ ค๋Š” ๋ช…๋ น ์›๋ฌธ์ด ๊ทธ๋Œ€๋กœ ์‹ค๋ฆฝ๋‹ˆ๋‹ค โ€” rm -rf build/ ์Šน์ธ๊ณผ git push --force ์Šน์ธ์€ ๋‹ค๋ฅธ ๋ฐ˜์‘ ์†๋„๋ฅผ ๋ฐ›์•„์•ผ ํ•˜๋‹ˆ๊นŒ์š” (ํฐ ํ‘ธ์‹œ๋Š” ํด๋ผ์šฐ๋“œ ์—๋””์…˜ ๊ธฐ๋Šฅ).

ADHDev ๋ฐ์Šคํฌํƒ‘ ์„ธ์…˜ ์ƒ์„ธ ๋ทฐ โ€” ์ฑ„ํŒ…ยท์ฝ”๋“œยทํ„ฐ๋ฏธ๋„ ์ƒํƒœ๋ฅผ ํ•จ๊ป˜ ํ‘œ์‹œ ADHDev ์™„๋ฃŒ ์•Œ๋ฆผ ๋ฐ๋ชจ โ€” ์‹คํ–‰ ์ค‘์ธ ์„ธ์…˜์— ์–ธ์ œ ๋Œ์•„์˜ฌ์ง€ ์•Œ๋ ค์ฃผ๋Š” ํ™”๋ฉด

๐Ÿ•ธ๏ธ Repo Mesh โ€” ์ง„์ •ํ•œ ๋ฉ€ํ‹ฐ๋จธ์‹  ๋ณ‘๋ ฌ์„ฑ

์˜์กด์„ฑ์ด ์žˆ๋Š” ํƒœ์Šคํฌ๋ฅผ ํ์— ๋„ฃ๊ณ  ์ฝ”๋””๋„ค์ดํ„ฐ๊ฐ€ ์—ฌ์œ  ์šฉ๋Ÿ‰์„ ๊ฐ€์ง„ ๋…ธ๋“œ(๋…ธํŠธ๋ถ, ๋ฐ์Šคํฌํƒ‘, ๋นŒ๋“œ ์„œ๋ฒ„)์— ์ž๋™์œผ๋กœ ๋””์ŠคํŒจ์น˜ํ•˜๊ฒŒ ๋‘์„ธ์š”. ์ด๊ฒƒ์€ ํ•œ ํ˜ธ์ŠคํŠธ์— SSH๋กœ ์ ‘์†ํ•˜๋Š” ๋ฐฉ์‹์ด ์•„๋‹Œ, P2P ๋ฉ”์‹œ ์œ„์˜ ์ง„์ •ํ•œ ๋ฉ€ํ‹ฐ๋จธ์‹  ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์ž…๋‹ˆ๋‹ค. ๊ฐ ํƒœ์Šคํฌ๋Š” ๋ณ„๋„์˜ ์›ŒํฌํŠธ๋ฆฌ์—์„œ ์‹คํ–‰๋˜๋ฏ€๋กœ ์—์ด์ „ํŠธ๋“ค์ด ์„œ๋กœ๋ฅผ ๋ฐฉํ•ดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฉ”์‹œ ์—”์ง„๊ณผ Refinery๋Š” ์ด ๋ ˆํฌ์— ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ํฌ๋กœ์Šค-๋จธ์‹  ๋””์ŠคํŒจ์น˜๋Š” ํด๋ผ์šฐ๋“œ ์—๋””์…˜์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๋ฉ”์‹œ๋Š” ํ•˜๋‚˜์˜ git ์ €์žฅ์†Œ์— ๋ฐ”์ธ๋”ฉ๋˜๋ฉฐ, ์›๋ž˜ ์‚ฌ๋žŒ์ด ์†์œผ๋กœ ์กฐ์œจํ•ด์•ผ ํ–ˆ๋˜ ๊ตฌ์„ฑ์š”์†Œ๋“ค์„ ์†Œ์œ ํ•ฉ๋‹ˆ๋‹ค:

ํƒœ์Šคํฌ ํ pull ๊ธฐ๋ฐ˜. pending โ†’ assigned โ†’ completed/failed, depends_on ์ˆœ์„œ ์ง€์ •๊ณผ ์žฌ์‹œ๋„. idle ๋…ธ๋“œ๊ฐ€ ์Šค์Šค๋กœ ์ž‘์—…์„ ๊ฐ€์ ธ๊ฐ€๋ฏ€๋กœ ์–ด๊ธ‹๋‚  push ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
๋ฏธ์…˜ ์—ฌ๋Ÿฌ ํƒœ์Šคํฌ๋ฅผ ๋ฌถ๋Š” ๋ชฉํ‘œ ๋‹จ์œ„. ์žฌ์‹œ์ž‘๋œ ์ฝ”๋””๋„ค์ดํ„ฐ๊ฐ€ ์ „๋ถ€ ๋‹ค์‹œ ํ์— ๋„ฃ๋Š” ๋Œ€์‹  ์ด์–ด๋ฐ›์Šต๋‹ˆ๋‹ค.
์›ŒํฌํŠธ๋ฆฌ ๋…ธ๋“œ ๋ณ‘๋ ฌ ํƒœ์Šคํฌ๋‹น ๊ฒฉ๋ฆฌ๋œ ๋ธŒ๋žœ์น˜ ์ฒดํฌ์•„์›ƒ. ์ž‘์—… ๋””์ŠคํŒจ์น˜ ์ „์— ์ž๋™ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ(install, ๋„ค์ดํ‹ฐ๋ธŒ ๋ฆฌ๋นŒ๋“œ, gitignore๋œ ๋นŒ๋“œ ์‚ฐ์ถœ๋ฌผ)์ด ๋๋‚ฉ๋‹ˆ๋‹ค.
append-only ์›์žฅ ๋ชจ๋“  ๋””์ŠคํŒจ์น˜ยท์™„๋ฃŒยท์‹คํŒจยท์Šคํ†จยท์ฒดํฌํฌ์ธํŠธ๋ฅผ JSONL ์ด๋ฒคํŠธ๋กœ. ์‚ฌํ›„์— "์‹ค์ œ๋กœ ๋ฌด์Šจ ์ผ์ด ์žˆ์—ˆ๋‚˜"์— ๋‹ตํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์‚ฌ ๊ธฐ๋ก์ž…๋‹ˆ๋‹ค.
์šด์˜ ๋…ธํŠธ ๋Ÿฐํƒ€์ž„์— ๊ธฐ๋กํ•œ ๊ตํ›ˆ(provider ํŠน์ด์‚ฌํ•ญ, ๋ณต๊ตฌ ์ ˆ์ฐจ)์ด ์ดํ›„ ๋ชจ๋“  ์ฝ”๋””๋„ค์ดํ„ฐ ํ”„๋กฌํ”„ํŠธ์— ์ฃผ์ž…๋ฉ๋‹ˆ๋‹ค. ์ง€์‹์ด ๊ทธ๊ฒƒ์„ ๋ฐฐ์šด ์„ธ์…˜๋ณด๋‹ค ์˜ค๋ž˜ ์‚ฝ๋‹ˆ๋‹ค.
๋ผ์ด๋ธŒ ์ƒํƒœ ํ”„๋กฌํ”„ํŠธ ์ฝ”๋””๋„ค์ดํ„ฐ์˜ ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ๋Š” ์ •์  ํ…์ŠคํŠธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค โ€” launch ์‹œ์ ์˜ ๋ผ์ด๋ธŒ ๋ฉ”์‹œ ์ƒํƒœ(๋…ธ๋“œ ํ—ฌ์Šค, ์ง„ํ–‰ ์ค‘ ๋ฏธ์…˜, ์ตœ๊ทผ ์‹คํŒจ, ๋ˆ„์  ๋…ธํŠธ)๋ฅผ ๋ Œ๋”ํ•œ ๊ฒƒ์ด๊ณ , ๋Ÿฐํƒ€์ž„ ์ด๋ฒคํŠธ๋Š” ํด๋ง ๋Œ€์‹  ์„ธ์…˜์— ์ง์ ‘ ์ฃผ์ž…๋ฉ๋‹ˆ๋‹ค.
๋‚œ์ด๋„ ๋ผ์šฐํŒ… ์‰ฌ์šด ์ž‘์—…์€ ์ €๊ฐ€ ๋ชจ๋ธ, ์–ด๋ ค์šด ์ž‘์—…์€ ๊ณ ๊ฐ€ ๋ชจ๋ธ + deep thinking์œผ๋กœ โ€” ๋…ธ๋“œ ๋Šฅ๋ ฅ๋ณ„๋กœ. ํ† ํฐ ๋น„์šฉ์ด ํƒœ์Šคํฌ ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ๋‚œ์ด๋„์— ๋น„๋ก€ํ•ฉ๋‹ˆ๋‹ค.

ADHDev ๋ฉ”์‹œ ๊ด€์ธก ๋ณด๋“œ โ€” ๋ ˆํฌ์˜ ์›์žฅยทํƒœ์Šคํฌ ํยทํ™œ์„ฑ ์„ธ์…˜ยท๋…ธ๋“œยท๋ฆฌํŒŒ์ธ ์žก์„ ํ‘œ์‹œ

โšก ์„ค๊ณ„ ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ โ€” ํ•œ ๊ณณ์— ๋Œ€ํ™”

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

๐Ÿšข Refinery โ€” main์— ๋ฌด์ธ ์ฐฉ์ง€

๋ณ‘๋ ฌ์„ฑ์€ ์ž‘์—…์ด ์‹ค์ œ๋กœ ๋จธ์ง€๋  ๋•Œ๋งŒ ํšจ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Refinery๋Š” ์™„๋ฃŒ๋œ ํƒœ์Šคํฌ๋ฅผ ๋ ˆํฌ ์ž์ฒด์˜ ๊ฒ€์ฆ ๊ฒŒ์ดํŠธยทํŒจ์น˜ ๋™๋“ฑ์„ฑ ๊ฒ€์‚ฌยท์„œ๋ธŒ๋ชจ๋“ˆ ์ธ์‹ fast-forward ๋จธ์ง€ยท์ž๋™ ์›ŒํฌํŠธ๋ฆฌ ์ •๋ฆฌ๋กœ ์ˆ˜๋ ดํ•ฉ๋‹ˆ๋‹ค โ€” ๋ฌด์ธ์œผ๋กœ. ์—์ด์ „ํŠธ๊ฐ€ ์™„๋ฃŒํ•˜๋ฉด, Refinery๊ฐ€ ์ฐฉ์ง€์‹œํ‚ต๋‹ˆ๋‹ค. ์œ„ ๋ฉ”์‹œ ๋ณด๋“œ๊ฐ€ ์ „์ฒด ํŒŒ์ดํ”„๋ผ์ธ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค: ์›์žฅ์˜ DIRECT FAST FORWARD ํ•ญ๋ชฉ์ด ์ฐฉ์ง€ ์™„๋ฃŒ๋œ ํƒœ์Šคํฌ์ด๊ณ , REFINE JOBS๊ฐ€ ์ง„ํ–‰ ์ค‘์ธ ์ˆ˜๋ ด์„ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿงฉ ์„œ๋ธŒ๋ชจ๋“ˆ ์ธ์‹ ์ˆ˜๋ ด โ€” ์‹ค์ œ ๋ชจ๋…ธ๋ ˆํฌ์—์„œ ์ž‘๋™

๋ณ‘๋ ฌ ์›ŒํฌํŠธ๋ฆฌ์™€ ๋ฌด์ธ ๋จธ์ง€๋Š” git ์„œ๋ธŒ๋ชจ๋“ˆ์ด ๋“ฑ์žฅํ•˜๋Š” ์ˆœ๊ฐ„ ์ทจ์•ฝํ•ด์ง‘๋‹ˆ๋‹ค. ADHDev๋Š” ์ด ์ผ€์ด์Šค๋ฅผ ์ •๋ฉด์œผ๋กœ ๋‹ค๋ฃน๋‹ˆ๋‹ค โ€” ์ด ํ”„๋กœ์ ํŠธ ์ž์ฒด๊ฐ€ ์„œ๋ธŒ๋ชจ๋“ˆ ๋ชจ๋…ธ๋ ˆํฌ(๋ฃจํŠธ ๋ ˆํฌ + AGPL ์—”์ง„ + ํ”„๋กœ๋ฐ”์ด๋” ์นดํƒˆ๋กœ๊ทธ๋ฅผ ์„œ๋ธŒ๋ชจ๋“ˆ๋กœ)์ด๋ฉฐ, ๋งค์ผ ์ด ๋ฉ”์‹œ์™€ Refinery๋ฅผ ๋„๊ทธํ‘ธ๋”ฉํ•ฉ๋‹ˆ๋‹ค. Refinery๋Š” ์ˆ˜๋ ด ์ค‘ ์„œ๋ธŒ๋ชจ๋“ˆ์„ ์ผ๊ธ‰ ์‹œ๋ฏผ์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค:

  • ๋„๋‹ฌ ๊ฐ€๋Šฅ์„ฑ ๊ฒŒ์ดํŠธ โ€” ๋ฃจํŠธ ๋ธŒ๋žœ์น˜๊ฐ€ main์— ์ฐฉ์ง€ํ•˜๊ธฐ ์ „, ์ฐธ์กฐ๋œ ์„œ๋ธŒ๋ชจ๋“ˆ ์ปค๋ฐ‹์ด ์„œ๋ธŒ๋ชจ๋“ˆ์˜ origin/main์—์„œ ๋„๋‹ฌ ๊ฐ€๋Šฅํ•œ์ง€ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉด ํ•ด๋‹น ์ปค๋ฐ‹์ด ๊ฒŒ์‹œ๋  ๋•Œ๊นŒ์ง€ ํƒœ์Šคํฌ๋ฅผ ์ฐจ๋‹จ ์ƒํƒœ๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ํŒจ์น˜ ๋™๋“ฑ์„ฑ ๊ฐ์ง€ โ€” ์„œ๋ธŒ๋ชจ๋“ˆ ์ปค๋ฐ‹์ด ๋ฆฌ๋ฒ ์ด์Šค๋˜๊ฑฐ๋‚˜ ์Šค์ฟผ์‹œ๋˜์–ด SHA๊ฐ€ ๋ฐ”๋€ ๊ฒฝ์šฐ์—๋„, Refinery๋Š” ๋‚ด์šฉ์ด ์ด๋ฏธ ์ฐฉ์ง€ํ–ˆ๋Š”์ง€ ํŒ๋‹จํ•˜์—ฌ ์ด์ค‘ ๋จธ์ง€๋‚˜ ์ž˜๋ชป๋œ ๋‹ค์ด๋ฒ„์ „์Šค ํ”Œ๋ž˜๊ทธ๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ์›์ž์  ํฌ์ธํ„ฐ ๋ฒ”ํ”„ โ€” ์„œ๋ธŒ๋ชจ๋“ˆ ํฌ์ธํ„ฐ ๋ฒ”ํ”„๋Š” ๋ฃจํŠธ ๋ณ€๊ฒฝ๊ณผ ํ•จ๊ป˜ ์ˆ˜๋ ดํ•˜์—ฌ, ๋ฌด์ธ ๋จธ์ง€ ์ค‘ ๋ฃจํŠธ๊ฐ€ ๊นจ์ง€๊ฑฐ๋‚˜ ๋Œ•๊ธ€๋ง ์„œ๋ธŒ๋ชจ๋“ˆ ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค.

๐Ÿ”บ MAGI โ€” ๊ต์ฐจ ๊ฒ€์ฆ ๊ฒฐ๊ณผ

MAGI โ€” Multi-Agent Ground-truth Insight. ๋„ค, ์—๋ฐ˜๊ฒŒ๋ฆฌ์˜จ ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ๋จผ์ €์˜€๊ณ  ์•ฝ์ž๋Š” ๋‚˜์ค‘์— ์—ด์‹ฌํžˆ ๊ปด๋งž์ท„์Šต๋‹ˆ๋‹ค. ์ฝ๊ธฐ ์ „์šฉ ์กฐ์‚ฌ(๋ฒ„๊ทธ RCA, ์„ค๊ณ„ ๋ฆฌ๋ทฐ, ๊ฐ์‚ฌ)๋ฅผ ์—ฌ๋Ÿฌ ๋…๋ฆฝ ์—์ด์ „ํŠธ์— ๋™์‹œ์— ๋˜์ง€๊ณ , ๊ทธ๋“ค์ด ์–ด๋””์„œ ๊ฐˆ๋ฆฌ๋Š”์ง€๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค.

์ „์ œ๋Š” ๋†’์€ ํ•ฉ์˜๊ฐ€ ๊ณง ์ •๋‹ต์€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ™์€ ๋ชจ๋ธ์— ๊ฐ™์€ ํ”„๋กฌํ”„ํŠธ์™€ ๊ฐ™์€ ์ปจํ…์ŠคํŠธ๋ฅผ ์ฃผ๋ฉด ๊ฐ™์€ ํ™˜๊ฐ์ด ๋‚˜์˜ต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ MAGI๋Š” ์งˆ๋ฌธ์„ ์„œ๋กœ ๋‹ค๋ฅธ ๋จธ์‹  ๊ทธ๋ฆฌ๊ณ  ์„œ๋กœ ๋‹ค๋ฅธ provider์— fan-outํ•˜๊ณ , ์ถœ์ฒ˜๊ฐ€ ์‹ค์ œ๋กœ ์–ผ๋งˆ๋‚˜ ๋…๋ฆฝ์ ์ด์—ˆ๋Š”์ง€๋กœ ํ•ฉ์˜์— ๊ฐ€์ค‘์„ ๋‘ก๋‹ˆ๋‹ค:

  • ๋‹ต๋ณ€์€ agreed / contested / dissent / singleton / source-coupled๋กœ ๋ถ„๋ฅ˜๋ฉ๋‹ˆ๋‹ค โ€” ๊ฐ™์€ provider๋‚˜ ๊ฐ™์€ ๋จธ์‹ ์„ ๊ณต์œ ํ•˜๋Š” ๋ฆฌํ”Œ๋ฆฌ์นด๋ผ๋ฆฌ์˜ ํ•ฉ์˜๋Š” ๊ณต์œ  ํ™˜๊ฐ ์˜์‹ฌ์œผ๋กœ ํ• ์ธ๋˜๋ฉฐ, ๋‘ ๋ฒˆ ์„ธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ฃผ ์ถœ๋ ฅ์€ ํŒ์ •์ด ์•„๋‹ˆ๋ผ needs_verification ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค โ€” ๋งˆ์ฐฐ์ด ๊ณง ๊ฒฐ๊ณผ๋ฌผ์ž…๋‹ˆ๋‹ค.
  • ๋…๋ฆฝ์„ฑ์€ ํฌ๋ง์ด ์•„๋‹ˆ๋ผ ๊ฐ•์ œ์ž…๋‹ˆ๋‹ค: ์ง„์งœ ๋…๋ฆฝ์ ์ธ ํƒ€๊นƒ์ด 2๊ฐœ ๋ฏธ๋งŒ์ด๋ฉด ์กฐ์šฉํžˆ ๊ฒฉํ•˜๋˜์ง€ ์•Š๊ณ  ์—๋Ÿฌ๊ฐ€ ๋‚ฉ๋‹ˆ๋‹ค. ๋ฆฌํ”Œ๋ฆฌ์นด๋Š” ์ฝ๊ธฐ ์ „์šฉ์ด๋ผ ๊ต์ฐจ๊ฒ€์ฆ์ด ๋ ˆํฌ์— ์“ฐ๊ธฐ๋ฅผ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ์˜ ์‹ค์ œ ์‚ฌ๋ก€: ๋‹จ์ผ RCA๊ฐ€ ์ž์‹  ์žˆ๊ฒŒ "์ฝ”๋“œ ๋ณ€๊ฒฝ ๋ถˆํ•„์š”"๋กœ ๊ฒฐ๋ก ๋ƒˆ๋˜ ๊ฒƒ์„, ๋…๋ฆฝ ๊ต์ฐจ๊ฒ€์ฆ์ด 2์ธต ๋ณตํ•ฉ ๋ฒ„๊ทธ๋กœ ๋’ค์ง‘์—ˆ์Šต๋‹ˆ๋‹ค.

ADHDev MAGI ์ข…ํ•ฉ ๋ทฐ โ€” ์ฝ”๋””๋„ค์ดํ„ฐ๊ฐ€ ๋…๋ฆฝ์ ์ธ 3๊ฐœ ์—์ด์ „ํŠธ ๋ฆฌํ”Œ๋ฆฌ์นด๋ฅผ ์กฐ์ •ํ•˜์—ฌ ํ•ฉ์˜๋œ ๊ฒƒยท์ด๊ฒฌ์ด ์žˆ๋Š” ๊ฒƒยท๊ฒ€์ฆ์ด ํ•„์š”ํ•œ ์ฃผ์žฅ์„ ํ‘œ์‹œ

๐Ÿ” P2P ์ „์†ก (์‹ ๋ขฐ, ํŽ˜์ด์›” ์•„๋‹˜)

์ฑ„ํŒ…ยท๋ช…๋ นยท์Šคํฌ๋ฆฐ์ƒทยท์›๊ฒฉ ์ž…๋ ฅ์€ ์•”ํ˜ธํ™”๋œ WebRTC ๋ฐ์ดํ„ฐ ์ฑ„๋„์„ ํ†ตํ•ด ๋Œ€์‹œ๋ณด๋“œ์™€ ๋ฐ๋ชฌ ์‚ฌ์ด์—์„œ ์ง์ ‘ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ์‹œ๊ทธ๋„๋ง๊ณผ ๊ฒฝ๋Ÿ‰ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋งŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค โ€” ์ž‘์—… ๋ฐ์ดํ„ฐ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์„œ๋ฒ„์— ์ €์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์„ค๊ณ„์˜ ์‹ ๋ขฐ ์†์„ฑ์ด๋ฉฐ, ์—…์…€์ด ์•„๋‹™๋‹ˆ๋‹ค.

ADHDev ๋ชจ๋ฐ”์ผ ์žฌ๊ฐœ ํ”Œ๋กœ์šฐ โ€” ํฐ์—์„œ ์ €์žฅ๋œ ์„ธ์…˜์„ ๋‹ค์‹œ ์—ฌ๋Š” ํ™”๋ฉด


์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”๊ฐ€

ADHDev๋Š” ์—์ด์ „ํŠธ๋ฅผ ๋Œ€์ฒดํ•˜๊ฑฐ๋‚˜ ์ง์ ‘ spawnํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค โ€” ์ด๋ฏธ ๋จธ์‹ ์— ์„ค์น˜๋œ ์—์ด์ „ํŠธ์— ๋ถ™์–ด์„œ ์ œ์–ด ํ‘œ๋ฉด์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

   ๋ธŒ๋ผ์šฐ์ € / ํฐ
         โ”‚  ์ฑ„ํŒ…, ๋ช…๋ น, ์Šคํฌ๋ฆฐ์ƒท, ์›๊ฒฉ ์ž…๋ ฅ
         โ–ผ
   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”        PTY          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
   โ”‚     ๋ฐ๋ชฌ      โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚ Claude Code, Codex,  โ”‚
   โ”‚  (๋‚ด ๋จธ์‹ )    โ”‚โ—€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚ Cursor CLI, โ€ฆ        โ”‚
   โ”‚               โ”‚        CDP          โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
   โ”‚  ยท providers  โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚ Cursor, VS Code,     โ”‚
   โ”‚  ยท ์„ธ์…˜       โ”‚                     โ”‚ Antigravity, โ€ฆ       โ”‚
   โ”‚  ยท ๋ฉ”์‹œ + ํ  โ”‚       stdio (ACP)   โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
   โ”‚  ยท Refinery   โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚ Goose, Qwen, โ€ฆ       โ”‚
   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ”‚
         โ””โ”€โ”€ git ์›ŒํฌํŠธ๋ฆฌ โ”€โ”€ ๋ณ‘๋ ฌ ํƒœ์Šคํฌ๋‹น ๊ฒฉ๋ฆฌ๋œ ์ฒดํฌ์•„์›ƒ 1๊ฐœ
  • ๋ฐ๋ชฌ์ด ํ†ตํ•ฉ์„ ์†Œ์œ ํ•ฉ๋‹ˆ๋‹ค. provider 4์ข… ์นดํ…Œ๊ณ ๋ฆฌ: cli(PTY), ide(Chrome DevTools Protocol), extension(CDP webview), acp(stdio ๊ธฐ๋ฐ˜ Agent Client Protocol).
  • ์žฅ์ˆ˜ ๋Ÿฐํƒ€์ž„์€ ๋ณ„๋„ ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค. adhdev-sessiond๊ฐ€ PTY๋ฅผ ์†Œ์œ ํ•˜๋ฏ€๋กœ CLI ์„ธ์…˜์ด ๋ฐ๋ชฌ ์žฌ์‹œ์ž‘ยท์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ๊ฒฌ๋”ฅ๋‹ˆ๋‹ค.
  • ์…€ํ”„ํ˜ธ์ŠคํŠธ๋Š” ๋ฐ๋ชฌ๊ณผ ์ง๊ฒฐ๋ฉ๋‹ˆ๋‹ค โ€” localhost:3847์˜ HTTP + WebSocket. ํด๋ผ์šฐ๋“œ ์—๋””์…˜์—์„œ๋Š” ๊ฐ™์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ธŒ๋ผ์šฐ์ €โ†”๋ฐ๋ชฌ WebRTC ๋ฐ์ดํ„ฐ์ฑ„๋„์„ ํƒ€๊ณ , ์„œ๋ฒ„๋Š” ์‹œ๊ทธ๋„๋ง๋งŒ ํ•ฉ๋‹ˆ๋‹ค.

ํƒœ์Šคํฌ๋ฅผ ํ์— ๋„ฃ์œผ๋ฉด ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋Š”๊ฐ€

mesh_enqueue_task  โ†’  SQLite ํ (pending)
                   โ†’  idle ๋…ธ๋“œ๊ฐ€ claim (assigned)
                   โ†’  ์›Œ์ปค ์—์ด์ „ํŠธ๊ฐ€ ์ž๊ธฐ git ์›ŒํฌํŠธ๋ฆฌ์—์„œ ์‹คํ–‰
                   โ†’  completed / failed  โ†’  append-only ์›์žฅ
                   โ†’  Refinery: ๋ ˆํฌ ์ž์ฒด ๊ฒŒ์ดํŠธ โ†’ ํŒจ์น˜ ๋™๋“ฑ์„ฑ โ†’ ff-only ๋จธ์ง€ โ†’ ์ •๋ฆฌ

๋‚˜๋จธ์ง€ ์ „๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋„ค ๊ฐ€์ง€ ์„ฑ์งˆ:

  1. ์ฝ”๋””๋„ค์ดํ„ฐ๋Š” ๋ผ์šฐํŒ…๋งŒ ํ•˜๊ณ  ๊ตฌํ˜„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ฝ๊ณ  ๊ณ ์น˜๋Š” ๋Œ€์‹  ๋ฉ”์‹œ ํˆด์„ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ํ•˜๋ฏ€๋กœ ์ปจํ…์ŠคํŠธ๊ฐ€ ์ž‘๊ฒŒ ์œ ์ง€๋˜๊ณ , ์†Œ์œ ๊ถŒ์ด ๋ฐ๋ชฌ ์žฌ์‹œ์ž‘์„ ๊ฒฌ๋”ฅ๋‹ˆ๋‹ค.
  2. ์•„๋ฌด๊ฒƒ๋„ ํด๋งํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. reconcile ๋ฃจํ”„๊ฐ€ ์™„๋ฃŒยท์Šน์ธยทrefine ์ด๋ฒคํŠธ๋ฅผ ์ฝ”๋””๋„ค์ดํ„ฐ ์„ธ์…˜์— ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ๋ฅผ ๊ธฐ๋‹ค๋ฆด ๋ฟ, ์ƒํƒœ๋ฅผ ๋ฐ˜๋ณต ์กฐํšŒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  3. ์ฆ๊ฑฐ๋Š” git์ด๊ณ , ์—์ด์ „ํŠธ์˜ ๋ง์ด ์•„๋‹™๋‹ˆ๋‹ค. "์™„๋ฃŒ"๋Š” ์›Œ์ปค์˜ ์ž๊ธฐ๋ณด๊ณ ๊ฐ€ ์•„๋‹ˆ๋ผ ์‹ค์ œ git ์ƒํƒœ์™€ ์ปค๋ฐ‹ ์ฒดํฌํฌ์ธํŠธ๋กœ ๊ฒ€์ฆ๋ฉ๋‹ˆ๋‹ค.
  4. ์• ๋งคํ•˜๋ฉด ํŒŒ์ดํ”„๋ผ์ธ์ด ๋ฉˆ์ถฅ๋‹ˆ๋‹ค. Refinery๋Š” force-push๋ฅผ ์ ˆ๋Œ€ ํ•˜์ง€ ์•Š๊ณ , ํŒ๋‹จํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์€ ๋จธ์ง€ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ๋žŒ์—๊ฒŒ ๋„˜๊น๋‹ˆ๋‹ค.

๋” ๊นŠ์ด: Repo Mesh ๊ฐœ๋ฐœ์ž ๊ฐ€์ด๋“œ ยท session-host


์„ค์น˜

์š”๊ตฌ์‚ฌํ•ญ: Node.js 22.x(์•„๋ž˜ Windows ์ฐธ๊ณ ), git, ๊ทธ๋ฆฌ๊ณ  ์ด๋ฏธ ์„ค์น˜ยท์ธ์ฆ๋œ ์ฝ”๋”ฉ ์—์ด์ „ํŠธ ์ตœ์†Œ 1๊ฐœ โ€” ADHDev๋Š” ์ด๋ฏธ ์“ฐ๊ณ  ์žˆ๋Š” CLI๋ฅผ ๊ตฌ๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ถŒ์žฅ โ€” adhdev CLI:

npm install -g adhdev
adhdev standalone

**http://localhost:3847**์„ ์—ฌ์„ธ์š”.

standalone ํŒจํ‚ค์ง€๋กœ ์ง์ ‘ ์…€ํ”„ํ˜ธ์ŠคํŠธ:

npm install -g @adhdev/daemon-standalone
adhdev-standalone

๋ชจ๋“  ๊ฒƒ์ด ๋กœ์ปฌ ๋ฐ๋ชฌ์œผ๋กœ ๋จธ์‹ ์—์„œ ์‹คํ–‰๋˜๋ฉฐ ๋‚ด์žฅ ๋Œ€์‹œ๋ณด๋“œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค โ€” standalone ๊ฒฝ๋กœ์—๋Š” ํด๋ผ์šฐ๋“œ ๊ณ„์ •์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์œ ์šฉํ•œ ํ”Œ๋ž˜๊ทธ:

adhdev standalone --host          # ๋™์ผ LAN์˜ ๋‹ค๋ฅธ ๊ธฐ๊ธฐ ์ ‘๊ทผ ํ—ˆ์šฉ
adhdev standalone --port 8080     # ์ปค์Šคํ…€ ํฌํŠธ
adhdev standalone --token mysecret # ์Šคํฌ๋ฆฝํŠธ/์šด์˜์ž ์ ‘๊ทผ์„ ์œ„ํ•œ ํ† ํฐ ์ธ์ฆ
adhdev standalone --no-open       # ๋ธŒ๋ผ์šฐ์ € ์ž๋™ ์—ด๊ธฐ ๋น„ํ™œ์„ฑํ™”

Standalone์€ ๊ธฐ๋ณธ์ ์œผ๋กœ localhost ์ „์šฉ์ž…๋‹ˆ๋‹ค. LAN ์ ‘๊ทผ์„ ์œ„ํ•ด 0.0.0.0์— ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๊ฒฝ์šฐ, ํ† ํฐ ์ธ์ฆ์ด๋‚˜ ๋Œ€์‹œ๋ณด๋“œ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์œผ๋ฉด ๋Œ€์‹œ๋ณด๋“œ๊ฐ€ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

Windows ์ฐธ๊ณ : Windows + Node.js 24+๋Š” ํ˜„์žฌ ์ผ๋ฐ˜ ์‹œ์ž‘/์„ค์น˜ ๊ฒฝ๋กœ์—์„œ ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค. Node.js 22.x ๋˜๋Š” ๋ฌธ์„œ์— ์„ค๋ช…๋œ PowerShell ์„ค์น˜ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

์ •๊ทœ ์…€ํ”„ํ˜ธ์ŠคํŠธ ๋ฌธ์„œ:

์ฒ˜์Œ 5๋ถ„

  1. ๋ฐ๋ชฌ ์‹คํ–‰ โ€” adhdev standalone ํ›„ http://localhost:3847 ์—ด๊ธฐ. ๋Œ€์‹œ๋ณด๋“œ๊ฐ€ ์ด ๋จธ์‹ ์— ์„ค์น˜๋œ ์—์ด์ „ํŠธ๋ฅผ ์ž๋™ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  2. ์„ธ์…˜ ์‹œ์ž‘. provider(์˜ˆ: Claude Code)์™€ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ณจ๋ผ ์‹œ์ž‘ํ•˜์„ธ์š”. ์ฑ„ํŒ…์œผ๋กœ ์ง€์‹œํ•˜๊ฑฐ๋‚˜ ์›์‹œ ํ„ฐ๋ฏธ๋„๋กœ ์ง€์ผœ๋ณผ ์ˆ˜ ์žˆ๊ณ , ๋‘˜ ์‚ฌ์ด๋ฅผ ํ† ๊ธ€ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ž‘์—…์„ ๋ณด๋‚ด๊ณ  ์ž๋ฆฌ๋ฅผ ๋น„์šฐ์„ธ์š”. ์—์ด์ „ํŠธ๊ฐ€ ๊ถŒํ•œ ์š”์ฒญ์— ๊ฑธ๋ฆฌ๋ฉด, ๋ณด๊ณ  ์žˆ์ง€ ์•Š์€ ํ„ฐ๋ฏธ๋„์„ ๋ง‰๋Š” ๋Œ€์‹  ๋Œ€์‹œ๋ณด๋“œ activity inbox์— ์Šน์ธ ํ•ญ๋ชฉ์œผ๋กœ ์˜ฌ๋ผ์˜ต๋‹ˆ๋‹ค. (๊ทธ ์Šน์ธ์„ ํฐ ํ‘ธ์‹œ๋กœ ๋ฐ›๋Š” ๊ฒƒ์€ ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.)
  4. ์„ค๋ช…์œผ๋กœ ๋ถ€์กฑํ•˜๋ฉด ์Šคํฌ๋ฆฐ์ƒท์„ ์ฑ„ํŒ…์— ๋ถ™์—ฌ๋„ฃ์œผ์„ธ์š” โ€” ์—์ด์ „ํŠธ ์ปจํ…์ŠคํŠธ๋กœ ๋ฐ”๋กœ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.
  5. ๋จธ์‹  ํ•œ ๋Œ€๋กœ ๋ฉ”์‹œ๋ฅผ ์‹œํ—˜ํ•ด๋ณด์„ธ์š”. /mesh์—์„œ ๋ ˆํฌ์— ๋ฐ”์ธ๋”ฉ๋œ ๋ฉ”์‹œ๋ฅผ ๋งŒ๋“ค๊ณ  ์›ŒํฌํŠธ๋ฆฌ ๋…ธ๋“œ๋ฅผ cloneํ•œ ๋’ค ํƒœ์Šคํฌ๋ฅผ ํ์— ๋„ฃ๊ณ  ์›์žฅ์„ ๋ณด์„ธ์š”: ๋””์ŠคํŒจ์น˜ โ†’ ์™„๋ฃŒ โ†’ Refinery โ†’ main์œผ๋กœ fast-forward. ์—ฌ๊ธฐ๊นŒ์ง€ ์ „๋ถ€ ์…€ํ”„ํ˜ธ์ŠคํŠธ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ๋‘ ๋ฒˆ์งธ ๋จธ์‹ ์œผ๋กœ ๋„˜์–ด๊ฐˆ ๋•Œ๋งŒ ํด๋ผ์šฐ๋“œ ์—๋””์…˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ง‰ํžˆ๋ฉด ์…€ํ”„ํ˜ธ์ŠคํŠธ ์„ค์ • ๊ฐ€์ด๋“œ๊ฐ€ ํฌํŠธยทLAN ๋…ธ์ถœยทprovider ๊ฐ์ง€ ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.


์ง€์› ์—์ด์ „ํŠธ

ADHDev๋Š” ๋„ค ๊ฐ€์ง€ ํ”„๋กœ๋ฐ”์ด๋” ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ฝ”๋”ฉ ์—์ด์ „ํŠธ์™€ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค โ€” ide (CDP), extension (CDP ์›น๋ทฐ), cli (PTY), acp (stdio๋ฅผ ํ†ตํ•œ Agent Client Protocol).

CLI ์—์ด์ „ํŠธ (PTY ๊ตฌ๋™, ๋Œ€์‹œ๋ณด๋“œ์—์„œ ์‹คํ–‰ยท์ œ์–ด):

์—์ด์ „ํŠธ ํ”„๋กœ๋ฐ”์ด๋”
Claude Code cli/claude-cli
Codex CLI cli/codex-cli
Cursor Agent cli/cursor-cli
Google Antigravity CLI cli/antigravity-cli
Hermes Agent cli/hermes-cli
Kimi Code cli/kimi
Opencode cli/opencode

IDE (Chrome DevTools Protocol ๊ฒฝ์œ ): Cursor, Google Antigravity, VS Code, VSCodium, Kiro, Windsurf, Trae, PearAI.

IDE ์ต์Šคํ…์…˜ (CDP ์›น๋ทฐ): Claude Code (VS Code), Codex, Cline, Roo Code.

ACP ์—์ด์ „ํŠธ (stdio, Agent Client Protocol): 32๊ฐœ ๋‚ด์žฅ ์–ด๋Œ‘ํ„ฐ โ€” Gemini CLI, Qwen Code, Goose, GitHub Copilot, Cursor (ACP), Claude Agent, Codex CLI, Kimi CLI, Cline, Kilo, Junie, OpenHands ๋“ฑ.

๋‚ด์žฅ โ‰  ๊ฒ€์ฆ๋จ. ADHDev๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ์ธ๋ฒคํ† ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์นดํƒˆ๋กœ๊ทธ์— ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ํ†ตํ•ฉ์ด ์กด์žฌํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด์ง€, ์—”๋“œ-ํˆฌ-์—”๋“œ๋กœ ๊ฒ€์ฆ๋˜์—ˆ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ง€์› ์ˆ˜์ค€์€ ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ ์ •์ฑ…์„ ์ฐธ์กฐํ•˜์„ธ์š”:

ADHDev๋Š” ์—์ด์ „ํŠธ์˜ API ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค โ€” ๊ฐ ๋„๊ตฌ๊ฐ€ ์ž์ฒด ์ธ์ฆ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ADHDev๋Š” ์„ค์น˜ ์ƒํƒœ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

์ง์ ‘ ์—์ด์ „ํŠธ ์ถ”๊ฐ€ํ•˜๊ธฐ

provider๋Š” ํฌํฌํ•ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. provider๋Š” ๋ฒ„์ „์ด ์žˆ๋Š” ๋งค๋‹ˆํŽ˜์ŠคํŠธ(provider.v1.json)์™€, ๋„๊ตฌ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ ยท์‹คํ–‰ํ•˜๊ณ ยท์ถœ๋ ฅ์„ ์ฑ„ํŒ… ํ„ด์œผ๋กœ ํŒŒ์‹ฑํ•˜๊ณ ยท์Šน์ธ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ธ์‹ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ธฐ์ˆ ํ•œ ์Šคํฌ๋ฆฝํŠธ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ~/.adhdev/providers/์— ๋„ฃ์œผ๋ฉด ๋Œ€์‹œ๋ณด๋“œ๊ฐ€ ์ง‘์–ด๊ฐ‘๋‹ˆ๋‹ค โ€” ๊ฐ™์€ ์ด๋ฆ„์˜ ๋‚ด์žฅ provider๋ณด๋‹ค ์‚ฌ์šฉ์ž ์˜ค๋ฒ„๋ผ์ด๋“œ๊ฐ€ ์šฐ์„ ํ•˜๋ฏ€๋กœ, ๋ฆด๋ฆฌ์Šค๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๊นจ์ง„ ํŒŒ์„œ๋ฅผ ๋กœ์ปฌ์—์„œ ๊ณ ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ด ๋ ˆํฌ์˜ web-devconsole์€ ๋ผ์ด๋ธŒ ์„ธ์…˜์— ๋Œ€๊ณ  provider ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑยทํ…Œ์ŠคํŠธํ•˜๋Š” Monaco ๊ธฐ๋ฐ˜ ์—๋””ํ„ฐ์ž…๋‹ˆ๋‹ค.
  • ๊ฒ€์ฆ ํ‹ฐ์–ด๋Š” ๋ช…์‹œ์ ์ž…๋‹ˆ๋‹ค: Verified / Partial / Unverified. "๋‚ด์žฅ"์€ ํ†ตํ•ฉ์ด ์กด์žฌํ•œ๋‹ค๋Š” ๋œป์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.
  • ๊ฐ€์ด๋“œ: Provider SDK ยท Provider ๊ฐ€์ด๋“œ

์นดํƒˆ๋กœ๊ทธ์— ์—†๋Š” ์—์ด์ „ํŠธ๋ฅผ ๋™์ž‘์‹œ์ผฐ๋‹ค๋ฉด, ๊ทธ๊ฒƒ์ด ์ด ๋ ˆํฌ์— ๊ฐ€์žฅ ์œ ์šฉํ•œ ๊ธฐ์—ฌ์ž…๋‹ˆ๋‹ค.


Star ํžˆ์Šคํ† ๋ฆฌ

Star History Chart


์ปค๋ฎค๋‹ˆํ‹ฐ


์ด ๋ ˆํฌ์— ํฌํ•จ๋œ ๊ฒƒ

์ด๊ฒƒ์€ ์˜คํ”ˆ์†Œ์Šค ์…€ํ”„ํ˜ธ์ŠคํŠธ ์—๋””์…˜(AGPL-3.0)์ž…๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŒ… ํด๋ผ์šฐ๋“œ ์šด์˜์€ ์ด ๋ ˆํฌ์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์…€ํ”„ํ˜ธ์ŠคํŠธ๋Š” ์„ธ ๊ฐ€์ง€ ๋กœ์ปฌ ๋ ˆ์ด์–ด๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค:

  1. daemon-standalone์€ ๋กœ์ปฌ HTTP/WebSocket ์„œ๋ฒ„๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์›น UI๋ฅผ ์„œ๋น™ํ•ฉ๋‹ˆ๋‹ค.
  2. daemon-core๋Š” IDE, CLI, ์ต์Šคํ…์…˜, ACP ํ†ตํ•ฉ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  3. session-host-daemon (adhdev-sessiond)์€ ๋ฐ๋ชฌ ์žฌ์‹œ์ž‘ ํ›„์—๋„ CLI ์„ธ์…˜์ด ์‚ด์•„๋‚จ์„ ์ˆ˜ ์žˆ๋„๋ก ์žฅ๊ธฐ PTY ๋Ÿฐํƒ€์ž„์„ ์†Œ์œ ํ•ฉ๋‹ˆ๋‹ค.
๊ฒฝ๋กœ ๋ชฉ์ 
packages/daemon-core ๊ณต์œ  ์—”์ง„: ํ”„๋กœ๋ฐ”์ด๋”, CDP, ๋ช…๋ น ๋ผ์šฐํŒ…, ์„ธ์…˜/๋Ÿฐํƒ€์ž„ ์ƒํƒœ
packages/daemon-standalone ๋กœ์ปฌ HTTP/WS ์„œ๋ฒ„ ๋ฐ ๋ฒˆ๋“ค standalone UI
packages/web-core ๊ณต์œ  React ํŽ˜์ด์ง€, ์ปดํฌ๋„ŒํŠธ, ํ›…, ์ „์†ก ์ถ”์ƒํ™”
packages/web-standalone Standalone ๋Œ€์‹œ๋ณด๋“œ ์•ฑ
packages/web-devconsole ํ”„๋กœ๋ฐ”์ด๋”/๊ฐœ๋ฐœ ์ง„๋‹จ UI
packages/session-host-core ์„ธ์…˜ ํ˜ธ์ŠคํŠธ ํ”„๋กœํ† ์ฝœ, ํด๋ผ์ด์–ธํŠธ, ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ, ๋ง ๋ฒ„ํผ, ๋ ˆ์ด๋ธ”
packages/session-host-daemon ์žฅ๊ธฐ PTY ๋Ÿฐํƒ€์ž„ ์†Œ์œ  ํ”„๋กœ์„ธ์Šค
packages/terminal-mux-* ๋กœ์ปฌ ํ„ฐ๋ฏธ๋„ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์„œ ์Šคํƒ
packages/terminal-render-web ๋ธŒ๋ผ์šฐ์ € ์‚ฌ์ด๋“œ ํ„ฐ๋ฏธ๋„ ๋ Œ๋”๋ง ์ง€์›
packages/ghostty-vt-node ๋Ÿฐํƒ€์ž„/๋ฉ€ํ‹ฐํ”Œ๋ ‰์„œ ๋ ˆ์ด์–ด์—์„œ ์‚ฌ์šฉํ•˜๋Š” Ghostty VT ๋ฐ”์ธ๋”ฉ

Standalone API ์„œํ”ผ์Šค

  • GET /api/v1/status โ€” sessions[] ๋ฐฐ์—ด์ด ์‹ ๋ขฐ์˜ ๊ทผ๊ฑฐ
  • POST /api/v1/command
  • GET /api/v1/runtime/:sessionId/snapshot
  • GET /api/v1/runtime/:sessionId/events
  • GET /api/v1/mux/:workspace/state
  • POST /api/v1/mux/:workspace/control
  • ws://localhost:3847/ws

๋ ˆํผ๋Ÿฐ์Šค: docs/openapi.yml ยท ์…€ํ”„ํ˜ธ์ŠคํŠธ API ๋ฌธ์„œ


์†Œ์Šค์—์„œ ๊ฐœ๋ฐœ

git clone https://github.com/vilmire/adhdev.git
cd adhdev
npm install
npm run build
npm run dev

์œ ์šฉํ•œ ์›Œํฌ์ŠคํŽ˜์ด์Šค ์Šคํฌ๋ฆฝํŠธ:

npm run dev:daemon
npm run dev:web
npm run dev -w packages/web-devconsole

OSS vs ํด๋ผ์šฐ๋“œ

์—”์ง„์€ ์˜คํ”ˆ์†Œ์Šค์ž…๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ๊ฐ€ ๋”ํ•˜๋Š” ๊ฒƒ์€ ๋„๋‹ฌ ๊ณ„์ธต โ€” ๊ณ„์ •, 2๋Œ€ ์ด์ƒ์˜ ๋จธ์‹ , ์ธํ„ฐ๋„ท ๋„ˆ๋จธ ์›๊ฒฉ ์ ‘์†, ํ‘ธ์‹œ์ž…๋‹ˆ๋‹ค.

OSS (์…€ํ”„ํ˜ธ์ŠคํŠธ) ํด๋ผ์šฐ๋“œ (adhf.dev)
๋Œ€์‹œ๋ณด๋“œ localhost:3847 adhf.dev, ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €ยทํฐ
๊ณ„์ • ํ•„์š” โŒ ์ธ์ฆ ์—†์Œ OAuth (GitHub / Google)
๋จธ์‹  ์ˆ˜ 1๋Œ€ ํ”Œ๋žœ๋ณ„ 1 / 2 / 5๋Œ€
๋„๋‹ฌ ๋ฒ”์œ„ localhost, --host๋กœ LAN๊นŒ์ง€ ์–ด๋””์„œ๋“  (P2P WebRTC + ๋ง‰ํžŒ ๋„คํŠธ์›Œํฌ์šฉ TURN)
๋ชจ๋“  provider (CLI / IDE / extension / ACP) โœ… โœ…
Repo MeshยทRefineryยทMAGIยท์›ŒํฌํŠธ๋ฆฌ ๋…ธ๋“œ โœ… ๋‹จ์ผ ๋จธ์‹  ๋ฉ”์‹œ๋Š” ์™„์ „ํžˆ ๋กœ์ปฌ ๋™์ž‘ โœ…
๋จธ์‹  ๊ฐ„ ๋ฉ”์‹œ โŒ (๋จธ์‹  ๊ฐ„ ๋ฆด๋ ˆ์ด ์—†์Œ) โœ…
ํ‘ธ์‹œ ์•Œ๋ฆผ (์Šน์ธ / ์™„๋ฃŒ / ์—๋Ÿฌ) โŒ โœ…
ํ˜ธ์ŠคํŒ… REST API + API ํ‚ค โŒ (๋กœ์ปฌ API๋งŒ) โœ…
๊ฐ€๊ฒฉ ๋ฌด๋ฃŒ, ์ฟผํ„ฐ ์—†์Œ Free / Pro / Ultra

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


๋ผ์ด์„ ์Šค

AGPL-3.0-or-later. LICENSE๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.