Concepts and configuration

CLI моделей

Посилання на моделі вибирають провайдера й модель. Зазвичай вони не вибирають низькорівневе середовище виконання агента. Наприклад, openai/gpt-5.5 може запускатися через звичайний шлях провайдера OpenAI або через середовище виконання app-server Codex, залежно від agents.defaults.agentRuntime.id. У режимі середовища виконання Codex посилання openai/gpt-* не означає оплату за API-ключем; автентифікація може надходити з облікового запису Codex або профілю автентифікації openai-codex. Див. Середовища виконання агентів.

Як працює вибір моделі

OpenClaw вибирає моделі в такому порядку:

  • Основна модель

    agents.defaults.model.primary (або agents.defaults.model).

  • Резервні варіанти

    agents.defaults.model.fallbacks (за порядком).

  • Аварійне перемикання автентифікації провайдера

    Аварійне перемикання автентифікації відбувається всередині провайдера перед переходом до наступної моделі.

  • Пов’язані поверхні моделей
    • agents.defaults.models — це allowlist/каталог моделей, які OpenClaw може використовувати (плюс псевдоніми).
    • agents.defaults.imageModel використовується лише тоді, коли основна модель не може приймати зображення.
    • agents.defaults.pdfModel використовується інструментом pdf. Якщо пропущено, інструмент повертається до agents.defaults.imageModel, а потім до розв’язаної моделі сеансу/типової моделі.
    • agents.defaults.imageGenerationModel використовується спільною можливістю генерації зображень. Якщо пропущено, image_generate все одно може визначити типовий провайдер із підтриманою автентифікацією. Спершу він пробує поточного типового провайдера, потім решту зареєстрованих провайдерів генерації зображень у порядку provider-id. Якщо ви задаєте конкретного провайдера/модель, також налаштуйте автентифікацію/API-ключ цього провайдера.
    • agents.defaults.musicGenerationModel використовується спільною можливістю генерації музики. Якщо пропущено, music_generate все одно може визначити типовий провайдер із підтриманою автентифікацією. Спершу він пробує поточного типового провайдера, потім решту зареєстрованих провайдерів генерації музики в порядку provider-id. Якщо ви задаєте конкретного провайдера/модель, також налаштуйте автентифікацію/API-ключ цього провайдера.
    • agents.defaults.videoGenerationModel використовується спільною можливістю генерації відео. Якщо пропущено, video_generate все одно може визначити типовий провайдер із підтриманою автентифікацією. Спершу він пробує поточного типового провайдера, потім решту зареєстрованих провайдерів генерації відео в порядку provider-id. Якщо ви задаєте конкретного провайдера/модель, також налаштуйте автентифікацію/API-ключ цього провайдера.
    • Типові параметри окремого агента можуть перевизначати agents.defaults.model через agents.list[].model плюс прив’язки (див. Маршрутизація кількох агентів).

    Джерело вибору та поведінка резервного переходу

    Те саме provider/model може означати різні речі залежно від того, звідки воно взялося:

    • Налаштовані типові значення (agents.defaults.model.primary і основні моделі конкретних агентів) є звичайною відправною точкою та використовують agents.defaults.model.fallbacks.
    • Автоматичні резервні вибори — це тимчасовий стан відновлення. Вони зберігаються з modelOverrideSource: "auto", щоб наступні ходи могли продовжувати використовувати ланцюг резервних варіантів без попередньої перевірки відомо несправної основної моделі.
    • Вибори користувача в сеансі є точними. /model, вибирач моделі, session_status(model=...) і sessions.patch зберігають modelOverrideSource: "user"; якщо вибраний провайдер/модель недоступний, OpenClaw явно завершується з помилкою, а не переходить до іншої налаштованої моделі.
    • Cron --model / корисне навантаження model — це основна модель для окремого завдання. Вона все одно використовує налаштовані резервні варіанти, якщо завдання не надає явне корисне навантаження fallbacks (використовуйте fallbacks: [] для строгого запуску cron).
    • Вибирачі типової моделі CLI та allowlist поважають models.mode: "replace", показуючи явні models.providers.*.models замість завантаження повного вбудованого каталогу.
    • Вибирач моделей Control UI запитує в Gateway налаштований вигляд моделей: agents.defaults.models, якщо присутній, інакше явні models.providers.*.models плюс провайдери з придатною автентифікацією. Повний вбудований каталог зарезервовано для явних переглядових подань, таких як models.list із view: "all" або openclaw models list --all.

    Коротка політика моделей

    • Задайте основною найпотужнішу модель найновішого покоління, доступну вам.
    • Використовуйте резервні варіанти для завдань, чутливих до вартості/затримки, і чатів із нижчим рівнем ризику.
    • Для агентів із підтримкою інструментів або недовірених вхідних даних уникайте старіших/слабших рівнів моделей.

    Онбординг (рекомендовано)

    Якщо ви не хочете редагувати конфігурацію вручну, запустіть онбординг:

    openclaw onboard
    

    Він може налаштувати модель + автентифікацію для поширених провайдерів, зокрема підписку OpenAI Code (Codex) (OAuth) та Anthropic (API-ключ або Claude CLI).

    Ключі конфігурації (огляд)

    • agents.defaults.model.primary і agents.defaults.model.fallbacks
    • agents.defaults.imageModel.primary і agents.defaults.imageModel.fallbacks
    • agents.defaults.pdfModel.primary і agents.defaults.pdfModel.fallbacks
    • agents.defaults.imageGenerationModel.primary і agents.defaults.imageGenerationModel.fallbacks
    • agents.defaults.videoGenerationModel.primary і agents.defaults.videoGenerationModel.fallbacks
    • agents.defaults.models (allowlist + псевдоніми + параметри провайдера)
    • models.providers (власні провайдери, записані в models.json)

    Безпечні редагування allowlist

    Використовуйте додавальні записи, коли оновлюєте agents.defaults.models вручну:

    openclaw config set agents.defaults.models '{"openai/gpt-5.4":{}}' --strict-json --merge
    
    Правила захисту від перезапису

    openclaw config set захищає мапи моделей/провайдерів від випадкового перезапису. Звичайне присвоєння об’єкта до agents.defaults.models, models.providers або models.providers.<id>.models відхиляється, якщо воно видалило б наявні записи. Використовуйте --merge для додавальних змін; використовуйте --replace лише тоді, коли надане значення має стати повним цільовим значенням.

    Інтерактивне налаштування провайдера та openclaw configure --section model також зливають вибори в межах провайдера з наявним allowlist, тому додавання Codex, Ollama або іншого провайдера не видаляє непов’язані записи моделей. Configure зберігає наявний agents.defaults.model.primary, коли автентифікацію провайдера застосовано повторно. Явні команди встановлення типового значення, як-от openclaw models auth login --provider <id> --set-default і openclaw models set <model>, усе одно замінюють agents.defaults.model.primary.

    "Модель не дозволена" (і чому відповіді зупиняються)

    Якщо agents.defaults.models задано, він стає allowlist для /model і перевизначень сеансу. Коли користувач вибирає модель, якої немає в цьому allowlist, OpenClaw повертає:

    Model "provider/model" is not allowed. Use /models to list providers, or /models <provider> to list models.
    Add it with: openclaw config set agents.defaults.models '{"provider/model":{}}' --strict-json --merge
    

    Коли відхилена команда містила перевизначення середовища виконання, як-от /model openai/gpt-5.5 --runtime codex, спершу виправте allowlist, а потім повторіть ту саму команду /model ... --runtime .... Для нативного виконання Codex вибрана модель усе ще openai/gpt-5.5; середовище виконання codex вибирає harness і окремо використовує автентифікацію Codex.

    Для локальних/GGUF-моделей зберігайте повне посилання з префіксом провайдера в allowlist, наприклад ollama/gemma4:26b, lmstudio/Gemma4-26b-a4-it-gguf або точний provider/model, показаний openclaw models list --provider <provider>. Самих локальних імен файлів або відображуваних назв недостатньо, коли allowlist активний.

    Приклад конфігурації allowlist:

    {
      agent: {
        model: { primary: "anthropic/claude-sonnet-4-6" },
        models: {
          "anthropic/claude-sonnet-4-6": { alias: "Sonnet" },
          "anthropic/claude-opus-4-6": { alias: "Opus" },
        },
      },
    }
    

    Перемикання моделей у чаті (/model)

    Ви можете перемикати моделі для поточного сеансу без перезапуску:

    /model
    /model list
    /model 3
    /model openai/gpt-5.4
    /model status
    
    Поведінка вибирача
    • /model/model list) — це компактний нумерований вибирач (родина моделей + доступні провайдери).
    • У Discord /model і /models відкривають інтерактивний вибирач із випадаючими списками провайдера й моделі та кроком Submit.
    • У Telegram вибори вибирача /models мають область дії сеансу; вони не змінюють сталий типовий параметр агента в openclaw.json.
    • /models add застаріла й тепер повертає повідомлення про застарілість замість реєстрації моделей із чату.
    • /model <#> вибирає з цього вибирача.
    Збереження та живе перемикання
    • /model негайно зберігає новий вибір сеансу.
    • Якщо агент простоює, наступний запуск одразу використовує нову модель.
    • Якщо запуск уже активний, OpenClaw позначає живе перемикання як очікуване й перезапускається з новою моделлю лише в чистій точці повтору.
    • Якщо активність інструментів або виведення відповіді вже почалися, очікуване перемикання може залишатися в черзі до пізнішої можливості повтору або наступного ходу користувача.
    • Вибране користувачем посилання /model є строгим для цього сеансу: якщо вибраний провайдер/модель недоступний, відповідь явно завершується з помилкою, а не мовчки відповідає з agents.defaults.model.fallbacks. Це відрізняється від налаштованих типових значень і основних моделей завдань cron, які все одно можуть використовувати ланцюги резервних варіантів.
    • /model status — це докладний вигляд (кандидати автентифікації та, якщо налаштовано, endpoint провайдера baseUrl + режим api).
    Розбір посилань
    • Посилання на моделі розбираються поділом за першим /. Використовуйте provider/model, коли вводите /model <ref>.
    • Якщо сам ID моделі містить / (у стилі OpenRouter), потрібно вказати префікс провайдера (приклад: /model openrouter/moonshotai/kimi-k2).
    • Якщо ви пропустите провайдера, OpenClaw розв’язує введення в такому порядку:
      1. збіг псевдоніма
      2. унікальний збіг налаштованого провайдера для цього точного id моделі без префікса
      3. застарілий резервний перехід до налаштованого типового провайдера — якщо цей провайдер більше не надає налаштовану типову модель, OpenClaw натомість повертається до першого налаштованого провайдера/моделі, щоб не показувати застаріле типове значення видаленого провайдера.

    Повна поведінка команд/конфігурація: Slash-команди.

    Команди CLI

    openclaw models list
    openclaw models status
    openclaw models set <provider/model>
    openclaw models set-image <provider/model>
    
    openclaw models aliases list
    openclaw models aliases add <alias> <provider/model>
    openclaw models aliases remove <alias>
    
    openclaw models fallbacks list
    openclaw models fallbacks add <provider/model>
    openclaw models fallbacks remove <provider/model>
    openclaw models fallbacks clear
    
    openclaw models image-fallbacks list
    openclaw models image-fallbacks add <provider/model>
    openclaw models image-fallbacks remove <provider/model>
    openclaw models image-fallbacks clear
    

    openclaw models (без підкоманди) — це скорочення для models status.

    models list

    Показує налаштовані/доступні для автентифікації моделі за замовчуванням. Корисні прапорці:

    --allboolean

    Повний каталог. Містить вбудовані статичні рядки каталогу, що належать провайдеру, ще до налаштування автентифікації, тож подання лише для виявлення можуть показувати моделі, недоступні, доки ви не додасте відповідні облікові дані провайдера.

    --localboolean

    Лише локальні провайдери.

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcHJvdmlkZXIgPGlk " type="string"> Фільтрувати за id провайдера, наприклад moonshot. Відображувані мітки з інтерактивних засобів вибору не приймаються.

    --plainboolean

    Одна модель на рядок.

    --jsonboolean

    Машиночитаний вивід.

    models status

    Показує розв’язану основну модель, резервні варіанти, модель зображень і огляд автентифікації налаштованих провайдерів. Також показує стан завершення терміну дії OAuth для профілів, знайдених у сховищі автентифікації (за замовчуванням попереджає в межах 24 годин). --plain друкує лише розв’язану основну модель.

    Поведінка автентифікації та перевірки
    • Стан OAuth показується завжди (і включається у вивід --json). Якщо налаштований провайдер не має облікових даних, models status друкує розділ Відсутня автентифікація.
    • JSON містить auth.oauth (вікно попередження + профілі) і auth.providers (ефективна автентифікація для кожного провайдера, зокрема облікові дані з env). auth.oauth — це лише стан профілів у сховищі автентифікації; провайдери лише з env там не з’являються.
    • Використовуйте --check для автоматизації (код виходу 1, коли відсутні/прострочені, 2, коли скоро завершиться термін дії).
    • Використовуйте --probe для живих перевірок автентифікації; рядки перевірки можуть надходити з профілів автентифікації, облікових даних env або models.json.
    • Якщо явний auth.order.<provider> пропускає збережений профіль, перевірка повідомляє excluded_by_auth_order замість спроби використати його. Якщо автентифікація існує, але для цього провайдера не можна розв’язати модель, придатну для перевірки, перевірка повідомляє status: no_model.

    Приклад (Claude CLI):

    claude auth login
    openclaw models status
    

    Сканування (безкоштовні моделі OpenRouter)

    openclaw models scan перевіряє каталог безкоштовних моделей OpenRouter і може додатково перевіряти моделі на підтримку інструментів і зображень.

    --no-probeboolean

    Пропустити живі перевірки (лише метадані).

    "--min-params
    "--max-age-days
    "--provider
    "--max-candidates
    --set-defaultboolean

    Установити agents.defaults.model.primary на перший вибір.

    --set-imageboolean

    Установити agents.defaults.imageModel.primary на перший вибір зображення.

    Результати сканування ранжуються за:

    1. Підтримкою зображень
    2. Затримкою інструментів
    3. Розміром контексту
    4. Кількістю параметрів

    Вхідні дані:

    • Список OpenRouter /models (фільтр :free)
    • Живі перевірки потребують ключа API OpenRouter з профілів автентифікації або OPENROUTER_API_KEY (див. Змінні середовища)
    • Необов’язкові фільтри: --max-age-days, --min-params, --provider, --max-candidates
    • Елементи керування запитами/перевірками: --timeout, --concurrency

    Коли живі перевірки виконуються в TTY, ви можете інтерактивно вибрати резервні варіанти. У неінтерактивному режимі передайте --yes, щоб прийняти типові значення. Результати лише метаданих мають інформаційний характер; --set-default і --set-image потребують живих перевірок, щоб OpenClaw не налаштував непридатну для використання модель OpenRouter без ключа.

    Реєстр моделей (models.json)

    Користувацькі провайдери в models.providers записуються в models.json у каталозі агента (за замовчуванням ~/.openclaw/agents/<agentId>/agent/models.json). Цей файл об’єднується за замовчуванням, якщо models.mode не встановлено на replace.

    Пріоритет режиму об’єднання

    Пріоритет режиму об’єднання для відповідних ID провайдерів:

    • Непорожній baseUrl, уже присутній у models.json агента, має перевагу.
    • Непорожній apiKey у models.json агента має перевагу лише тоді, коли цей провайдер не керується SecretRef у поточному контексті конфігурації/профілю автентифікації.
    • Значення apiKey провайдера, керованого SecretRef, оновлюються з маркерів джерела (ENV_VAR_NAME для env-посилань, secretref-managed для file/exec-посилань) замість збереження розв’язаних секретів.
    • Значення заголовків провайдера, керованого SecretRef, оновлюються з маркерів джерела (secretref-env:ENV_VAR_NAME для env-посилань, secretref-managed для file/exec-посилань).
    • Порожні або відсутні apiKey/baseUrl агента повертаються до models.providers конфігурації.
    • Інші поля провайдера оновлюються з конфігурації та нормалізованих даних каталогу.

    Пов’язане