소프트웨어 개발의 세계는 인공지능(AI)의 빠른 발전에 의해 급격한 변화를 겪고 있습니다. 우리는 AI 도구가 간단한 코드 완성을 돕는 도구에서 복잡한 요구사항을 이해하고 기능적인 애플리케이션을 생성할 수 있는 정교한 시스템으로 발전한 것을 목격했습니다. 이러한 흥미로운 환경에서 전 세계 개발자들의 상상력을 사로잡는 새로운 플레이어가 등장했습니다: OpenHands. OpenHands는 Devin AI와 같은 독점 AI 개발자에 대한 강력한 오픈 소스 대안으로 자리 잡아, AI 에이전트가 기존에는 인간 개발자에게만 주어졌던 작업을 수행할 수 있는 플랫폼을 제공합니다.
All-Hands-AI가 개발한 OpenHands(구 OpenDevin)는 단순한 코딩 어시스턴트가 아닙니다. 이는 소프트웨어 개발 작업의 전체 범위를 다루도록 설계된 AI 에이전트를 위한 다용도 플랫폼으로 구상되었습니다. 코드를 작성하는 것을 넘어서 기존 코드베이스를 수정하고, 터미널 명령을 실행하며, 정보를 위해 웹을 검색하고(스택 오버플로우에서 해결책을 찾아보는 것조차 포함됩니다), API와 상호작용하며 복잡한 개발 워크플로우를 관리할 수 있는 AI를 상상해 보십시오. 이것이 OpenHands의 약속입니다 - "코드는 적게, 더 많은 것을 만들어라."
OpenHands를 진정하게 차별화하는 것은 오픈 소스에 대한 헌신입니다. MIT 라이센스 하에 구축되어 협력, 투명성 및 커뮤니티 주도의 혁신을 초대합니다. 이는 폐쇄 소스 모델과 극명하게 대조되며, 개발자에게는 AI 개발 파트너의 내재된 작동 방식에 대한 비할 데 없는 제어, 사용자 정의 및 통찰력을 제공합니다. 공급업체의 종속성을 우려하거나 AI 기능을 특정 요구에 맞게 맞추려는 팀과 개인에게 OpenHands는 매력적인 제안을 제공합니다.
개발팀이 최대 생산성으로 함께 작업할 수 있는 통합된 올인원 플랫폼을 원하십니까?
Apidog은 모든 요구를 충족시키며, 훨씬 더 저렴한 가격에 Postman을 대체합니다!
OpenHands (구 Open Devin)은 무엇을 하나요?

