ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
I built an open-source project OpenHarness๐Ÿชผ
Dev.toDev.to
DevOps

17๊ฐœ ๋„๊ตฌ์™€ 16๊ฐœ ์Šฌ๋ž˜์‹œ ๋ช…๋ น์–ด๋ฅผ ๊ฐ–์ถ˜ ๋กœ์ปฌ ์ฝ”๋“œ ์—์ด์ „ํŠธ๋กœ ํด๋ผ์šฐ๋“œ ์˜์กด ์—†์ด AI ํŽ˜์–ดํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅ

I built an open-source project OpenHarness๐Ÿชผ

Zhijie Wong2026๋…„ 4์›” 1์ผ1๋ถ„intermediate

Context

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

Technical Solution

  • OpenHarness๊ฐ€ 17๊ฐœ ๋„๊ตฌ(file read/edit/write, bash, grep, web search, task management, jupyter notebooks, sub-agents)๋ฅผ ๋ช…๋ นํ˜•์œผ๋กœ ์‹คํ–‰ํ•œ๋‹ค
  • 16๊ฐœ ์Šฌ๋ž˜์‹œ ๋ช…๋ น์–ด(/diff, /undo, /commit, /cost, /plan, /review)๋ฅผ ์ง€์›ํ•œ๋‹ค
  • TypeScript์™€ React+Ink ์กฐํ•ฉ์œผ๋กœ ํ„ฐ๋ฏธ๋„ UI์™€ Markdown ๋ Œ๋”๋ง์„ ๊ตฌํ˜„ํ–ˆ๋‹ค
  • Zod๋กœ ๋„๊ตฌ ์Šคํ‚ค๋งˆ ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค
  • Ollama, OpenAI, Anthropic, Deepseek, Qwen ๋“ฑ OpenAI-compatible API์™€ ์—ฐ๋™ํ•œ๋‹ค

Impact

๋กœ์ปฌ Ollama ๋ชจ๋ธ ์‚ฌ์šฉ ์‹œ API ๋น„์šฉ ์—†์ด ๋ฌด๋ฃŒ ํ”„๋ผ์ด๋น— ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ• ๊ฐ€๋Šฅ

Key Takeaway

Git-safe ์•„ํ‚คํ…์ฒ˜๋กœ AI ํŽธ์ง‘ ๊ฒฐ๊ณผ๋ฌผ์„ ์ž๋™ ์ปค๋ฐ‹ํ•˜๋ฉด ์•ˆ์ „ํ•˜๊ฒŒ ๋ณ€๊ฒฝ ์ด๋ ฅ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์ฆ‰์‹œ ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ๋‹ค


๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ TypeScript ๊ธฐ๋ฐ˜ AI ์ฝ”๋“œ ์—์ด์ „ํŠธ๋ฅผ Ink๋กœ ๊ตฌํ˜„ ์‹œ ํ„ฐ๋ฏธ๋„ ์นœํ™”์  Markdown UI์™€ Git ์ž๋™ ์ปค๋ฐ‹์„ ํ†ตํ•ฉํ•˜์—ฌ ์•ˆ์ „ํ•˜๊ณ  ๋น„์šฉ ์—†๋Š” ๊ฐœ๋ฐœ ์ž๋™ํ™” ๊ฐ€๋Šฅ

์›๋ฌธ ์ฝ๊ธฐ