Providers
Inferrs
inferrs предоставляет локальные модели через совместимый с OpenAI API /v1. OpenClaw взаимодействует с ним через универсальный адаптер openai-completions.
| Свойство | Значение |
|---|---|
| Идентификатор провайдера | inferrs (пользовательский; настраивается в models.providers.inferrs) |
| Плагин | отсутствует — это не встроенный плагин провайдера OpenClaw |
| Переменная среды аутентификации | не требуется; если сервер inferrs не использует аутентификацию, подойдет любое значение |
| API | совместимый с OpenAI (openai-completions) |
| Рекомендуемый базовый URL | http://127.0.0.1:8080/v1 (или адрес, на котором принимает подключения сервер inferrs) |
Начало работы
Запустите inferrs с моделью
inferrs serve google/gemma-4-E2B-it \ --host 127.0.0.1 \ --port 8080 \ --device metalУбедитесь, что сервер доступен
curl http://127.0.0.1:8080/healthcurl http://127.0.0.1:8080/v1/modelsДобавьте запись провайдера OpenClaw
Добавьте явную запись провайдера и укажите ее для модели по умолчанию. См. пример конфигурации ниже.
Полный пример конфигурации
Gemma 4 на локальном сервере inferrs:
{ agents: { defaults: { model: { primary: "inferrs/google/gemma-4-E2B-it" }, models: { "inferrs/google/gemma-4-E2B-it": { alias: "Gemma 4 (inferrs)", }, }, }, }, models: { mode: "merge", providers: { inferrs: { baseUrl: "http://127.0.0.1:8080/v1", apiKey: "inferrs-local", api: "openai-completions", models: [ { id: "google/gemma-4-E2B-it", name: "Gemma 4 E2B (inferrs)", reasoning: false, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 131072, maxTokens: 4096, compat: { requiresStringContent: true, }, }, ], }, }, },}Запуск по требованию
OpenClaw может самостоятельно запускать inferrs только при выборе модели inferrs/.... Добавьте localService в ту же запись провайдера:
{ models: { providers: { inferrs: { baseUrl: "http://127.0.0.1:8080/v1", apiKey: "inferrs-local", api: "openai-completions", timeoutSeconds: 300, localService: { command: "/opt/homebrew/bin/inferrs", args: [ "serve", "google/gemma-4-E2B-it", "--host", "127.0.0.1", "--port", "8080", "--device", "metal", ], healthUrl: "http://127.0.0.1:8080/v1/models", readyTimeoutMs: 180000, idleStopMs: 0, }, models: [ { id: "google/gemma-4-E2B-it", name: "Gemma 4 E2B (inferrs)", reasoning: false, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 131072, maxTokens: 4096, compat: { requiresStringContent: true, }, }, ], }, }, },}command должен быть абсолютным путем. Выполните which inferrs на хосте Gateway и используйте полученный путь. Полное описание полей: Сервисы локальных моделей.
Расширенная конфигурация
Почему requiresStringContent имеет значение
Некоторые маршруты Chat Completions inferrs принимают в messages[].content только строки, а не структурированные массивы частей содержимого.
Ограничение Gemma и схемы инструментов
Некоторые сочетания inferrs и Gemma принимают небольшие прямые запросы /v1/chat/completions, но завершаются сбоем при полных циклах среды выполнения агента OpenClaw. Сначала попробуйте отключить поверхность схемы инструментов:
compat: { requiresStringContent: true, supportsTools: false}Это снижает нагрузку промпта на более строгие локальные бэкенды. Если небольшие прямые запросы по-прежнему работают, но обычные циклы агента OpenClaw продолжают завершаться сбоем внутри inferrs, считайте это ограничением вышестоящей модели или сервера, а не проблемой транспорта OpenClaw.
Ручная быстрая проверка
После настройки проверьте оба уровня:
curl http://127.0.0.1:8080/v1/chat/completions \ -H 'content-type: application/json' \ -d '{"model":"google/gemma-4-E2B-it","messages":[{"role":"user","content":"Сколько будет 2 + 2?"}],"stream":false}'openclaw infer model run \ --model inferrs/google/gemma-4-E2B-it \ --prompt "Сколько будет 2 + 2? Ответьте одним коротким предложением." \ --jsonЕсли первая команда работает, а вторая завершается сбоем, см. раздел «Устранение неполадок» ниже.
Поведение в режиме прокси
Поскольку inferrs использует универсальный адаптер openai-completions (а не openai-responses), формирование запросов, предназначенное только для нативного OpenAI, никогда не применяется: не отправляются ни service_tier, ни store Responses, ни подсказки для кэша промптов, ни совместимая с рассуждениями OpenAI структура полезной нагрузки.
Устранение неполадок
Сбой curl /v1/models
inferrs не запущен, недоступен или не привязан к настроенным хосту и порту. Убедитесь, что сервер запущен и прослушивает этот адрес.
messages[].content должна быть строкой
Задайте compat.requiresStringContent: true в записи модели (см. выше).
Прямые вызовы /v1/chat/completions выполняются успешно, но openclaw infer model run завершается сбоем
Задайте compat.supportsTools: false, чтобы отключить поверхность схемы инструментов (см. ограничение Gemma выше).
inferrs по-прежнему аварийно завершается при более крупных циклах агента
Если ошибки схемы устранены, но inferrs по-прежнему аварийно завершается при более крупных циклах агента, считайте это ограничением вышестоящего inferrs или модели. Снизьте нагрузку промпта либо смените бэкенд или модель.
Связанные разделы
Использование OpenClaw с серверами локальных моделей.
Запуск серверов локальных моделей по требованию для настроенных провайдеров.
Отладка локальных совместимых с OpenAI бэкендов, которые успешно проходят проверки, но завершаются сбоем при запусках агента.
Обзор всех провайдеров, ссылок на модели и поведения при переключении после сбоя.