OpenHands의 핵심 기능을 이해하는 것은 AI 개발 플랫폼으로서의 잠재력을 이해하는 데 중요합니다. 이는 AI 에이전트에게 포괄적인 기능 세트를 부여합니다:
지능형 코드 수정
OpenHands 에이전트는 기존 프로젝트의 코드 읽기, 이해 및 수정 능력을 가지고 있습니다. 선택한 대형 언어 모델(LLM)을 활용하여 에이전트는 코드베이스를 분석하고 파일 및 함수 간의 의존성을 이해하며 사용자의 프롬프트에 따라 타겟 수정을 수행합니다. 여기에는 명확성을 위한 함수 리팩토링, 새로운 API 엔드포인트 추가 또는 프로젝트 의존성 업데이트와 같은 작업이 포함됩니다.
보안 명령 실행
OpenHands의 초석은 보호된 격리된 샌드박스 환경 내에서 셸 명령(예: npm install
, python manage.py runserver
, git commit
, ls
, grep
등)을 실행할 수 있는 능력입니다. 이 샌드박스는 일반적으로 Docker 컨테이너로 구현되어 에이전트의 작업을 격리하여 호스트 시스템에 의도치 않은 영향을 미치지 않도록 합니다. 이를 통해 에이전트는 프로젝트 환경 설정, 테스트 스위트 실행, 필요한 라이브러리 설치, 빌드 스크립트 실행 및 버전 관리를 수행하는 등 필수 개발 작업을 수행할 수 있습니다.
통합 웹 브라우징
효과적인 소프트웨어 개발은 종종 문서 상담, 스택 오버플로우와 같은 플랫폼에서의 해결책 검색 또는 라이브러리 조사와 같은 외부 정보 수집을 필요로 합니다. OpenHands 에이전트는 자율적으로 웹을 탐색하여 할당된 작업을 수행하는 데 필요한 정보를 검색할 수 있습니다. 이 기능은 그들이 최신 모범 사례를 유지하고 사전에 제공된 정보에만 의존하지 않고 새로운 문제에 대한 솔루션을 제시할 수 있도록 합니다.
API 상호작용
현대 소프트웨어 아키텍처는 종종 API를 통해 여러 서비스를 통합하는 것을 포함합니다. OpenHands 에이전트는 이러한 외부 API와 상호작용하도록 지시될 수 있습니다. 이는 서드 파티 소스에서 데이터 가져오기, 다른 시스템에 업데이트 보내기, 서로 다른 도구 간의 워크플로우를 조정하여 복잡한 개발 프로세스를 자동화하는 것과 관련될 수 있습니다.
파일 시스템 관리
에이전트는 프로젝트 파일과 상호작용할 수 있는 능력이 필요합니다. OpenHands는 지정된 작업 공간(일반적으로 로컬 시스템에서 에이전트의 샌드박스로 매핑된 볼륨) 내에서 파일 및 디렉토리 생성, 읽기, 쓰기 및 삭제 권한을 부여합니다. 이로써 에이전트는 프로젝트를 논리적으로 구조화하고, 새로운 모듈이나 컴포넌트를 추가하며, 구성 파일을 관리하고, 출력 결과를 저장할 수 있습니다.
이러한 다양한 기능은 사용자가 선택한 LLM 백엔드에 의해 조정되어 OpenHands 에이전트가 복잡한 다단계 개발 작업을 자율적으로 처리할 수 있도록 힘을 실어주며, 기본적인 코드 생성에서 진정한 AI 기반 소프트웨어 엔지니어링 지원으로 이동합니다.
Mac, Linux, Windows에서 OpenHands 설치 방법
OpenHands를 로컬에서 실행하는 가장 권장되고 강력한 방법은 Docker를 사용하는 것입니다. 이는 환경 일관성을 보장하고 에이전트의 작업을 위한 필요한 격리를 제공합니다. 아래는 다양한 운영 체제에서 OpenHands를 설치하는 세부 가이드입니다.
시스템 요구 사항
시스템이 다음 요구 사항을 충족하는지 확인하십시오:
- 운영 체제:
- macOS (Docker Desktop 지원 포함)
- Linux (Ubuntu 22.04 테스트됨, 다른 최신 배포가 호환될 가능성이 높음)
- Windows (WSL 2 및 Docker Desktop 지원 포함)
- 하드웨어: 현대적인 프로세서와 최소 4GB RAM을 권장합니다. 복잡한 작업이나 더 큰 로컬 LLM을 사용하는 작업에는 RAM과 CPU/GPU 자원의 증가가 상당한 혜택을 줍니다.
필수 설치 단계
필수 사항을 설정하기 위해 이 단계를 주의 깊게 따르십시오.
1단계: Docker Desktop 설치
공식 Docker 웹사이트(https://www.docker.com/products/docker-desktop/)에서 운영 체제에 맞는 Docker Desktop을 다운로드하여 설치합니다. Docker에서 제공하는 설치 마법사를 따르십시오. 설치 후 Docker 데몬이 활성화되었는지 확인하십시오; 아이콘은 시스템 트레이나 메뉴 바에 표시되어야 합니다.
2단계: 운영 체제에 따라 Docker 구성
운영 체제에 따라 특정 구성이 필요합니다.
macOS 구성
- Docker Desktop을 실행합니다.
설정
에 접근합니다(일반적으로 기어 아이콘을 통해).고급
섹션으로 이동합니다.기본 Docker 소켓 사용 허용
옵션이 선택됨(활성화됨)인지 확인합니다. 이 권한은 OpenHands 컨테이너가 다른 Docker 컨테이너(예: 샌드박스)를 관리하는 데 필수적입니다.
Linux 구성
- 공식 Docker 문서를 따라 Linux용 Docker Desktop을 설치합니다.
- 설치 후 Docker 서비스가 실행 중인지 확인합니다.
(참고: Ubuntu 22.04에서 테스트되었으며, 다른 Linux 배포와의 호환성은 예상되지만 보장되지 않습니다.)
Windows 구성
- WSL(Windows Subsystem for Linux) 설치: WSL 2가 설치되지 않은 경우, PowerShell을 관리자 권한으로 열고
wsl --install
를 실행합니다. 이 명령은 WSL과 기본 Linux 배포(일반적으로 Ubuntu)를 설치합니다. 시스템 재부팅이 필요할 수 있습니다. - WSL 버전 확인: 표준 PowerShell 또는 명령 프롬프트 창을 열고
wsl --version
을 입력합니다. 출력이 WSL 버전 2 이상의 표시인지 확인합니다. 버전 1이 표시되면 WSL을 업데이트하거나wsl --set-default-version 2
를 사용하여 기본 버전을 2로 설정하십시오. - Windows용 Docker Desktop 설치: 아직 설치하지 않았다면 Docker Desktop 설치를 진행합니다.
- Docker Desktop WSL 통합 구성: Docker Desktop을 시작하고
설정
으로 이동합니다.일반
에서WSL 2 기반 엔진 사용
가 활성화됨인지 확인합니다.리소스 > WSL 통합
에서내 기본 WSL 배포에 대한 통합 활성화
가 활성화됨인지 확인합니다. 변경 사항을 적용하고 요청 시 Docker를 재시작합니다. - 중요 사항: Windows 사용자의 경우 OpenHands와 관련된 모든 후속
docker
명령은 WSL 터미널 환경 내에서(예: Ubuntu 터미널) 실행되어야 합니다. PowerShell이나 명령 프롬프트에서 직접 실행해서는 안 됩니다.
OpenHands 애플리케이션 시작하기
필수 요구 사항을 충족하면 이제 OpenHands 애플리케이션을 시작할 수 있습니다.
1단계: 터미널 열기
- macOS 또는 Linux에서는 기본 터미널 응용 프로그램을 엽니다.
- Windows에서는 설치된 WSL 배포 터미널(예: Ubuntu)을 시작합니다.
2단계: 런타임 이미지 풀링(선택 사항)
OpenHands는 에이전트의 샌드박스 실행 환경을 위해 별도의 Docker 이미지를 사용합니다. 이 이미지를 미리 풀링하면 초기 시작 속도를 높이는 경우가 있습니다. 공식 문서에서 권장하는 태그를 사용하십시오:
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.34-nikolaik
(항상 OpenHands GitHub 리포지토리 또는 공식 문서에서 최신 권장 태그를 확인하십시오. 태그는 변경될 수 있습니다.)
3단계: OpenHands 컨테이너 실행
터미널 내에서 다음 포괄적인 명령을 실행하십시오(Windows에서는 WSL 터미널 사용):
docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.34-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands-state:/.openhands-state \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.34
4단계: 웹 사용자 인터페이스 접근
docker run
명령이 실행되면 터미널에서 로그 출력을 모니터링하십시오. 애플리케이션 시작 시퀀스가 완료되면 선호하는 웹 브라우저를 열고 http://localhost:3000
으로 이동합니다.
이 단계를 완료하면 OpenHands가 로컬에서 성공적으로 설치되고 실행됩니다. 다음 즉각적인 단계는 에이전트를 강화할 대형 언어 모델을 구성하는 것입니다.

Open Hands 시작하기
OpenHands가 작동하면 다음 중요한 단계는 이를 LLM에 연결하는 것입니다. 이는 에이전트의 인지 엔진 역할을 합니다. LLM 설정 후 개발 작업을 할당할 수 있습니다. 이 섹션에서는 초기 구성과 상호작용 예제를 설명합니다.
초기 LLM 구성
이는 UI를 최초로 실행할 때 필수적인 첫 단계입니다.
- 첫 번째 실행: 처음으로
http://localhost:3000
에 접근하면 설정 모달이 자동으로 표시됩니다. - 필수 필드:
LLM 공급자
(예: OpenAI, Anthropic, Google, OpenRouter, Ollama와 같은 로컬 옵션) 중 하나를 선택하고 해당 공급자가 제공하는 특정LLM 모델
을 선택하여 해당API 키
를 입력해야 합니다. - 나중에 설정 접근하기: 초기 모달이 닫히거나 이후에 구성을 수정해야 하는 경우, 사용자 인터페이스에서 기어 아이콘(⚙️)을 클릭하십시오(종종 채팅 입력 영역 근처나 사이드바에 위치함).
(특정 LLM 공급자 구성에 대한 자세한 지침은 다음 섹션에 제공됩니다.)
당신의 첫 상호작용: "Hello World" 작업
에이전트의 프로세스를 관찰하기 위해 기본 작업으로 상호작용을 시작하십시오.
1단계: 에이전트에게 프롬프트 제공
채팅 입력 필드에 다음 지시사항을 입력하고 Enter 키를 누르십시오:
Write a bash script hello.sh that prints "hello world!"
2단계: 계획 단계 관찰
OpenHands는 요청을 구성된 LLM에 전달하며, LLM은 전략 계획을 수립합니다. 일반적으로 에이전트는 UI에서 의도한 작업을 개요로 설명할 것입니다:
hello.sh
라는 새 파일을 생성합니다.- 이 파일에
echo "hello world!"
라는 bash 명령을 삽입합니다. chmod +x hello.sh
를 사용하여 스크립트에 실행 권한을 부여합니다.- 스크립트를
./hello.sh
를 통해 실행하여 출력이 기대하는 것과 일치하는지 확인합니다.
3단계: 실행 단계 관찰
에이전트는 샌드박스된 Docker 런타임 환경 내에서 계획된 단계를 실행합니다. UI 로그는 실행되는 명령을 표시하고 파일 시스템 수정 사항을 반영합니다.
4단계: 결과 확인
성공적으로 완료되면 에이전트는 실행 결과를 보고해야 하며, 기대되는 출력인 "hello world!"가 포함되어야 합니다.
5단계: 반복적인 정제
이제 스크립트를 수정하기 위해 후속 지침을 사용해 보겠습니다:
Modify hello.sh so that it accepts a name as the first argument, but defaults to "world"
6단계: 수정 과정 관찰
에이전트는 다시 계획을 수립하고 실행할 것입니다:
hello.sh
의 기존 내용을 읽습니다.- 스크립트의 코드를 업데이트하여 인수 처리를 포함하며, 아마도
echo "hello ${1:-world}!"
와 같은 bash 매개 변수 확장을 사용할 것입니다. - 옵션으로 인수 유무에 따라 테스트를 실행합니다(예:
./hello.sh
와./hello.sh Developer
를 실행하여 변경 사항을 검증함).
7단계: 언어 변환 작업
언어 변경을 요청하여 에이전트의 유연성을 시연합니다:
Please convert hello.sh to a Ruby script, and run it
8단계: 환경 적응 관찰
샌드박스 환경에 필요한 Ruby 인터프리터가 없으면 에이전트는 먼저 설치 명령을 계획하고 실행할 수 있습니다(예: apt-get update && apt-get install -y ruby
). 이후에 Ruby 코드로 로직을 변환하고(예: puts "hello #{ARGV[0] || 'world'}!"
), 이를 hello.rb
에 저장하고 실행 가능하도록 만들고 새로운 스크립트를 실행합니다.
이 개요적인 예시는 에이전트의 기본 작업 흐름을 강조합니다: 지침 이해, 실행 단계 계획, 샌드박스 내에서 파일 시스템 및 셸과 상호작용, 반복적 프롬프트에 따라 적응하는 과정입니다.
제로에서 시작하기: TODO 애플리케이션 예제
에이전트는 종종 "그린필드" 프로젝트에서 강력한 성능을 보여주며, 복잡한 기존 코드베이스의 광범위한 맥락 없이 구조를 설정하는 것이 가능합니다.
1단계: 초기 프로젝트 프롬프트 제공
원하는 기능과 기술 스택에 대해 구체적으로 설명하십시오:
Build a frontend-only TODO app in React. All state should be stored in localStorage. Implement basic functionality to add new tasks and display the current list of tasks.
2단계: 계획 및 구축 모니터링
에이전트는 다음과 같은 전략을 세울 수 있습니다:
create-react-app
를 사용(가능한 경우/지시한 경우)하거나 기본 HTML, CSS 및 JavaScript/JSX 파일을 수작업으로 생성합니다.- 작업 입력 양식 및 작업 목록 표시를 위한 React 컴포넌트를 개발합니다.
useState
및useEffect
와 같은 React 훅을 사용하여 애플리케이션 상태 관리를 구현합니다.- 세션 간 데이터 지속성을 위해
localStorage.setItem()
및localStorage.getItem()
을 통합합니다. - 필요한 HTML 구조를 작성하고 CSS로 기본 스타일링을 적용합니다.
3단계: 기능 향상 요청
기본 애플리케이션이 작동하면 추가 기능을 요청하십시오:
Allow adding an optional due date to each task. Display this due date alongside the task description in the list.
4단계: 반복 개발 관찰
에이전트는 기존 React 컴포넌트를 수정하여 날짜 입력 요소를 포함하고, 애플리케이션 상태 구조를 마감일 정보에 맞게 업데이트하며, 작업 목록에서 날짜를 적절하게 표시할 수 있도록 렌더링 논리를 조정할 것입니다.
5단계: 버전 관리 모범 사례 구현
에이전트의 진행 상황을 수동 개발에서와 같이 정기적으로 버전 관리하여 저장합니다. 심지어 커밋을 처리하도록 지시할 수도 있습니다:
Commit the current changes with the commit message "feat: Add due date functionality to tasks" and push the commit to a new branch named "feature/due-dates" on the origin remote repository.
(참고: Git 명령의 성공적인 실행은 특히 원격으로 푸시할 때 Git이 설치되고, 에이전트의 작업 공간/샌드박스 환경 내에서 인증 자격 증명으로 설정되어 있어야 합니다.)
기존 프로젝트에 새로운 코드 추가하기
OpenHands는 기존 코드베이스에 새로운 코드와 기능을 통합할 수 있습니다.
예제 1: GitHub Action 추가하기
- 프롬프트:
Add a GitHub Action workflow to this repository that lints JavaScript code using ESLint whenever code is pushed to the main branch.
- 에이전트의 행동: 에이전트는 먼저 프로젝트 구조를 검사하여(
ls .github/workflows
) 워크플로가 존재하는지 확인할 수 있습니다. 그런 다음 적절한 린터를 결정하고(또는 지정된 것을 사용), 새 YAML 파일(.github/workflows/lint.yml
)을 만들고,main
으로 푸시될 때 ESLint를 실행하도록 GitHub Action에 대한 올바른 구성을 작성합니다.
예제 2: 백엔드 경로 추가하기(맥락이 핵심)
- 프롬프트:
Modify the Express.js application file located at './backend/api/routes.js'. Add a new GET endpoint at '/api/tasks' that retrieves and returns all tasks by calling the asynchronous function 'getAllTasks' found in './db/queries.js'.
- 에이전트의 행동: 특정 파일 경로(
./backend/api/routes.js
)와 관련된 맥락 정보를 제공하면(예:getAllTasks
의 존재 및 위치가./db/queries.js
에 있음) 에이전트의 효율성과 정확성을 크게 향상시킵니다. 이는 지정된 파일을 타겟으로 하여 필요한 경로 처리 코드를 삽입하고, 요구되는 함수를 가져오지 포함합니다.
코드 리팩토링
OpenHands를 활용하여 목표 지향적인 코드 리팩토링 작업을 수행합니다.
예제 1: 명확성을 위한 변수 이름 변경
- 프롬프트:
In the file './utils/calculation.py', rename all single-letter variables within the 'process_data' function to be more descriptive of their purpose.
예제 2: 대형 기능 분할
- 프롬프트:
Refactor the 'process_and_upload_data' function in 'data_handler.java'. Split its logic into two distinct functions: 'process_data' and 'upload_data', maintaining the original overall functionality.
예제 3: 파일 구조 개선
- 프롬프트:
Break down the main route definitions in './api/routes.js' into separate files based on resource (e.g., 'userRoutes.js', 'productRoutes.js'). Update the primary server file ('server.js') to import and use these modular route files.
버그 수정
버그 수정은 복잡할 수 있지만, OpenHands는 문제가 잘 정의된 경우 특히 도움이 될 수 있습니다.
예제 1: 특정 로직 수정
- 프롬프트:
The regular expression used for email validation in the '/subscribe' endpoint handler within 'server/handlers.js'incorrectly rejects valid '.co.uk' domain names. Please fix the regex pattern.
예제 2: 동작 수정
- 프롬프트:
The 'search_items' function implemented in 'search.php' currently performs a case-sensitive search. Modify this function to ensure the search is case-insensitive.
예제 3: 테스트 주도 접근 방식 적용
- 테스트 생성을 위한 프롬프트:
The 'calculate_discount' function in 'pricing.js' crashes when the input quantity is zero. Write a new test case using Jest in the 'pricing.test.js' file that specifically reproduces this bug.
- 테스트 실행 관찰: 에이전트는 테스트 코드를 생성하고 테스트 스위트를 실행하며(예:
npm test
) 예상되는 실패를 보고합니다. - 코드 수정 요청:
Now, modify the 'calculate_discount' function in 'pricing.js' to correctly handle the zero quantity case, ensuring the previously written test passes.
- 수정 및 검증 관찰: 에이전트는 함수 논리를 조정하고(아마도 제로 수량에 대한 조건 체크 추가) 테스트 스위트를 다시 실행하여 성공적인 결과를 보고합니다.
핵심 사용 전략: 간단하고 구체적인 요청으로 시작하십시오. 파일 경로 및 함수 이름과 같은 필요한 맥락을 제공합니다. 복잡한 목표를 더 작은 반복 단계로 나눕니다. 버전 관리를 사용하여 변경한 내용을 자주 커밋합니다.
OpenHands를 LLM(OpenAI, OpenRouter, Google Gemini, 로컬)로 구성하는 방법
OpenHands와 유능한 LLM 간의 연결 설정은 매우 중요합니다. 이러한 구성은 OpenHands 웹 사용자 인터페이스를 통해 관리됩니다.
LLM 구성 설정 접근
- 초기 설정 시: UI를 처음 로드할 때 구성 모달이 자동으로 나타납니다.
- 후속 변경에 대하여: 사용자 인터페이스 내에서 기어 아이콘 (⚙️)을 클릭하세요. 이는 일반적으로 채팅 입력 근처나 설정 패널에 위치합니다.
일반 LLM 구성 절차
- LLM 공급자 선택: 사용하고자 하는 서비스를 선택하십시오(예: "OpenAI", "Anthropic", "Google", "OpenRouter", "Ollama").
- API 키 입력: 선택한 공급자에 연결된 API 키를 지정된 입력 필드에 정확하게 붙여넣습니다. API 키는 비밀번호와 동일한 보안 수준으로 취급해야 합니다.
- LLM 모델 지정: 선택한 공급자의 특정 모델을 선택하십시오(예:
gpt-4o
,claude-3-5-sonnet-20240620
,gemini-1.5-pro-latest
). 사용 가능한 모델은 선택한 공급자에 따라 동적으로 채워지거나 수동으로 모델 이름을 입력해야 할 수 있습니다. - 고급 옵션 탐색(선택 사항): 고급 설정을 활성화하여 추가 구성 가능성을 확인하십시오:
사용자 정의 모델
: 원하는 모델이 나열되지 않은 경우, 해당 모델의 정확한 식별자를 입력할 수 있습니다(적절한 모델 ID에 대한 제공자의 문서를 참조하십시오).기본 URL
: 이는 로컬로 호스팅된 LLM 또는 프록시 서비스를 사용할 때 매우 중요합니다. OpenHands가 요청을 향해 사용할 특정 API 엔드포인트 URL을 정의합니다.
5. 구성 저장: 선택한 설정을 적용하고 저장합니다.
공급자별 구성 단계
인기 있는 LLM 공급자에 대해 이러한 세부 단계를 따르십시오:
OpenAI 구성
- https://platform.openai.com/에 방문합니다.
- 로그인하거나 새 계정을 만듭니다.
API keys
섹션으로 이동하여 새 비밀 키를 생성합니다. 이 키는 다시 표시되지 않을 수 있으므로 즉시 복사합니다.Billing
설정에서 청구 정보가 제대로 설정되어 있는지 확인하여 API 사용을 가능하게 합니다.- OpenHands UI 설정 내에서:
- 공급자를
OpenAI
로 설정합니다. - 생성한 API 키를 API 키 필드에 붙여넣습니다.
- 원하는 OpenAI 모델을 선택하거나 입력합니다(예:
gpt-4o
,gpt-4-turbo
).
Anthropic (Claude) 구성
- https://console.anthropic.com/에 방문합니다.
- 로그인하거나 계정을 가입합니다.
Account Settings > API Keys
에 접근하여 새 API 키를 생성합니다. 생성된 키를 복사합니다.Plans & Billing
에서 청구를 구성합니다. 비용 효과적으로 관리하기 위해 사용 한도를 설정하는 것을 고려하십시오.- OpenHands UI 설정 내에서:
- 공급자를
Anthropic
로 설정합니다. - 복사한 API 키를 붙여넣습니다.
- 특정 Claude 모델을 선택하거나 입력합니다(예:
claude-3-5-sonnet-20240620
,claude-3-opus-20240229
).
Google Gemini 구성
- API 키를 얻습니다:
- Google AI Studio: (https://aistudio.google.com/app/apikey) - 개인 실험에 적합합니다.
- Google Cloud Vertex AI: (https://cloud.google.com/vertex-ai) - 엔터프라이즈 또는 클라우드 통합 응용 프로그램에 추천됩니다.
2. Google Cloud를 사용하는 경우, 필요한 Vertex AI API가 활성화되어 있고 청구가 구성되어 있는지 확인합니다.
3. OpenHands UI 설정 내에서:
- 공급자를
Google
로 설정합니다. - 얻은 API 키를 붙여넣습니다.
- 원하는 Gemini 모델을 선택하거나 입력합니다(예:
gemini-1.5-pro-latest
,gemini-1.5-flash-latest
).
OpenRouter 구성
- https://openrouter.ai/로 이동합니다.
- 로그인하거나 계정을 생성합니다.
Keys
섹션으로 이동하여 새 API 키를 생성합니다. 복사합니다.Billing
섹션을 통해 계좌에 크레딧을 추가하여 사용을 가능하게 합니다.- OpenHands UI 설정 내에서:
- 공급자를
OpenRouter
로 설정합니다. - 생성된 OpenRouter API 키를 붙여넣습니다.
- OpenRouter에서 사용되는 정확한 모델 식별자를 선택하거나 입력합니다(예:
anthropic/claude-3.5-sonnet
,google/gemini-pro-1.5
,mistralai/mistral-7b-instruct
). 사용 가능한 식별자의 목록은 OpenRouter 모델 문서를 참조하세요.
로컬 LLM 구성 (예: Ollama를 통해)
- Ollama 설치: https://ollama.com/의 설치 가이드를 따르십시오.
- 모델 다운로드: Ollama CLI를 사용하여 원하는 모델을 다운로드합니다(예:
ollama pull llama3
또는 다른 모델codellama
,mistral
). - Ollama 서버 실행: Ollama 백그라운드 서버가 실행되고 있는지 확인합니다(일반적으로 설치 후 자동으로 시작됩니다).
- OpenHands UI 설정 내에서:
- 공급자를
Ollama
로 설정합니다(또는 중간 매개체로 사용하는 경우LiteLLM
으로 설정할 수 있습니다). - API 키 : 일반적으로 표준 Ollama 설정에서는 필요하지 않으므로 비워 두거나
NA
또는ollama
로 입력할 수 있습니다. - 고급 옵션 활성화.
- 기본 URL 설정: 이는 필수입니다. OpenHands가 Docker 내부에서 실행되므로
localhost
는 호스트 시스템이 아니라 컨테이너를 가리킵니다. 특수 DNS 이름http://host.docker.internal:11434
를 사용하십시오.host.docker.internal
은 컨테이너 내에서 호스트 시스템의 IP를 해결하며,11434
는 Ollama API 서버의 기본 포트입니다. - 모델 지정: 다운로드된 Ollama 모델의 정확한 이름을 선택하거나 입력합니다(예:
llama3
,codellama
) 모델 또는 사용자 정의 모델 필드에 입력합니다.
OpenHands Docker 런타임 구성 방법
OpenHands에서 "런타임"이라는 용어는 에이전트가 명령을 실행하고 파일 시스템과 상호작용하는 격리된 Docker 컨테이너 환경을 지정합니다. 구성은 주로 기본 OpenHands 애플리케이션 컨테이너를 시작할 때 어떤 런타임 이미지를 사용할지를 지정하는 것을 포함합니다.
런타임 환경의 목적
- 격리 및 보안: 런타임 컨테이너는 기본 OpenHands 애플리케이션 컨테이너와 별도로 작동합니다. 이러한 분리는 안전한 샌드박스를 생성하여 에이전트가 수행하는 작업(예: 소프트웨어 설치 또는 코드 실행)이 코어 애플리케이션이나 호스트 시스템에 직접적인 영향을 미치지 않도록 방지합니다.
- 실행 환경: 런타임 이미지는 일반적으로 필수 기본 도구(예: 셸 및 일반 명령줄 유틸리티)를 포함합니다. 선택한 특정 이미지에 따라 Python, Node.js 또는 Git과 같은 개발 도구를 사전 설치되어 있을 수도 있습니다. 또한 에이전트는 패키지 관리자(
apt
,npm
,pip
등)를 사용하여 이 샌드박스 환경 내에서 추가 필요한 도구를 설치할 수 있는 기능을 가지고 있습니다.
다음 docker run
명령을 통한 구성
런타임 구성을 위한 주요 방법은 OpenHands 애플리케이션을 실행하는 데 사용되는 docker run
명령 내의 -e
(환경 변수) 플래그를 통해 이루어집니다:
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.34-nikolaik
이 환경 변수는 OpenHands 애플리케이션에 에이전트의 작업 실행을 처리하기 위해 샌드박스 컨테이너를 준비할 때 사용할 특정 Docker 이미지 태그에 대해 지시합니다.
런타임 수정 또는 업데이트
- 런타임 버전 변경: 새로운 버전의 런타임 이미지가 제공되면(
0.35-newfeature
와 같이), 먼저 현재 실행 중인 OpenHands 컨테이너를 중지합니다(예:docker stop openhands-app
). 그런 다음docker run
명령을 사용해 이미지를 업데이트하여 존 요금을 지정합니다.-e SANDBOX_RUNTIME_CONTAINER_IMAGE
플래그:
docker run ... -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.35-newfeature ... docker.all-hands.dev/all-hands-ai/openhands:<corresponding_app_version>
(참고: 일반적으로 기본 openhands
애플리케이션 이미지 태그 또한 업데이트하여 애플리케이션과 런타임 환경 간의 호환성을 보장하는 것이 바람직합니다.)
- 개발 빌드 사용: 최신의 잠재적으로 불안정한 기능을 테스트하기 위해 런타임 이미지에 대한
main
태그를 활용할 수 있습니다:
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:main
- 시맨틱 버전 관리 활용: 문서에 따르면 버전 태그는 시맨틱 버전 관리 관례를 지원할 수 있습니다(예:
:0.9
가 최신0.9.x
패치 릴리스를 해결할 수 있습니다). 이는 이미지 저장소가 이를 지원하는 경우 자동으로 마이너 업데이트를 받을 수 있는 방법이 될 수 있습니다.
궁극적으로 Docker 런타임 관리의 주된 초점은 docker run
명령 내에서 적절한 런타임 이미지 태그를 선택하고 지정하는 것으로, 안정적인 요구 사항과 특정 기능 또는 업데이트의 필요성을 균형 있게 유지