Logo

OpenHands: Code Less, Make More

OpenHands(์ด์ „ OpenDevin)์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. AI ๊ธฐ๋ฐ˜ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์—์ด์ „ํŠธ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

OpenHands ์—์ด์ „ํŠธ๋Š” ์ธ๊ฐ„ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: ์ฝ”๋“œ ์ˆ˜์ •, ๋ช…๋ น ์‹คํ–‰, ์›น ๊ฒ€์ƒ‰, API ํ˜ธ์ถœ, ๊ทธ๋ฆฌ๊ณ  ๋„คโ€”StackOverflow์—์„œ ์ฝ”๋“œ ์กฐ๊ฐ์„ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ docs.all-hands.dev์—์„œ ํ™•์ธํ•˜๊ฑฐ๋‚˜, OpenHands Cloud์— ๊ฐ€์ž…ํ•˜์—ฌ ์‹œ์ž‘ํ•ด ๋ณด์„ธ์š”.

[!IMPORTANT] ์—…๋ฌด์— OpenHands๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๋‚˜์š”? ์—ฌ๋Ÿฌ๋ถ„์˜ ์˜๊ฒฌ์„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค! ๊ฐ„๋‹จํ•œ ์„ค๋ฌธ์„ ์ž‘์„ฑํ•˜์—ฌ ๋””์ž์ธ ํŒŒํŠธ๋„ˆ ํ”„๋กœ๊ทธ๋žจ์— ์ฐธ์—ฌํ•˜์‹œ๋ฉด ์ƒ์šฉ ๊ธฐ๋Šฅ์„ ์กฐ๊ธฐ์— ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์ œํ’ˆ ๋กœ๋“œ๋งต์— ๋Œ€ํ•œ ์˜๊ฒฌ์„ ์ œ๊ณตํ•  ๊ธฐํšŒ๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

์•ฑ ์Šคํฌ๋ฆฐ์ƒท

โ˜๏ธ OpenHands Cloud

OpenHands๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ OpenHands Cloud๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹ ๊ทœ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” $20 ์ƒ๋‹น์˜ ๋ฌด๋ฃŒ ํฌ๋ ˆ๋”ง์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

๐Ÿ’ป ๋กœ์ปฌ์—์„œ OpenHands ์‹คํ–‰ํ•˜๊ธฐ

Docker๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ ์‹œ์Šคํ…œ์—์„œ๋„ OpenHands๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ์š”๊ตฌ ์‚ฌํ•ญ ๋ฐ ์ž์„ธํ•œ ๋‚ด์šฉ์€ OpenHands ์‹คํ–‰ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

[!WARNING] ๊ณต์šฉ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉ ์ค‘์ด์‹ ๊ฐ€์š”? ๋„คํŠธ์›Œํฌ ๋ฐ”์ธ๋”ฉ ์ œํ•œ ๋ฐ ์ถ”๊ฐ€ ๋ณด์•ˆ ์กฐ์น˜ ๊ตฌํ˜„์„ ํ†ตํ•ด ๋ฐฐํฌ๋ฅผ ๋ณดํ˜ธํ•˜๋ ค๋ฉด ๊ฐ•ํ™”๋œ Docker ์„ค์น˜ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

docker pull docker.all-hands.dev/all-hands-ai/runtime:0.48-nikolaik

docker run -it --rm --pull=always \
    -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.48-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.48

์ฐธ๊ณ : ๋ฒ„์ „ 0.44 ์ด์ „์˜ OpenHands๋ฅผ ์‚ฌ์šฉํ•˜์…จ๋‹ค๋ฉด, mv ~/.openhands-state ~/.openhands ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋Œ€ํ™” ๊ธฐ๋ก์„ ์ƒˆ๋กœ์šด ์œ„์น˜๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

OpenHands๋Š” http://localhost:3000์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค!

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—ด๋ฉด LLM ์ œ๊ณต์ž๋ฅผ ์„ ํƒํ•˜๊ณ  API ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. Anthropic์˜ Claude Sonnet 4(anthropic/claude-sonnet-4-20250514)๊ฐ€ ๊ฐ€์žฅ ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ, ๋‹ค์–‘ํ•œ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก OpenHands ์‹คํ–‰์„ ์œ„ํ•œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋“ค

[!WARNING] OpenHands๋Š” ๋‹จ์ผ ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ๋กœ์ปฌ ์›Œํฌ์Šคํ…Œ์ด์…˜์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์ผํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋‹ค์ค‘ ํ…Œ๋„ŒํŠธ ๋ฐฐํฌ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด์žฅ๋œ ์ธ์ฆ, ๊ฒฉ๋ฆฌ ๋˜๋Š” ํ™•์žฅ์„ฑ ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค์ค‘ ํ…Œ๋„ŒํŠธ ํ™˜๊ฒฝ์—์„œ OpenHands๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ๊ณต๊ฐœ๋˜์–ด ์žˆ๊ณ  ์ƒ์šฉ ๋ผ์ด์„ ์Šค๊ฐ€ ํ•„์š”ํ•œ OpenHands Cloud Helm Chart๋ฅผ ํ™•์ธํ•ด ๋ณด์„ธ์š”.

๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์— OpenHands ์—ฐ๊ฒฐ, ์Šคํฌ๋ฆฝํŠธ ๊ฐ€๋Šฅํ•œ ํ—ค๋“œ๋ฆฌ์Šค ๋ชจ๋“œ์—์„œ OpenHands ์‹คํ–‰, ์นœ์ˆ™ํ•œ CLI๋ฅผ ํ†ตํ•ด ์ƒํ˜ธ์ž‘์šฉ, ๋˜๋Š” GitHub ์•ก์…˜์œผ๋กœ ํƒœ๊ทธ๋œ ์ด์Šˆ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋” ๋งŽ์€ ์ •๋ณด์™€ ์„ค์ • ์•ˆ๋‚ด๋ฅผ ์›ํ•˜์‹œ๋ฉด OpenHands ์‹คํ–‰ํ•˜๊ธฐ๋ฅผ ๋ฐฉ๋ฌธํ•˜์„ธ์š”.

OpenHands ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด Development.md๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

๋ฌธ์ œ๊ฐ€ ์žˆ์œผ์‹ ๊ฐ€์š”? ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฐ€์ด๋“œ๊ฐ€ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“– ๋ฌธ์„œ

Ask DeepWiki

OpenHands ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ๋” ์•Œ์•„๋ณด๊ณ  ์‚ฌ์šฉ ํŒ์„ ํ™•์ธํ•˜๋ ค๋ฉด ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์—ฌ๊ธฐ์„œ๋Š” ๋‹ค์–‘ํ•œ LLM ์ œ๊ณต์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•, ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฆฌ์†Œ์Šค, ๊ณ ๊ธ‰ ๊ตฌ์„ฑ ์˜ต์…˜ ๋“ฑ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿค ์ปค๋ฎค๋‹ˆํ‹ฐ ์ฐธ์—ฌ ๋ฐฉ๋ฒ•

OpenHands๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ์ฃผ๋„ ํ”„๋กœ์ ํŠธ์ด๋ฉฐ ๋ชจ๋“  ๋ถ„๋“ค์˜ ๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์€ Slack์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง€๋ฏ€๋กœ ์‹œ์ž‘ํ•˜๊ธฐ์— ๊ฐ€์žฅ ์ข‹์€ ์žฅ์†Œ์ด์ง€๋งŒ, Discord๋‚˜ Github์—์„œ๋„ ์—ฐ๋ฝ์„ ์ฃผ์‹œ๋ฉด ๊ธฐ์˜๊ฒŒ ๋ฐ›๊ฒ ์Šต๋‹ˆ๋‹ค:

์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ COMMUNITY.md์—์„œ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ๊ธฐ์—ฌ ๋ฐฉ๋ฒ•์€ CONTRIBUTING.md์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“ˆ ์ง„ํ–‰ ์ƒํ™ฉ

์›”๋ณ„ OpenHands ๋กœ๋“œ๋งต์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•˜์„ธ์š” (๋งค์›” ๋ง ์œ ์ง€ ๊ด€๋ฆฌ์ž ํšŒ์˜์—์„œ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค).

Star History Chart

๐Ÿ“œ ๋ผ์ด์„ ์Šค

MIT ๋ผ์ด์„ ์Šค๋กœ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๐Ÿ™ ๊ฐ์‚ฌ์˜ ๋ง

OpenHands๋Š” ๋งŽ์€ ๊ธฐ์—ฌ์ž๋“ค์— ์˜ํ•ด ๋งŒ๋“ค์–ด์กŒ์œผ๋ฉฐ ๋ชจ๋“  ๊ธฐ์—ฌ์— ๊นŠ์€ ๊ฐ์‚ฌ๋ฅผ ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๋˜ํ•œ ๋‹ค๋ฅธ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ์œผ๋ฉฐ, ๊ทธ๋“ค์˜ ์ž‘์—…์— ๋Œ€ํ•ด ๊นŠ์ด ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

OpenHands์—์„œ ์‚ฌ์šฉ๋œ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ ๋ฐ ๋ผ์ด์„ ์Šค ๋ชฉ๋ก์€ CREDITS.md ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๐Ÿ“š ์ธ์šฉ

@inproceedings{
  wang2025openhands,
  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},
  booktitle={The Thirteenth International Conference on Learning Representations},
  year={2025},
  url={https://openreview.net/forum?id=OJd3ayDDoF}
}