Перейти к основному содержанию
inferrs может обслуживать локальные модели через OpenAI-совместимый API /v1. OpenClaw работает с inferrs через общий путь openai-completions.
СвойствоЗначение
Идентификатор провайдераinferrs (пользовательский; настраивается в models.providers.inferrs)
Pluginнет — inferrs не является встроенным Plugin провайдера OpenClaw
Переменная окружения authНеобязательно. Подойдет любое значение, если у вашего сервера inferrs нет auth
APIOpenAI-совместимый (openai-completions)
Предлагаемый базовый URLhttp://127.0.0.1:8080/v1 (или там, где находится ваш сервер inferrs)
В настоящее время inferrs лучше рассматривать как пользовательский самостоятельно размещаемый OpenAI-совместимый бэкенд, а не как выделенный Plugin провайдера OpenClaw. Вы настраиваете его через models.providers.inferrs, а не через флаг выбора при первичной настройке. Если вам нужен настоящий встроенный Plugin с автообнаружением, см. SGLang или vLLM.

Начало работы

1

Запустите inferrs с моделью

inferrs serve google/gemma-4-E2B-it \
  --host 127.0.0.1 \
  --port 8080 \
  --device metal
2

Проверьте, что сервер доступен

curl http://127.0.0.1:8080/health
curl http://127.0.0.1:8080/v1/models
3

Добавьте запись провайдера 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,
            },
          },
        ],
      },
    },
  },
}

Запуск по требованию

Inferrs также может запускаться OpenClaw только тогда, когда выбрана модель 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 и поместите этот путь в конфигурацию. Полный справочник полей см. в разделе Сервисы локальных моделей.

Расширенная конфигурация

Некоторые маршруты Chat Completions в inferrs принимают только строковый messages[].content, а не структурированные массивы частей контента.
Если запуски OpenClaw завершаются ошибкой вида:
messages[1].content: invalid type: sequence, expected a string
задайте compat.requiresStringContent: true в записи модели.
compat: {
  requiresStringContent: true
}
OpenClaw преобразует части чисто текстового контента в обычные строки перед отправкой запроса.
Некоторые текущие сочетания inferrs + Gemma принимают небольшие прямые запросы /v1/chat/completions, но все равно завершаются ошибкой на полных ходах среды выполнения агента OpenClaw.Если это происходит, сначала попробуйте следующее:
compat: {
  requiresStringContent: true,
  supportsTools: false
}
Это отключает поверхность схемы инструментов OpenClaw для модели и может снизить нагрузку промпта на более строгие локальные бэкенды.Если крошечные прямые запросы по-прежнему работают, но обычные ходы агента 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":"What is 2 + 2?"}],"stream":false}'
openclaw infer model run \
  --model inferrs/google/gemma-4-E2B-it \
  --prompt "What is 2 + 2? Reply with one short sentence." \
  --json
Если первая команда работает, а вторая завершается ошибкой, проверьте раздел устранения неполадок ниже.
inferrs рассматривается как OpenAI-совместимый бэкенд /v1 в стиле прокси, а не как нативная конечная точка OpenAI.
  • Формирование запросов, предназначенное только для нативного OpenAI, здесь не применяется
  • Нет service_tier, нет Responses store, нет подсказок prompt-cache и нет формирования полезной нагрузки совместимости reasoning OpenAI
  • Скрытые заголовки атрибуции OpenClaw (originator, version, User-Agent) не внедряются для пользовательских базовых URL inferrs

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

inferrs не запущен, недоступен или не привязан к ожидаемым хосту/порту. Убедитесь, что сервер запущен и слушает адрес, который вы настроили.
Задайте compat.requiresStringContent: true в записи модели. Подробнее см. раздел requiresStringContent выше.
Попробуйте задать compat.supportsTools: false, чтобы отключить поверхность схемы инструментов. См. оговорку о схеме инструментов Gemma выше.
Если OpenClaw больше не получает ошибок схемы, но inferrs все еще падает на более крупных ходах агента, рассматривайте это как ограничение вышестоящего inferrs или модели. Снизьте нагрузку промпта или перейдите на другой локальный бэкенд либо модель.
Общую помощь см. в разделах Устранение неполадок и FAQ.

Связанные материалы

Локальные модели

Запуск OpenClaw с локальными серверами моделей.

Сервисы локальных моделей

Запуск локальных серверов моделей по требованию для настроенных провайдеров.

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

Отладка локальных OpenAI-совместимых бэкендов, которые проходят пробы, но завершаются ошибкой при запусках агента.

Выбор модели

Обзор всех провайдеров, ссылок на модели и поведения при отказе.