AI ๊ธฐ๋ฐ ์ํํธ์จ์ด ๊ฐ๋ฐ ์์ด์ ํธ ํ๋ซํผ์ธ OpenHands(์ด์ OpenDevin)์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค.
OpenHands ์์ด์ ํธ๋ ์ธ๊ฐ ๊ฐ๋ฐ์๊ฐ ํ ์ ์๋ ๋ชจ๋ ์์ ์ ์ํํ ์ ์์ต๋๋ค: ์ฝ๋ ์์ , ๋ช ๋ น ์คํ, ์น ๊ฒ์, API ํธ์ถ, ๊ทธ๋ฆฌ๊ณ ๋คโStackOverflow์์ ์ฝ๋ ์ค๋ํซ์ ๋ณต์ฌํ๋ ๊ฒ๊น์ง ๊ฐ๋ฅํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ docs.all-hands.dev์์ ํ์ธํ๊ฑฐ๋, ์์ํ๋ ค๋ฉด OpenHands Cloud์ ๊ฐ์ ํ์ธ์.
[!IMPORTANT] ์ ๋ฌด์ OpenHands๋ฅผ ์ฌ์ฉํ์๋์? ํจ๊ป ์ด์ผ๊ธฐํ๊ณ ์ถ์ต๋๋ค! ์ด ๊ฐ๋จํ ์์์ ์์ฑํ์ฌ ๋์์ธ ํํธ๋ ํ๋ก๊ทธ๋จ์ ์ฐธ์ฌํ์๋ฉด ์์ฉ ๊ธฐ๋ฅ์ ์กฐ๊ธฐ์ ์ด์ฉํ ์ ์๊ณ ์ ํ ๋ก๋๋งต์ ๋ํ ์๊ฒฌ์ ์ ๊ณตํ ๊ธฐํ๊ฐ ์ฃผ์ด์ง๋๋ค.
OpenHands๋ฅผ ์์ํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ OpenHands Cloud๋ฅผ ์ด์ฉํ๋ ๊ฒ์ ๋๋ค. ์ ๊ท ์ฌ์ฉ์์๊ฒ๋ $50 ์๋น์ ๋ฌด๋ฃ ํฌ๋ ๋ง์ด ์ ๊ณต๋ฉ๋๋ค.
OpenHands๋ Docker๋ฅผ ์ฌ์ฉํ์ฌ ๋ก์ปฌ ์์คํ ์์๋ ์คํํ ์ ์์ต๋๋ค. ์์คํ ์๊ตฌ ์ฌํญ ๋ฐ ์์ธํ ์ ๋ณด๋ OpenHands ์คํ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.
[!WARNING] ๊ณต๊ฐ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉ ์ค์ด์ ๊ฐ์? ๊ฐํ๋ Docker ์ค์น ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ฌ ๋คํธ์ํฌ ๋ฐ์ธ๋ฉ ์ ํ ๋ฐ ์ถ๊ฐ ๋ณด์ ์กฐ์น๋ฅผ ๊ตฌํํ์ฌ ๋ฐฐํฌ๋ฅผ ๋ณดํธํ์ธ์.
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.44-nikolaik
docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.44-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands:/.openhands \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.44
์ฐธ๊ณ : ๋ฒ์ 0.44 ์ด์ ์ OpenHands๋ฅผ ์ฌ์ฉํ์ จ๋ค๋ฉด, ๋ํ ๊ธฐ๋ก์ ์ ์์น๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ธฐ ์ํด
mv ~/.openhands-state ~/.openhands
๋ช ๋ น์ ์คํํ๊ณ ์ถ์ ์ ์์ต๋๋ค.
OpenHands๋ http://localhost:3000์์ ์คํ๋ฉ๋๋ค!
์ ํ๋ฆฌ์ผ์ด์
์ ์ด๋ฉด LLM ์ ๊ณต์๋ฅผ ์ ํํ๊ณ API ํค๋ฅผ ์ถ๊ฐํ๋ผ๋ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค. Anthropic์ Claude Sonnet 4(anthropic/claude-sonnet-4-20250514
)๊ฐ ๊ฐ์ฅ ์ ์๋ํ์ง๋ง, ๋ค์ํ ์ต์
์ด ์์ต๋๋ค.
[!CAUTION] OpenHands๋ ๋ก์ปฌ ์ํฌ์คํ ์ด์ ์์ ๋จ์ผ ์ฌ์ฉ์๊ฐ ์คํํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์ผํ ์ธ์คํด์ค๋ฅผ ๊ณต์ ํ๋ ๋ค์ค ํ ๋ํธ ๋ฐฐํฌ์๋ ์ ํฉํ์ง ์์ต๋๋ค. ๋ด์ฅ๋ ์ธ์ฆ, ๊ฒฉ๋ฆฌ ๋๋ ํ์ฅ์ฑ์ด ์์ต๋๋ค.
๋ค์ค ํ ๋ํธ ํ๊ฒฝ์์ OpenHands๋ฅผ ์คํํ๋ ๋ฐ ๊ด์ฌ์ด ์์ผ์๋ฉด, ๊ณ ๊ธ ๋ฐฐํฌ ์ต์ ์ ์ํด ์ ํฌ์๊ฒ ์ฐ๋ฝ์ฃผ์ธ์.
๋ก์ปฌ ํ์ผ ์์คํ ์ OpenHands ์ฐ๊ฒฐ, ์คํฌ๋ฆฝํธ ๊ฐ๋ฅํ ํค๋๋ฆฌ์ค ๋ชจ๋๋ก ์คํ, ์น์ํ CLI๋ฅผ ํตํด ์ํธ ์์ฉ, ๋๋ GitHub ์ก์ ์ผ๋ก ํ๊ทธ๋ ์ด์์์ ์คํํ ์๋ ์์ต๋๋ค.
์์ธํ ์ ๋ณด ๋ฐ ์ค์ ์ง์นจ์ OpenHands ์คํ์ ์ฐธ์กฐํ์ธ์.
OpenHands ์์ค ์ฝ๋๋ฅผ ์์ ํ๋ ค๋ฉด Development.md๋ฅผ ํ์ธํ์ธ์.
๋ฌธ์ ๊ฐ ์์ผ์ ๊ฐ์? ๋ฌธ์ ํด๊ฒฐ ๊ฐ์ด๋๊ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
ํ๋ก์ ํธ์ ๋ํ ์์ธํ ์ ๋ณด์ OpenHands ์ฌ์ฉ ํ์ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
๋ค์ํ LLM ์ ๊ณต์ ์ฌ์ฉ ๋ฐฉ๋ฒ, ๋ฌธ์ ํด๊ฒฐ ๋ฆฌ์์ค ๋ฐ ๊ณ ๊ธ ๊ตฌ์ฑ ์ต์ ์ ๋ํ ์๋ฃ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
OpenHands๋ ์ปค๋ฎค๋ํฐ ์ฃผ๋ ํ๋ก์ ํธ์ด๋ฉฐ, ๋ชจ๋ ๋ถ๋ค์ ๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค. ๋๋ถ๋ถ์ ์ปค๋ฎค๋์ผ์ด์ ์ Slack์ ํตํด ์ด๋ฃจ์ด์ง๋ฏ๋ก, ์ฌ๊ธฐ๊ฐ ์์ํ๊ธฐ์ ๊ฐ์ฅ ์ข์ ์ฅ์์ ๋๋ค. ํ์ง๋ง Discord๋ Github์์๋ ์ฐ๋ฝ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค:
์ปค๋ฎค๋ํฐ์ ๋ํ ์์ธํ ๋ด์ฉ์ COMMUNITY.md์์ ํ์ธํ๊ฑฐ๋, ๊ธฐ์ฌ ๋ฐฉ๋ฒ์ ๋ํ ์ธ๋ถ ์ฌํญ์ CONTRIBUTING.md์์ ์ฐพ์ ์ ์์ต๋๋ค.
์๋ณ OpenHands ๋ก๋๋งต์ ์ฌ๊ธฐ์์ ํ์ธํ์ธ์(๋งค์ ๋ง ์ ์ง ๊ด๋ฆฌ์ ํ์์์ ์ ๋ฐ์ดํธ๋จ).
MIT ๋ผ์ด์ ์ค๋ก ๋ฐฐํฌ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ LICENSE
ํ์ผ์ ์ฐธ์กฐํ์ธ์.
OpenHands๋ ๋ง์ ๊ธฐ์ฌ์๋ค์ ์ํด ๊ตฌ์ถ๋์์ผ๋ฉฐ, ๋ชจ๋ ๊ธฐ์ฌ์ ๊น์ ๊ฐ์ฌ๋ฅผ ๋๋ฆฝ๋๋ค! ๋ํ ๋ค๋ฅธ ์คํ ์์ค ํ๋ก์ ํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์์ผ๋ฉฐ, ๊ทธ๋ค์ ์์ ์ ๋ํด ๊น์ด ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
OpenHands์์ ์ฌ์ฉ๋ ์คํ ์์ค ํ๋ก์ ํธ ๋ฐ ๋ผ์ด์ ์ค ๋ชฉ๋ก์ CREDITS.md ํ์ผ์ ์ฐธ์กฐํ์ธ์.
@misc{openhands,
title={{OpenHands: An Open Platform for AI Software Developers as Generalist Agents}},
author={Xingyao Wang and Boxuan Li and Yufan Song and Frank F. Xu and Xiangru Tang and Mingchen Zhuge and Jiayi Pan and Yueqi Song and Bowen Li and Jaskirat Singh and Hoang H. Tran and Fuqiang Li and Ren Ma and Mingzhang Zheng and Bill Qian and Yanjun Shao and Niklas Muennighoff and Yizhe Zhang and Binyuan Hui and Junyang Lin and Robert Brennan and Hao Peng and Heng Ji and Graham Neubig},
year={2024},
eprint={2407.16741},
archivePrefix={arXiv},
primaryClass={cs.SE},
url={https://arxiv.org/abs/2407.16741},
}