Providers
OpenRouter
OpenRouter направляет запросы ко множеству моделей через единый API и один ключ. Он
совместим с OpenAI, поэтому OpenClaw взаимодействует с ним через тот же
транспорт в стиле openai-completions, который используется для других прокси-провайдеров.
Начало работы
OAuth
Запустите настройку OAuth
openclaw onboard --auth-choice openrouter-oauthOpenClaw открывает в браузере процесс входа в OpenRouter (PKCE), обменивает код на ключ API OpenRouter и сохраняет его в профиле аутентификации OpenRouter по умолчанию. На удалённых серверах или серверах без графического интерфейса OpenClaw выводит URL для входа и после входа просит вставить URL перенаправления.
(Необязательно) Переключитесь на определённую модель
При первоначальной настройке по умолчанию используется openrouter/auto. Позже можно выбрать конкретную модель:
openclaw models set openrouter/<provider>/<model>Ключ API
Получите ключ API
Создайте ключ API на странице openrouter.ai/keys.
Запустите настройку с ключом API
openclaw onboard --auth-choice openrouter-api-key(Необязательно) Переключитесь на определённую модель
При первоначальной настройке по умолчанию используется openrouter/auto. Позже можно выбрать конкретную модель:
openclaw models set openrouter/<provider>/<model>Пример конфигурации
{ env: { OPENROUTER_API_KEY: "sk-or-..." }, agents: { defaults: { model: { primary: "openrouter/auto" }, }, },}Ссылки на модели
Встроенные резервные модели, используемые, когда обнаружение актуального каталога недоступно:
| Ссылка на модель | Примечания |
|---|---|
openrouter/auto |
Автоматическая маршрутизация OpenRouter |
openrouter/moonshotai/kimi-k2.6 |
Kimi K2.6 через MoonshotAI |
openrouter/moonshotai/kimi-k2.5 |
Kimi K2.5 через MoonshotAI |
Любая другая ссылка openrouter/<provider>/<model>, включая
openrouter/openrouter/fusion (см. маршрутизатор Fusion), разрешается
динамически по актуальному каталогу моделей OpenRouter.
Генерация изображений
OpenRouter может служить серверной частью инструмента image_generate. Укажите модель изображений OpenRouter
в параметре agents.defaults.imageGenerationModel:
{ env: { OPENROUTER_API_KEY: "sk-or-..." }, agents: { defaults: { imageGenerationModel: { primary: "openrouter/google/gemini-3.1-flash-image-preview", timeoutMs: 180_000, }, }, },}OpenClaw отправляет запросы на генерацию изображений в API изображений OpenRouter для завершения чата с
modalities: ["image", "text"]. Модели изображений Gemini также получают
подсказки aspectRatio и resolution через image_config OpenRouter; другие
модели изображений их не получают. Для более медленных моделей используйте agents.defaults.imageGenerationModel.timeoutMs;
при этом параметр timeoutMs инструмента image_generate, указанный для отдельного вызова, по-прежнему имеет приоритет.
Генерация видео
OpenRouter может служить серверной частью инструмента video_generate через свой асинхронный
API /videos. Укажите видеомодель OpenRouter в параметре
agents.defaults.videoGenerationModel:
{ env: { OPENROUTER_API_KEY: "sk-or-..." }, agents: { defaults: { videoGenerationModel: { primary: "openrouter/google/veo-3.1-fast", }, }, },}OpenClaw отправляет задания на преобразование текста в видео и изображения в видео, опрашивает возвращённый
polling_url и загружает готовое видео из unsigned_urls OpenRouter
или из конечной точки содержимого задания. По умолчанию эталонные изображения используются
как первый или последний кадр; изображения с тегом reference_image вместо этого отправляются как входные
эталонные изображения. Встроенное значение по умолчанию google/veo-3.1-fast поддерживает длительность 4/6/8
секунд, разрешения 720P/1080P и соотношения сторон 16:9/9:16.
Преобразование видео в видео не поддерживается: вышестоящий API принимает только текстовые ссылки и ссылки
на изображения.
Генерация музыки
OpenRouter может служить серверной частью инструмента music_generate через аудиовывод
завершения чата. Укажите аудиомодель OpenRouter в параметре
agents.defaults.musicGenerationModel:
{ env: { OPENROUTER_API_KEY: "sk-or-..." }, agents: { defaults: { musicGenerationModel: { primary: "openrouter/google/lyria-3-pro-preview", timeoutMs: 180_000, }, }, },}Встроенный музыкальный провайдер OpenRouter по умолчанию использует google/lyria-3-pro-preview
и также предоставляет google/lyria-3-clip-preview. OpenClaw отправляет modalities: ["text", "audio"], принимает ответ в потоковом режиме, собирает фрагменты аудио и сохраняет
результат как сгенерированный медиафайл для доставки в канал. Модели Lyria принимают одно
эталонное изображение через общий параметр music_generate image=....
Потоковое аудио, хранение расшифровки и производная оболочка событий SSE
ограничиваются параметром agents.defaults.mediaMaxMb (ограничение аудио по умолчанию составляет 16 MB).
Преобразование текста в речь
OpenRouter может выступать в качестве провайдера TTS через свой совместимый с OpenAI
эндпоинт /audio/speech.
{ messages: { tts: { auto: "always", provider: "openrouter", providers: { openrouter: { model: "hexgrad/kokoro-82m", speakerVoice: "af_alloy", responseFormat: "mp3", }, }, }, },}Если messages.tts.providers.openrouter.apiKey не указан, TTS последовательно использует резервные варианты
models.providers.openrouter.apiKey, а затем OPENROUTER_API_KEY.
Преобразование речи в текст (входящее аудио)
OpenRouter может транскрибировать входящие голосовые и аудиовложения через общий
путь tools.media.audio, используя свой эндпоинт STT (/audio/transcriptions).
Это применимо к любому плагину канала, который передаёт входящий голос или аудио
на предварительный этап распознавания медиаданных.
{ tools: { media: { audio: { enabled: true, models: [{ provider: "openrouter", model: "openai/whisper-large-v3-turbo" }], }, }, },}OpenClaw отправляет запросы STT в OpenRouter в формате JSON с аудио в кодировке base64
в поле input_audio (согласно контракту STT OpenRouter), а не как загрузки
форм OpenAI в формате multipart.
Маршрутизатор Fusion
OpenRouter Fusion параллельно отправляет одну ссылку на модель OpenClaw нескольким
моделям OpenRouter, поручает OpenRouter оценить их ответы и возвращает один итоговый
ответ через обычный эндпоинт OpenRouter. Идентификатор вышестоящей модели —
openrouter/fusion, поэтому ссылка на модель OpenClaw содержит как префикс
провайдера OpenClaw, так и пространство имён вышестоящего OpenRouter:
openclaw models set openrouter/openrouter/fusionНастройте панель и модель-судью Fusion через params.extraBody модели;
эти поля напрямую передаются в тело запроса chat-completions OpenRouter.
Fusion работает как с OAuth, так и с подключением по API-ключу; если вы
используете OAuth, опустите строку env.OPENROUTER_API_KEY ниже.
{ env: { OPENROUTER_API_KEY: "sk-or-..." }, agents: { defaults: { model: { primary: "openrouter/openrouter/fusion" }, models: { "openrouter/openrouter/fusion": { params: { extraBody: { plugins: [ { id: "fusion", analysis_models: [ "google/gemini-3.5-flash", "moonshotai/kimi-k2.6", "deepseek/deepseek-v4-pro", ], model: "google/gemini-3.5-flash", }, ], }, }, }, }, }, },}analysis_models — параллельная панель; model в конфигурации
плагина Fusion — модель-судья. В обычных запусках агента и чата не задавайте
верхнеуровневому tool_choice значение "required", пытаясь
принудительно включить Fusion: запросы OpenClaw могут содержать собственные
определения инструментов, и обязательный выбор инструмента верхнего уровня может
выбрать один из них вместо маршрутизатора Fusion. При наличии этой конфигурации
плагина Fusion OpenClaw добавляет в системный промпт очищенную заметку со списком
настроенных моделей анализа и модели-судьи, чтобы агент мог отвечать на вопросы
о собственной панели Fusion. Другие поля extraBody в промпт не копируются.
Fusion намеренно работает медленнее: OpenRouter распределяет промпт между несколькими моделями анализа, а затем выполняет этап оценки и синтеза, поэтому задержка выше, чем при прямом запросе к одной модели. Используйте его для взвешенных высококачественных ответов или сценариев эскалации, а не как вариант по умолчанию для задач, чувствительных к задержке. Сохраняйте панель небольшой и выбирайте более быстрые модели анализа и модель-судью, чтобы ускорить ответы.
Проверьте настроенную ссылку однократным локальным вызовом:
openclaw infer model run --local \ --model openrouter/openrouter/fusion \ --prompt "Reply with exactly: FUSION_OK" \ --jsonАутентификация и заголовки
OpenRouter использует Bearer-токен из вашего API-ключа. OAuth OpenRouter — это
процесс входа с PKCE, который выдаёт API-ключ OpenRouter, поэтому OpenClaw
сохраняет результат в том же профиле аутентификации по API-ключу
openrouter:default, который используется при ручной настройке API-ключа.
Чтобы войти или заменить сохранённый ключ в существующей установке без повторного прохождения полной первоначальной настройки:
openclaw models auth login --provider openrouter --method oauthopenclaw models auth login --provider openrouter --method api-keyВ проверенные запросы OpenRouter (https://openrouter.ai/api/v1) OpenClaw добавляет
документированные заголовки атрибуции приложения OpenRouter:
| Заголовок | Значение |
|---|---|
HTTP-Referer |
https://openclaw.ai |
X-OpenRouter-Title |
OpenClaw |
X-OpenRouter-Categories |
cli-agent,cloud-agent,programming-app,creative-writing,writing-assistant,general-chat,personal-agent |
Расширенная конфигурация
Кэширование ответов
Кэширование ответов OpenRouter включается явно. Включите его отдельно для каждой модели:
{ agents: { defaults: { models: { "openrouter/auto": { params: { responseCache: true, responseCacheTtlSeconds: 300, }, }, }, }, },}OpenClaw отправляет X-OpenRouter-Cache: true и, если настроено,
X-OpenRouter-Cache-TTL. responseCacheClear: true принудительно обновляет
ответ для текущего запроса и сохраняет новый ответ. Также принимаются
псевдонимы в snake_case (response_cache, response_cache_ttl_seconds,
response_cache_clear), а также responseCacheTtl /
response_cache_ttl без суффикса Seconds.
Это не связано с кэшированием промптов у провайдера и с маркерами Anthropic
cache_control в OpenRouter. Эта возможность применяется только к
проверенным маршрутам openrouter.ai, но не к пользовательским базовым
URL прокси-серверов.
Маркеры кэша Anthropic
На проверенных маршрутах OpenRouter ссылки на модели Anthropic сохраняют
маркеры Anthropic cache_control из OpenRouter для более эффективного
повторного использования кэша промптов в блоках системных промптов и промптов
разработчика.
Предварительное заполнение рассуждений Anthropic
На проверенных маршрутах OpenRouter для ссылок на модели Anthropic с включённым рассуждением завершающие реплики предварительного заполнения ассистента удаляются до отправки запроса в OpenRouter, что соответствует требованию Anthropic: диалоги с рассуждением должны завершаться репликой пользователя.
Внедрение рассуждений
На поддерживаемых маршрутах, отличных от auto, OpenClaw сопоставляет выбранный уровень рассуждений
с данными рассуждений прокси OpenRouter. openrouter/auto и неподдерживаемые
указания моделей пропускают это внедрение. Устаревшие ссылки openrouter/hunter-alpha также
пропускают его, поскольку на этом выведенном из эксплуатации маршруте OpenRouter мог возвращать текст окончательного ответа
в полях рассуждений.
Повторное воспроизведение рассуждений DeepSeek V4
На проверенных маршрутах OpenRouter openrouter/deepseek/deepseek-v4-flash и
openrouter/deepseek/deepseek-v4-pro заполняют отсутствующее значение reasoning_content в
повторно воспроизводимых ходах ассистента, сохраняя диалоги с рассуждениями и инструментами в требуемом
DeepSeek V4 формате последующих сообщений. Для этих маршрутов OpenClaw отправляет поддерживаемые OpenRouter
значения reasoning.effort: xhigh/max сопоставляются с xhigh,
а любой другой включённый уровень — с high.
Формирование запросов только для OpenAI
OpenRouter работает через совместимый с OpenAI путь в стиле прокси, поэтому специфичное
для нативного OpenAI формирование запросов, такое как serviceTier, Responses store,
данные совместимости рассуждений OpenAI и указания для кэша промптов, не перенаправляется.
Маршруты на базе Gemini
Ссылки OpenRouter на базе Gemini остаются на прокси-пути Gemini: OpenClaw сохраняет там очистку сигнатур рассуждений Gemini, но не включает нативную проверку повторного воспроизведения Gemini или преобразования начальной загрузки.
Метаданные маршрутизации провайдера
OpenRouter поддерживает объект запроса provider для маршрутизации через нижележащих
провайдеров. Настройте политику по умолчанию для всех запросов к текстовым моделям OpenRouter
с помощью models.providers.openrouter.params.provider:
{ models: { providers: { openrouter: { params: { provider: { sort: "latency", require_parameters: true, data_collection: "deny", }, }, }, }, },}OpenClaw передаёт этот объект в OpenRouter как данные запроса provider.
Используйте документированные OpenRouter поля в формате snake_case, включая sort,
only, ignore, order, allow_fallbacks, require_parameters,
data_collection, quantizations, max_price, preferred_max_latency,
preferred_min_throughput, zdr и enforce_distillable_text.
Параметры отдельных моделей переопределяют общий для провайдера объект маршрутизации:
{ agents: { defaults: { models: { "openrouter/anthropic/claude-sonnet-4-6": { params: { provider: { order: ["anthropic"], allow_fallbacks: false, }, }, }, }, }, },}Это применяется только к маршрутам завершения чата OpenRouter. Прямые маршруты Anthropic, Google, OpenAI и пользовательских провайдеров игнорируют параметры маршрутизации OpenRouter.