OpenHands ведёт полный инженерный цикл — планирование, правки, терминал, PR. Документация говорит: поддерживается любая модель, которую умеет LiteLLM, а OpenAI-совместимый путь — ровно форма DaoXE (гайд по дешёвым API): base URL, ключ и ID модели с правильным префиксом.
Зачем направлять OpenHands через DaoXE#
- Агентный цикл на вашем ключе. Планировщик, редактор и терминал OpenHands едут на одном провайдере — ключ DaoXE покрывает сотни моделей от ~25 провайдеров, и сильная, и дешёвая модели живут на одном балансе.
- Два профиля, один счёт. Именованные LLM-конфигурации дают сильный модель для планирования и бюджетную для рутинных правок — без второго аккаунта.
- Лёгкий аудит. Результат агента — диффы и запуски команд — идеальная проверка, отдаёт ли дешёвый эндпоинт настоящую модель (как поймать подмену модели).
Настройка в OpenHands#
- Откройте расширенную панель LLM. В UI OpenHands:
Settings → LLM, нажмите "see advanced settings" и включите тумблер Advanced — полеBase URLсуществует только там. - Префиксуйте модель. В
Custom Modelпишитеopenai/+ точный ID изGET /v1/modelsDaoXE, напримерopenai/YOUR_EXACT_MODEL_ID. OpenHands маршрутизирует через LiteLLM, иopenai/…— его префикс провайдера для любого OpenAI-совместимого сервера. - Направьте на DaoXE.
Base URL:https://daoxe.com/v1.API Key: ваш ключ DaoXE. Без UI те же три значения читаются изLLM_MODEL/LLM_BASE_URL/LLM_API_KEY. - Проверьте цикл. Попросите маленькую реальную задачу — показать файлы, поправить опечатку — и убедитесь, что вызовы инструментов исполняются. Если агент «ведёт себя как чат-бот», документация советит сменить модель на сильнее или увеличить контекст — не искать настройку.
# Headless / CLI runs read the same trio
export LLM_MODEL="openai/YOUR_EXACT_MODEL_ID" # the openai/ prefix is required
export LLM_BASE_URL="https://daoxe.com/v1"
export LLM_API_KEY="***"
Что важно учесть
Префикс openai/ — не косметика: по нему OpenHands выбирает провайдера; без префикса профиль попадает не на тот путь, и в таблице траблшутинга доков это ровно строка "Provider is not recognized". Всё после префикса должно совпадать с id из GET /v1/models вашего эндпоинта; ID моделей DaoXE привязаны к аккаунту — читайте их, не угадывайте. Base URL проверяется с бэкенда, а не из браузера: OpenHands обычно работает в Docker, где 127.0.0.1 — это контейнер, поэтому примеры доков для локальных серверов используют http://host.docker.internal:<port>/v1. Хостинговый URL DaoXE из контейнера работает, если исходящий HTTPS не блокируется. Слабая модель ломает цикл: доки рекомендуют самый сильный доступный модели; модель, игнорирующая вызовы инструментов, выглядит как баг шлюза, но это проблема модели. Именованные конфиги наследуют: секции [llm.<profile>] в config.toml копируют всё из блока [llm] — один base URL кормит все профили. Больше клиентов — в заметки по настройке клиентов.
Убедитесь, что отдают настоящую модель#
Сначала проверьте эндпоинт, а не клиент — если это не работает, настройки не помогут:
export DAOXE_API_KEY="your_api_key"
# List the exact model IDs your account can call
curl --fail-with-body --show-error --silent \
https://daoxe.com/v1/models \
-H "Authorization: Bearer ${DAOXE_API_KEY}"Сначала проверьте эндпоинт вне агента, затем сравните сложную задачу с официальным API при temperature 0:
curl --fail-with-body --show-error --silent \
https://daoxe.com/v1/chat/completions \
-H "Authorization: Bearer ${DAOXE_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_EXACT_MODEL_ID",
"max_tokens": 64,
"messages": [{"role": "user", "content": "Say hello in one sentence."}]
}'Проверяйте нас, а не верьте на слово
Направьте открытый бенчмарк на DaoXE и на официальный API и сравните при temperature 0. Затем изучите, как поймать подмену модели, чтобы дешёвый эндпоинт не подменил вам модель на меньшую.
Частые вопросы#
OpenHands работает с DaoXE?
Да — в Settings → LLM включите Advanced, Custom Model = openai/YOUR_EXACT_MODEL_ID, Base URL = https://daoxe.com/v1, плюс ваш ключ. Технически это провайдер openai/ в LiteLLM, направленный на DaoXE.
Зачем префикс openai/ в названии модели?
Так OpenHands (через LiteLLM) понимает: «любой OpenAI-совместимый сервер по этому base URL». Остаток строки обязан совпадать с точным ID из GET /v1/models, иначе будут ошибки неверной модели.
OpenHands не видит мой base URL — почему?
URL опрашивается бэкендом OpenHands, обычно из Docker-контейнера, где localhost — сам контейнер. Для хостингового DaoXE проверьте исходящий HTTPS/прокси контейнера; паттерн host.docker.internal из доков — про локальные серверы моделей.
Сколько стоит?
По моделям и аккаунту — актуальные цены; пополнение — фиксированные 1 ¥ = $1 квоты.
Попробуйте DaoXE — и проверьте его сами
Один ключ для GPT, Claude, Gemini, DeepSeek и других. Направьте открытый бенчмарк на нас и сравните — не верьте на слово.