> For the complete documentation index, see [llms.txt](https://docs.clore.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.clore.ai/guides/guides_v2-ru/platformy-i-agenty-ii/openhands.md).

# OpenHands AI Developer

Разверните OpenHands (ранее OpenDevin) на Clore.ai — запустите полностью автономного ИИ-программиста на доступных GPU-облачных серверах для кодинга, отладки и решения GitHub-issues.

## Обзор

[OpenHands](https://github.com/All-Hands-AI/OpenHands) (ранее OpenDevin) — это open-source платформа для автономных агентов ИИ-разработки ПО. Имея более 65 тыс. звёзд на GitHub, она стала одним из самых популярных инструментов для делегирования реальных программных задач ИИ — написания кода, исправления ошибок, решения задач GitHub, выполнения команд shell, просмотра веба и сквозной работы с вашим кодовой базой.

В отличие от типичных инструментов автодополнения кода, OpenHands использует **агентный цикл**: он получает задачу, планирует, пишет код, выполняет его, наблюдает результат и повторяет — всё без участия человека. Он поддерживает десятки бэкендов LLM, включая OpenAI, Anthropic Claude, Google Gemini и локально размещённые модели через Ollama или vLLM.

**Почему Clore.ai для OpenHands?**

* Сам OpenHands работает на CPU и не требует GPU
* Однако в сочетании с **локальной LLM** (Ollama, vLLM) на том же сервере устраняет расходы на API и задержки
* Доступные GPU-серверы Clore.ai позволяют запускать и OpenHands, и локальную модель всего за **$0.20–$0.35/ч**
* Вы получаете постоянное хранилище рабочей области, поддержку Docker-in-Docker и полный root-доступ
* Идеально для длительных автономных задач, которые были бы дорогими при использовании облачных API LLM

**Типичные сценарии использования на Clore.ai:**

* Автономная генерация кода по спецификации или описанию задачи
* Пакетный рефакторинг больших кодовых баз
* Запуск OpenHands + Ollama вместе для 100% офлайн-агентной разработки
* Автоматизация задач CI/CD без затрат на API

***

## Требования

OpenHands требует доступа к Docker socket и внутренне запускает изолированный контейнер runtime. В следующей таблице приведены рекомендуемые конфигурации на Clore.ai:

| Конфигурация                       | GPU                | VRAM  | ОЗУ   | Хранилище | Ориентировочная цена                        |
| ---------------------------------- | ------------------ | ----- | ----- | --------- | ------------------------------------------- |
| **Только API (без локальной LLM)** | Любой / только CPU | Н/Д   | 8 ГБ  | 20 ГБ     | \~0,05–0,10 $/час                           |
| **+ Ollama (Llama 3.1 8B)**        | RTX 3090           | 24 ГБ | 16 ГБ | 40 ГБ     | $0.07–0.21/ч                                |
| **+ Ollama (Qwen2.5 32B)**         | RTX 4090           | 24 ГБ | 32 ГБ | 60 ГБ     | $0.14–0.42/ч                                |
| **+ vLLM (Llama 3.1 70B)**         | A100 80 ГБ         | 80 ГБ | 64 ГБ | 100 ГБ    | [голое железо](https://clore.ai/bare-metal) |
| **+ vLLM (Llama 3.3 70B INT4)**    | RTX 4090           | 24 ГБ | 32 ГБ | 80 ГБ     | $0.14–0.42/ч                                |

> **Примечание:** Если вы используете только API OpenAI/Anthropic/Gemini, подойдёт любой сервер с ≥8 ГБ ОЗУ. GPU нужен только если вы хотите запускать локальную LLM на той же машине. См. [Руководство по сравнению GPU](/guides/guides_v2-ru/nachalo-raboty/gpu-comparison.md) для более подробной информации.

**Требования к ПО на сервере Clore.ai:**

* Docker Engine (предустановлен во всех образах Clore.ai)
* NVIDIA Container Toolkit (предустановлен в GPU-образах)
* Доступ к Docker socket по адресу `/var/run/docker.sock`
* Исходящий доступ в интернет для загрузки образов из GHCR

***

## Быстрый старт

### Шаг 1: Выберите и подключитесь к серверу Clore.ai

В [Маркетплейс Clore.ai](https://clore.ai), отфильтруйте серверы по:

* ОЗУ ≥ 16 ГБ (для связки с локальной LLM)
* Docker: ✓ включён
* Выберите предпочитаемый GPU, если используете локальную модель

Подключитесь по SSH после подготовки сервера:

```bash
ssh root@<server-ip> -p <port>
```

### Шаг 2: Проверьте, что Docker работает

```bash
docker info
ls -la /var/run/docker.sock
```

Обе команды должны выполниться успешно. Если Docker socket отсутствует, обратитесь в поддержку Clore.ai или выберите другой образ.

### Шаг 3: Скачайте и запустите OpenHands

```bash
# Установите каталог рабочей области
export WORKSPACE_BASE=$(pwd)/workspace
mkdir -p $WORKSPACE_BASE

# Запустите OpenHands (скачивает последний образ 0.38 из GHCR)
docker run -it --pull=always \
  -e SANDBOX_RUNTIME_CONTAINER_IMAGE=ghcr.io/all-hands-ai/runtime:0.38-nikolaik \
  -e SANDBOX_USER_ID=$(id -u) \
  -e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
  -v $WORKSPACE_BASE:/opt/workspace_base \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -p 3000:3000 \
  --add-host host.docker.internal:host-gateway \
  ghcr.io/all-hands-ai/openhands:0.38
```

### Шаг 4: Откройте веб-интерфейс

Интерфейс доступен по адресу `http://<server-ip>:3000`

> **Проброс портов Clore.ai:** В панели управления Clore.ai убедитесь, что порт `3000` перенаправлен/открыт в конфигурации сервера. Некоторые шаблоны ограничивают внешние порты — проверьте раздел «Ports» в сведениях о сервере.

При первом запуске OpenHands предложит вам настроить провайдера LLM.

### Шаг 5: Настройте вашу LLM

В настройках веб-интерфейса:

* **Провайдер:** Выберите OpenAI, Anthropic, Google или Custom
* **API-ключ:** Введите ваш API-ключ
* **Модель:** например, `gpt-4o`, `claude-3-5-sonnet-20241022`, или `ollama/llama3.1`

Для локального Ollama (см. раздел «GPU Acceleration» ниже) используйте:

* Провайдер: `ollama`
* Базовый URL: `http://host.docker.internal:11434`
* Модель: `ollama/llama3.1:8b`

***

## Конфигурация

### Переменные окружения

OpenHands можно полностью настроить через переменные окружения, переданные в `docker run`:

```bash
docker run -it --pull=always \
  -e SANDBOX_RUNTIME_CONTAINER_IMAGE=ghcr.io/all-hands-ai/runtime:0.38-nikolaik \
  -e SANDBOX_USER_ID=$(id -u) \
  -e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
  -e LLM_MODEL=claude-3-5-sonnet-20241022 \
  -e LLM_API_KEY=sk-ant-... \
  -e LLM_BASE_URL="" \
  -e SANDBOX_TIMEOUT=120 \
  -e MAX_ITERATIONS=100 \
  -v $WORKSPACE_BASE:/opt/workspace_base \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -p 3000:3000 \
  --add-host host.docker.internal:host-gateway \
  ghcr.io/all-hands-ai/openhands:0.38
```

| Переменная        | Описание                                                                | По умолчанию            |
| ----------------- | ----------------------------------------------------------------------- | ----------------------- |
| `LLM_MODEL`       | Идентификатор модели (например, `gpt-4o`, `claude-3-5-sonnet-20241022`) | Устанавливается в UI    |
| `LLM_API_KEY`     | API-ключ провайдера LLM                                                 | Устанавливается в UI    |
| `LLM_BASE_URL`    | Пользовательский базовый URL (для Ollama, vLLM, LiteLLM)                | По умолчанию провайдера |
| `SANDBOX_TIMEOUT` | Тайм-аут песочницы агента в секундах                                    | `120`                   |
| `MAX_ITERATIONS`  | Максимальное число итераций агентного цикла на задачу                   | `100`                   |
| `SANDBOX_USER_ID` | UID, от имени которого запускать песочницу (используйте `$(id -u)`)     | `0`                     |
| `LOG_ALL_EVENTS`  | Включить подробное журналирование событий (`true`/`false`)              | `false`                 |

### Постоянный файл конфигурации

Вы можете сохранять настройки, подключив каталог конфигурации:

```bash
mkdir -p /opt/openhands/config

docker run -it --pull=always \
  -e SANDBOX_RUNTIME_CONTAINER_IMAGE=ghcr.io/all-hands-ai/runtime:0.38-nikolaik \
  -e SANDBOX_USER_ID=$(id -u) \
  -e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
  -v $WORKSPACE_BASE:/opt/workspace_base \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /opt/openhands/config:/app/config \
  -p 3000:3000 \
  --add-host host.docker.internal:host-gateway \
  ghcr.io/all-hands-ai/openhands:0.38
```

### Запуск в фоновом режиме (отсоединённый режим)

Для длительных сессий на Clore.ai:

```bash
export WORKSPACE_BASE=/opt/workspace
mkdir -p $WORKSPACE_BASE

docker run -d \
  --name openhands \
  --restart unless-stopped \
  --pull=always \
  -e SANDBOX_RUNTIME_CONTAINER_IMAGE=ghcr.io/all-hands-ai/runtime:0.38-nikolaik \
  -e SANDBOX_USER_ID=0 \
  -e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
  -e LLM_MODEL=claude-3-5-sonnet-20241022 \
  -e LLM_API_KEY=your_api_key_here \
  -v $WORKSPACE_BASE:/opt/workspace_base \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -p 3000:3000 \
  --add-host host.docker.internal:host-gateway \
  ghcr.io/all-hands-ai/openhands:0.38

# Просмотреть логи
docker logs -f openhands
```

***

## Ускорение на GPU (интеграция локальной LLM)

Хотя сам OpenHands не использует GPU, сочетание его с **локальной LLM** моделью, работающей на GPU Clore.ai, даёт вам мощного, экономичного автономного агента без API.

### Вариант A: OpenHands + Ollama (рекомендуется новичкам)

Сначала запустите Ollama, затем укажите OpenHands на него:

```bash
# 1. Запустите Ollama (см. полное руководство по Ollama)
docker run -d \
  --name ollama \\
  --gpus all \
  -p 11434:11434 \\
  -v ollama-data:/root/.ollama \
  ollama/ollama:latest

# 2. Скачайте модель, оптимизированную для программирования
docker exec ollama ollama pull qwen2.5-coder:7b
# Или для большей производительности:
docker exec ollama ollama pull llama3.1:8b
docker exec ollama ollama pull deepseek-coder-v2:16b

# 3. Запустите OpenHands, указывая на Ollama
export WORKSPACE_BASE=/opt/workspace
mkdir -p $WORKSPACE_BASE

docker run -d \
  --name openhands \
  -e SANDBOX_RUNTIME_CONTAINER_IMAGE=ghcr.io/all-hands-ai/runtime:0.38-nikolaik \
  -e SANDBOX_USER_ID=0 \
  -e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
  -e LLM_MODEL=ollama/qwen2.5-coder:7b \
  -e LLM_BASE_URL=http://host.docker.internal:11434 \
  -e LLM_API_KEY=ollama \
  -v $WORKSPACE_BASE:/opt/workspace_base \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -p 3000:3000 \
  --add-host host.docker.internal:host-gateway \
  ghcr.io/all-hands-ai/openhands:0.38
```

> См. полное [руководство по Ollama](/guides/guides_v2-ru/yazykovye-modeli/ollama.md) для выбора модели, настройки производительности и конфигурации GPU.

### Вариант B: OpenHands + vLLM (высокая производительность)

Для максимальной пропускной способности с более крупными моделями:

```bash
# 1. Запустите vLLM с моделью для программирования
docker run -d \
  --name vllm \\
  --gpus all \
  -p 8000:8000 \\
  --ipc=host \
  vllm/vllm-openai:latest \\
  --model Qwen/Qwen2.5-Coder-32B-Instruct \
  --max-model-len 16384 \
  --gpu-memory-utilization 0.92

# Дождитесь загрузки модели (~2–5 мин)
docker logs -f vllm | grep "Application startup"

# 2. Запустите OpenHands с бэкендом vLLM
docker run -d \
  --name openhands \
  -e SANDBOX_RUNTIME_CONTAINER_IMAGE=ghcr.io/all-hands-ai/runtime:0.38-nikolaik \
  -e SANDBOX_USER_ID=0 \
  -e WORKSPACE_MOUNT_PATH=/opt/workspace \
  -e LLM_MODEL=openai/Qwen/Qwen2.5-Coder-32B-Instruct \
  -e LLM_BASE_URL=http://host.docker.internal:8000/v1 \
  -e LLM_API_KEY=none \
  -v /opt/workspace:/opt/workspace_base \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -p 3000:3000 \
  --add-host host.docker.internal:host-gateway \
  ghcr.io/all-hands-ai/openhands:0.38
```

> См. [руководство по vLLM](/guides/guides_v2-ru/yazykovye-modeli/vllm.md) для полной настройки, вариантов квантизации и многопроцессорных GPU-конфигураций.

### Рекомендуемые локальные модели для программирования

| Модель                  | Размер | Мин. VRAM | Качество |
| ----------------------- | ------ | --------- | -------- |
| `qwen2.5-coder:7b`      | 7B     | 8 ГБ      | ★★★☆☆    |
| `deepseek-coder-v2:16b` | 16B    | 12 ГБ     | ★★★★☆    |
| `qwen2.5-coder:32b`     | 32B    | 24 ГБ     | ★★★★☆    |
| `llama3.1:70b`          | 70B    | 48 ГБ     | ★★★★★    |

***

## Советы и лучшие практики

### 1. Используйте монтирование рабочей области с умом

Подключите реальный каталог проекта как рабочую область, чтобы OpenHands мог напрямую редактировать ваши файлы:

```bash
export WORKSPACE_BASE=/opt/my-project
git clone https://github.com/your/repo $WORKSPACE_BASE
```

### 2. Формулируйте задачи для лучших результатов

OpenHands лучше всего работает с конкретными, выполнимыми запросами:

```
✅ Хорошо: "Исправьте ошибку аутентификации в src/auth/login.py, где JWT-токены 
         истекают сразу. Проблема в расчёте времени истечения токена."

❌ Плохо: "Исправьте ошибку"
```

### 3. Отслеживайте использование ресурсов

```bash
# Следите за использованием GPU и памяти
watch -n 2 'nvidia-smi && docker stats --no-stream'
```

### 4. Установите лимиты итераций

Не позволяйте вышедшим из-под контроля агентам расходовать слишком много API-токенов:

```bash
-e MAX_ITERATIONS=50  # Ограничить 50 шагами на задачу
```

### 5. Интеграция с GitHub

OpenHands может напрямую закрывать задачи GitHub. Настройте это в UI:

* GitHub Token: ваш персональный токен доступа с `repo` scope
* OpenHands клонирует репозиторий, исправит проблему и создаст PR

### 6. Оценка стоимости

Для LLM на основе API оцените стоимость одной задачи:

* Простое исправление ошибки: \~$0.05–0.15 (Claude Haiku/GPT-4o-mini)
* Сложная функция: \~$0.50–2.00 (Claude Sonnet/GPT-4o)
* При 100+ задачах в день локальная LLM на Clore.ai окупается

***

## Устранение неполадок

### Отказано в доступе к Docker socket

```bash
# Ошибка: отказано в доступе при попытке подключиться к Docker daemon
# Исправление: убедитесь, что socket доступен
ls -la /var/run/docker.sock
# Должно отображаться: srw-rw---- 1 root docker ...

# При необходимости добавьте пользователя в группу docker
usermod -aG docker $USER
# Затем перезапустите shell или используйте: newgrp docker
```

### Контейнер песочницы не запускается

```bash
# Проверьте, доступен ли образ runtime
docker pull ghcr.io/all-hands-ai/runtime:0.38-nikolaik

# Проверьте ограничения GHCR на количество запросов (может потребоваться авторизация)
docker login ghcr.io
```

### Порт 3000 недоступен

```bash
# Убедитесь, что контейнер запущен и порт привязан
docker ps | grep openhands
docker port openhands

# Проверьте брандмауэр Clore.ai — убедитесь, что порт 3000 указан в сопоставлении портов
# В панели управления Clore.ai: Server → Ports → Add 3000:3000
```

### Ошибки подключения LLM с Ollama

```bash
# Проверьте, доступен ли Ollama из контейнера OpenHands
docker exec openhands curl http://host.docker.internal:11434/api/tags

# Если не работает, проверьте, что флаг --add-host был указан в docker run
# Также проверьте, что контейнер Ollama запущен:
docker ps | grep ollama
docker logs ollama | tail -20
```

### Агент зацикливается бесконечно

```bash
# Уменьшите максимальное число итераций
docker stop openhands
docker run ... -e MAX_ITERATIONS=30 ...

# Или задайте тайм-аут
-e SANDBOX_TIMEOUT=60
```

### Недостаточно памяти (OOM)

```bash
# Проверьте использование памяти
free -h
docker stats

# Если используется локальная LLM, попробуйте модель поменьше
docker exec ollama ollama pull qwen2.5-coder:3b

# Или используйте квантизированную версию (меньше VRAM)
docker exec ollama ollama pull llama3.1:8b-instruct-q4_K_M
```

***

## Дополнительное чтение

* [Репозиторий OpenHands на GitHub](https://github.com/All-Hands-AI/OpenHands) — Исходный код, задачи и релизы
* [Документация OpenHands](https://docs.all-hands.dev) — Официальная документация, включая настройку LLM
* [Ollama на Clore.ai](/guides/guides_v2-ru/yazykovye-modeli/ollama.md) — Запускайте локальные LLM для бесплатного агентного инференса
* [vLLM на Clore.ai](/guides/guides_v2-ru/yazykovye-modeli/vllm.md) — Высокопроизводительный серверный запуск локальных LLM
* [Руководство по сравнению GPU](/guides/guides_v2-ru/nachalo-raboty/gpu-comparison.md) — Выберите подходящий GPU для вашей нагрузки
* [OpenHands в Discord](https://discord.gg/ESHStjSjD4) — Поддержка сообщества и рекомендации по моделям
* [Таблица лидеров SWE-bench](https://www.swebench.com) — Сравните производительность агентов на реальных задачах GitHub


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.clore.ai/guides/guides_v2-ru/platformy-i-agenty-ii/openhands.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
