# [[Open Harness]] ## ๐Ÿ“Œ Brief Summary 'Open Harness'๋Š” AI ์—์ด์ „ํŠธ๋ฅผ ๊ตฌ๋™ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋œ ์˜คํ”ˆ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ ํ•˜๋„ค์Šค ๋ฐ ๋Ÿฐํƒ€์ž„ ํ”„๋กœ์ ํŠธ๋“ค์„ ์˜๋ฏธํ•œ๋‹ค [1-3]. ์ œ๊ณต๋œ ์†Œ์Šค์— ๋”ฐ๋ฅด๋ฉด ๋ช…์นญ์€ ๊ฐ™์ง€๋งŒ ๋ชฉ์ ๊ณผ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ํ”„๋กœ์ ํŠธ(HKUDS์˜ ๋Ÿฐํƒ€์ž„, MaxGfeller์˜ ์ƒํ˜ธ์šด์šฉ์„ฑ SDK, ryaneggz์˜ ์ƒŒ๋“œ๋ฐ•์Šค)๊ฐ€ ์กด์žฌํ•œ๋‹ค [1, 3]. ์ด ๋„๊ตฌ๋“ค์€ ๊ฐ๊ฐ ์ƒ์‚ฐ ํ™˜๊ฒฝ ํ•˜๋„ค์Šค์˜ ๋‚ด๋ถ€ ์ž‘๋™ ๋ฐฉ์‹ ๊ฒ€์‚ฌ, ํ”„๋ ˆ์ž„์›Œํฌ ์ข…์†์„ฑ ํƒˆํ”ผ, ๊ทธ๋ฆฌ๊ณ  ๋…๋ฆฝ๋œ ๋‹จ์ผ ํ”„๋กœ์ ํŠธ ์‹คํ–‰ ํ™˜๊ฒฝ ์ œ๊ณต์ด๋ผ๋Š” ๊ณ ์œ ํ•œ ์ธํ”„๋ผ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค [2-4]. ## ๐Ÿ“– Core Content * **OpenHarness (HKUDS):** ํ™์ฝฉ๋Œ€ํ•™๊ต ๋ฐ์ดํ„ฐ ์‹œ์Šคํ…œ ๊ทธ๋ฃน(HKUDS)์—์„œ ๊ฐœ๋ฐœํ•œ CLI ์ค‘์‹ฌ์˜ ์˜คํ”ˆ์†Œ์Šค ์—์ด์ „ํŠธ ๋Ÿฐํƒ€์ž„์ด๋‹ค [2, 5]. ์ƒ์‚ฐ ํ™˜๊ฒฝ์˜ ์—์ด์ „ํŠธ ํ•˜๋„ค์Šค ๋‚ด๋ถ€ ์ž‘๋™ ๋ฐฉ์‹์„ ๊ฒ€์‚ฌํ•˜๊ณ ์ž ํ•˜๋Š” ์—ฐ๊ตฌ์ž์™€ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ๋‹ค [2]. * ํŒŒ์ผ, ์…ธ, ์›น ๊ฒ€์ƒ‰, MCP ๋“ฑ 43๊ฐœ ์ด์ƒ์˜ ๋‚ด์žฅ ๋„๊ตฌ๋ฅผ ๊ฐ–์ถ”๊ณ  ์žˆ์œผ๋ฉฐ, ์ŠคํŠธ๋ฆฌ๋ฐ ๋„๊ตฌ ํ˜ธ์ถœ ์ฃผ๊ธฐ, ๋‹ค๋‹จ๊ณ„ ๊ถŒํ•œ ๋ชจ๋“œ, `MEMORY.md`๋ฅผ ํ†ตํ•œ ์ƒํƒœ ๋ณด์กด ๋ฐ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—… ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•œ๋‹ค [2, 5, 6]. * ์ด ํ”„๋กœ์ ํŠธ๋Š” 'ohmo'๋ผ๋Š” ๋‚ด์žฅ ๊ฐœ์ธ์šฉ AI ์—์ด์ „ํŠธ ์•ฑ์„ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋ชจ๋ธ ์ถ”๋ก ๊ณผ ๋„๊ตฌ ์‹คํ–‰์˜ ํˆฌ๋ช…ํ•œ ๊ฐ€์‹œ์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค [2, 7, 8]. * **OpenHarness.ai (MaxGfeller):** ํ•˜๋„ค์Šค ํ”„๋ ˆ์ž„์›Œํฌ ๊ฐ„์˜ ์ข…์†์„ฑ(Lock-in)์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋œ ์ƒํ˜ธ์šด์šฉ์„ฑ SDK ๊ณ„์ธต์ด๋‹ค [4]. * ์—์ด์ „ํŠธ ์ฝ”๋“œ๋ฅผ ํ•œ ๋ฒˆ ์ž‘์„ฑํ•˜๋ฉด ์ˆ˜์ • ์—†์ด Anthropic SDK, Goose, LangChain, Letta, Claude Code ๋“ฑ ์—ฌ๋Ÿฌ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์— ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ์œ ๋‹ˆ๋ฒ„์„ค API๋ฅผ ์ œ๊ณตํ•œ๋‹ค [4, 9]. * ์—์ด์ „ํŠธ ๋‚ด๋ถ€์—์„œ ์‹คํ–‰๋˜๋Š” ๋Ÿฐํƒ€์ž„์ด๋ผ๊ธฐ๋ณด๋‹ค๋Š” ์ฝ”๋“œ๋ฅผ ๋‹ค์–‘ํ•œ ๋Ÿฐํƒ€์ž„ ๊ฐ„์— ์ด์‹ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ์ถ”์ƒํ™” ๊ณ„์ธต์ด๋‹ค [4]. * **Open Harness (ryaneggz):** ๋‹จ์ผ ํ”„๋กœ์ ํŠธ(๋ฆฌํฌ์ง€ํ† ๋ฆฌ)๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋œ Docker ๊ธฐ๋ฐ˜์˜ ์—์ด์ „ํŠธ ํ•˜๋„ค์Šค ๋ฐ ๋‹ค์ค‘ ๊ณ„์ธต ๊ฒฉ๋ฆฌ ์ƒŒ๋“œ๋ฐ•์Šค์ด๋‹ค [3]. * "์šฐ๋ฆฌ๊ฐ€ ์ƒŒ๋“œ๋ฐ•์Šค๋ฅผ ์ œ๊ณตํ•  ํ…Œ๋‹ˆ, ๋‹น์‹ ์€ ํ•˜๋„ค์Šค๋ฅผ ์„ ํƒํ•˜๋ผ(BYOH)"๋Š” ์ฒ ํ•™์„ ๊ฐ€์ง„๋‹ค [3]. * ํ˜ธ์ŠคํŠธ์˜ ์ข…์†์„ฑ์„ Docker ํ•˜๋‚˜๋กœ ์ œํ•œํ•˜๋ฉฐ, ๋งˆํฌ๋‹ค์šด(`crons/*.md`)์œผ๋กœ ์ •์˜๋œ ์ผ์ •์— ๋”ฐ๋ผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์—์ด์ „ํŠธ๋ฅผ ๊ตฌ๋™์‹œํ‚ค๋Š” 'croner' ๋Ÿฐํƒ€์ž„์„ ํŠน์ง•์œผ๋กœ ํ•œ๋‹ค [3, 10]. ## โš–๏ธ Trade-offs & Caveats * **๋ฐ์ดํ„ฐ ํ’ˆ์งˆ ๋ฐ ๊ฑฐ๋ฒ„๋„Œ์Šค ์ œ์–ด ๋ถ€์žฌ:** HKUDS์˜ ๋Ÿฐํƒ€์ž„๊ณผ MaxGfeller์˜ SDK ๋ชจ๋‘ ์—์ด์ „ํŠธ๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ž์ฒด๋ฅผ ๊ฒ€์ฆ, ์ธ์ฆํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ ๊ณ„๋ณด๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ฐ์ดํ„ฐ ํ’ˆ์งˆ ๊ฑฐ๋ฒ„๋„Œ์Šค ๊ธฐ๋Šฅ์ด ๊ทผ๋ณธ์ ์œผ๋กœ ๊ฒฐ์—ฌ๋˜์–ด ์žˆ๋‹ค [4, 11]. * **HKUDS OpenHarness์˜ ์ œ์•ฝ:** ์—ฐ๊ตฌ ์ค‘์‹ฌ์˜ ์ดˆ๊ธฐ ๋ฆด๋ฆฌ์Šค์ด๋ฏ€๋กœ, ์ƒ์šฉ ํ”„๋ ˆ์ž„์›Œํฌ ๋Œ€์•ˆ๋“ค์— ๋น„ํ•ด ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ์šฉ ๊ด€๋ฆฌ ๋„๊ตฌ๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค [12]. ๋˜ํ•œ CLI ์šฐ์„  ์„ค๊ณ„ ๋ฐฉ์‹์ด๋ฏ€๋กœ ์ข…ํ•ฉ์ ์ธ ์‹œ๊ฐ์  ์ธํ„ฐํŽ˜์ด์Šค ํ™˜๊ฒฝ์„ ๊ธฐ๋Œ€ํ•˜๊ธฐ ์–ด๋ ต๋‹ค [12]. * **MaxGfeller OpenHarness.ai์˜ ์ œ์•ฝ:** ์ด ํ”„๋กœ์ ํŠธ๋Š” ์˜ค์ง '์ด์‹์„ฑ(Portability)' ๋ฌธ์ œ๋งŒ ํ•ด๊ฒฐํ•˜๋ฏ€๋กœ, ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์ด๋‚˜ ๋ฉ”๋ชจ๋ฆฌ, ๊ด€์ฐฐ ๊ฐ€๋Šฅ์„ฑ(Observability) ๊ธฐ๋Šฅ์€ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค [9]. ๋˜ํ•œ ์ง€์›๋˜๋Š” ์–ด๋Œ‘ํ„ฐ ๋ชฉ๋ก์— ์ „์ ์œผ๋กœ ์˜์กดํ•ด์•ผ ํ•˜๋ฉฐ, ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ทœ๋ชจ๊ฐ€ ์ž‘์•„ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ทœ๋ชจ์—์„œ์˜ ์ƒ์šฉ ๊ฒ€์ฆ์ด ๋ถ€์กฑํ•˜๋‹ค [9]. * **ryaneggz Open Harness์˜ ์ œ์•ฝ:** ๊ตฌ์กฐ์ ์œผ๋กœ ๋‹ค์ค‘ ํ…Œ๋„ŒํŠธ(Multi-tenant) ๋น„๊ต ํ™˜๊ฒฝ์ด ์•„๋‹Œ, ๋‹จ์ผ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฐ ๋‹จ์ผ ์ƒŒ๋“œ๋ฐ•์Šค ์ „์šฉ์œผ๋กœ ์—„๊ฒฉํ•˜๊ฒŒ ์ œํ•œ๋˜์–ด ์žˆ๋‹ค [3]. ์‚ฌ์šฉ์„ ์œ„ํ•ด์„œ๋Š” Docker ํ˜ธ์ŠคํŠธ ์ข…์†์„ฑ์ด ํ•„์ˆ˜์ ์œผ๋กœ ์š”๊ตฌ๋œ๋‹ค [3]. --- *Last updated: 2026-05-05*