Providers
Ollama
OpenClaw интегрируется с нативным API Ollama (/api/chat) для размещенных облачных моделей и локальных/самостоятельно размещенных серверов Ollama. Вы можете использовать Ollama в трех режимах: Cloud + Local через доступный хост Ollama, Cloud only с https://ollama.com или Local only с доступным хостом Ollama.
OpenClaw также регистрирует ollama-cloud как полноценный id размещенного провайдера для
прямого использования Ollama Cloud. Используйте ссылки вроде ollama-cloud/kimi-k2.5:cloud, когда
нужна маршрутизация только в облако без совместного использования id локального провайдера ollama.
Для отдельной страницы настройки только для облака см. Ollama Cloud.
Конфигурация провайдера Ollama использует baseUrl как канонический ключ. OpenClaw также принимает baseURL для совместимости с примерами в стиле OpenAI SDK, но в новой конфигурации следует предпочитать baseUrl.
Правила аутентификации
Локальные хосты и хосты LAN
Локальным хостам и хостам LAN Ollama не нужен настоящий bearer token. OpenClaw использует локальный маркер ollama-local только для базовых URL Ollama с loopback, частной сетью, .local и простыми именами хостов.
Удаленные хосты и хосты Ollama Cloud
Удаленные публичные хосты и Ollama Cloud (https://ollama.com) требуют реальные учетные данные через OLLAMA_API_KEY, профиль аутентификации или apiKey провайдера. Для прямого размещенного использования предпочитайте провайдер ollama-cloud.
Пользовательские id провайдеров
Пользовательские id провайдеров, которые задают api: "ollama", следуют тем же правилам. Например, провайдер ollama-remote, указывающий на приватный хост Ollama в LAN, может использовать apiKey: "ollama-local", и подагенты будут разрешать этот маркер через хук провайдера Ollama, а не считать его отсутствующими учетными данными. Поиск по памяти также может задать agents.defaults.memorySearch.provider равным этому пользовательскому id провайдера, чтобы embeddings использовали соответствующий endpoint Ollama.
Профили аутентификации
auth-profiles.json хранит учетные данные для id провайдера. Помещайте настройки endpoint (baseUrl, api, id моделей, заголовки, тайм-ауты) в models.providers.<id>. Старые плоские файлы профилей аутентификации, такие как { "ollama-windows": { "apiKey": "ollama-local" } }, не являются форматом времени выполнения; выполните openclaw doctor --fix, чтобы переписать их в канонический профиль API-ключа ollama-windows:default с резервной копией. baseUrl в этом файле является шумом совместимости и должен быть перенесен в конфигурацию провайдера.
Область embedding памяти
Когда Ollama используется для embeddings памяти, bearer-аутентификация ограничена хостом, где она была объявлена:
- Ключ уровня провайдера отправляется только на хост Ollama этого провайдера.
agents.*.memorySearch.remote.apiKeyотправляется только на свой удаленный хост embedding.- Чистое значение env
OLLAMA_API_KEYрассматривается как соглашение Ollama Cloud и по умолчанию не отправляется локальным или самостоятельно размещенным хостам.
Начало работы
Выберите предпочитаемый способ настройки и режим.
Onboarding (рекомендуется)
Лучше всего для: самого быстрого пути к рабочей облачной или локальной настройке Ollama.
Запустите onboarding
openclaw onboardВыберите Ollama из списка провайдеров.
Выберите режим
- Cloud + Local — локальный хост Ollama плюс облачные модели, маршрутизируемые через этот хост
- Cloud only — размещенные модели Ollama через
https://ollama.com - Local only — только локальные модели
Выберите модель
Cloud only запрашивает OLLAMA_API_KEY и предлагает размещенные облачные значения по умолчанию. Cloud + Local и Local only запрашивают базовый URL Ollama, обнаруживают доступные модели и автоматически загружают выбранную локальную модель, если она еще недоступна. Когда Ollama сообщает об установленном теге :latest, таком как gemma4:latest, настройка показывает эту установленную модель один раз вместо отображения и gemma4, и gemma4:latest или повторной загрузки голого псевдонима. Cloud + Local также проверяет, выполнен ли вход на этом хосте Ollama для доступа к облаку.
Проверьте доступность модели
openclaw models list --provider ollamaНеинтерактивный режим
openclaw onboard --non-interactive \ --auth-choice ollama \ --accept-riskПри необходимости укажите пользовательский базовый URL или модель:
openclaw onboard --non-interactive \ --auth-choice ollama \ --custom-base-url "http://ollama-host:11434" \ --custom-model-id "qwen3.5:27b" \ --accept-riskРучная настройка
Лучше всего для: полного контроля над облачной или локальной настройкой.
Выберите облако или локальный режим
- Cloud + Local: установите Ollama, войдите с помощью
ollama signinи маршрутизируйте облачные запросы через этот хост - Cloud only: используйте
https://ollama.comсOLLAMA_API_KEY - Local only: установите Ollama с ollama.com/download
Загрузите локальную модель (только локальный режим)
ollama pull gemma4# orollama pull gpt-oss:20b# orollama pull llama3.3Включите Ollama для OpenClaw
Для Cloud only используйте настоящий OLLAMA_API_KEY. Для настроек с хостом подойдет любое placeholder-значение:
# Cloudexport OLLAMA_API_KEY="your-ollama-api-key" # Local-onlyexport OLLAMA_API_KEY="ollama-local" # Or configure in your config fileopenclaw config set models.providers.ollama.apiKey "OLLAMA_API_KEY"Просмотрите и задайте модель
openclaw models listopenclaw models set ollama/gemma4Или задайте значение по умолчанию в конфигурации:
{ agents: { defaults: { model: { primary: "ollama/gemma4" }, }, },}Облачные модели
Cloud + Local
Cloud + Local использует доступный хост Ollama как точку управления и для локальных, и для облачных моделей. Это предпочитаемый гибридный поток Ollama.
Используйте Cloud + Local во время настройки. OpenClaw запрашивает базовый URL Ollama, обнаруживает локальные модели с этого хоста и проверяет, выполнен ли вход на хосте для облачного доступа с помощью ollama signin. Когда вход выполнен, OpenClaw также предлагает размещенные облачные значения по умолчанию, такие как kimi-k2.5:cloud, minimax-m2.7:cloud и glm-5.1:cloud.
Если вход на хосте еще не выполнен, OpenClaw сохраняет настройку только локальной, пока вы не выполните ollama signin.
Cloud only
Cloud only работает с размещенным API Ollama по адресу https://ollama.com.
Используйте Cloud only во время настройки. OpenClaw запрашивает OLLAMA_API_KEY, задает baseUrl: "https://ollama.com" и заполняет список размещенных облачных моделей. Этот путь не требует локального сервера Ollama или ollama signin.
Список облачных моделей, показанный во время openclaw onboard, заполняется live из https://ollama.com/api/tags, ограничен 500 записями, поэтому выбор отражает текущий размещенный каталог, а не статический seed. Если ollama.com недоступен или не возвращает моделей во время настройки, OpenClaw возвращается к предыдущим жестко заданным предложениям, чтобы onboarding все равно завершился.
Также можно напрямую настроить первоклассный облачный провайдер:
openclaw onboard --auth-choice ollama-cloudopenclaw models set ollama-cloud/kimi-k2.5:cloudLocal only
В режиме только локальных моделей OpenClaw обнаруживает модели из настроенного экземпляра Ollama. Этот путь предназначен для локальных или самостоятельно размещенных серверов Ollama.
В настоящее время OpenClaw предлагает gemma4 как локальное значение по умолчанию.
Обнаружение моделей (неявный провайдер)
Когда вы задаете OLLAMA_API_KEY (или профиль аутентификации) и не определяете models.providers.ollama или другой пользовательский удаленный провайдер с api: "ollama", OpenClaw обнаруживает модели из локального экземпляра Ollama по адресу http://127.0.0.1:11434.
| Поведение | Детали |
|---|---|
| Запрос каталога | Запрашивает /api/tags |
| Обнаружение возможностей | Использует best-effort обращения к /api/show, чтобы прочитать contextWindow, расширенные параметры Modelfile num_ctx и возможности, включая vision/tools |
| Модели vision | Модели с возможностью vision, сообщенной /api/show, помечаются как поддерживающие изображения (input: ["text", "image"]), поэтому OpenClaw автоматически добавляет изображения в prompt |
| Обнаружение reasoning | Использует возможности /api/show, когда они доступны, включая thinking; возвращается к эвристике по имени модели (r1, reasoning, think), когда Ollama опускает возможности |
| Лимиты токенов | Задает maxTokens равным стандартному ограничению max-token Ollama, используемому OpenClaw |
| Стоимость | Задает все стоимости равными 0 |
Это позволяет избежать ручных записей моделей, сохраняя каталог согласованным с локальным экземпляром Ollama. Вы можете использовать полную ссылку, например ollama/<pulled-model>:latest, в локальном infer model run; OpenClaw разрешает эту установленную модель из live-каталога Ollama без необходимости вручную написанной записи в models.json.
Для хостов Ollama с выполненным входом некоторые модели :cloud могут быть доступны через /api/chat
и /api/show до того, как появятся в /api/tags. Когда вы явно выбираете
полную ссылку ollama/<model>:cloud, OpenClaw проверяет именно эту отсутствующую модель с помощью
/api/show и добавляет ее в runtime-каталог только если Ollama подтверждает
метаданные модели. Опечатки по-прежнему завершаются ошибкой неизвестной модели, а не автоматически создаются.
# See what models are availableollama listopenclaw models listДля узкого smoke test генерации текста, который обходит полную поверхность инструментов агента,
используйте локальный infer model run с полной ссылкой на модель Ollama:
OLLAMA_API_KEY=ollama-local \ openclaw infer model run \ --local \ --model ollama/llama3.2:latest \ --prompt "Reply with exactly: pong" \ --jsonЭтот путь по-прежнему использует настроенный провайдер, аутентификацию и нативный транспорт Ollama OpenClaw, но он не запускает ход chat-agent и не загружает контекст MCP/инструментов. Если это проходит успешно, а обычные ответы агента завершаются ошибкой, далее диагностируйте емкость модели для agent prompt/инструментов.
Для узкого smoke test модели vision на том же легковесном пути добавьте один или несколько
файлов изображений в infer model run. Это отправляет prompt и изображение напрямую в
выбранную модель Ollama vision без загрузки chat-инструментов, памяти или предыдущего
контекста сессии:
OLLAMA_API_KEY=ollama-local \ openclaw infer model run \ --local \ --model ollama/qwen2.5vl:7b \ --prompt "Describe this image in one sentence." \ --file ./photo.jpg \ --jsonmodel run --file принимает файлы, определенные как image/*, включая распространенные входные PNG,
JPEG и WebP. Неизображения отклоняются до вызова Ollama.
Для распознавания речи используйте вместо этого openclaw infer audio transcribe.
Когда вы переключаете разговор с помощью /model ollama/<model>, OpenClaw трактует
это как точный выбор пользователя. Если настроенный Ollama baseUrl
недоступен, следующий ответ завершается ошибкой провайдера вместо того, чтобы незаметно
ответить через другую настроенную резервную модель.
Изолированные задания cron выполняют одну дополнительную локальную проверку безопасности перед запуском хода агента.
Если выбранная модель разрешается в локальный, частной сети или .local
провайдер Ollama и /api/tags недоступен, OpenClaw записывает этот запуск cron
как skipped с выбранным ollama/<model> в тексте ошибки. Предварительная проверка endpoint
кэшируется на 5 минут, поэтому несколько заданий cron, указывающих на один и тот же
остановленный daemon Ollama, не запускают все неудачные запросы к модели.
Проверьте вживую локальный текстовый путь, нативный путь потока и embeddings на локальном Ollama с помощью:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA=1 OPENCLAW_LIVE_OLLAMA_WEB_SEARCH=0 \ pnpm test:live -- extensions/ollama/ollama.live.test.tsДля smoke-тестов ключа API Ollama Cloud укажите live-тесту https://ollama.com
и выберите размещенную модель из текущего каталога:
export OLLAMA_API_KEY='<your-ollama-cloud-api-key>' OPENCLAW_LIVE_TEST=1 \OPENCLAW_LIVE_OLLAMA=1 \OPENCLAW_LIVE_OLLAMA_BASE_URL=https://ollama.com \OPENCLAW_LIVE_OLLAMA_MODEL=glm-5.1:cloud \OPENCLAW_LIVE_OLLAMA_WEB_SEARCH=1 \pnpm test:live -- extensions/ollama/ollama.live.test.tsCloud-smoke запускает текст, нативный поток и веб-поиск. Он по умолчанию пропускает embeddings для
https://ollama.com, потому что ключи API Ollama Cloud могут не давать доступ к
/api/embed. Установите OPENCLAW_LIVE_OLLAMA_EMBEDDINGS=1, если вы явно хотите,
чтобы live-тест завершался ошибкой, если настроенный cloud-ключ не может использовать endpoint embed.
Чтобы добавить новую модель, просто загрузите ее через Ollama:
ollama pull mistralНовая модель будет автоматически обнаружена и доступна для использования.
Зрение и описание изображений
Встроенный Plugin Ollama регистрирует Ollama как провайдера понимания медиа с поддержкой изображений. Это позволяет OpenClaw маршрутизировать явные запросы на описание изображений и настроенные значения по умолчанию для image-моделей через локальные или размещенные vision-модели Ollama.
Для локального зрения загрузите модель, поддерживающую изображения:
ollama pull qwen2.5vl:7bexport OLLAMA_API_KEY="ollama-local"Затем проверьте через infer CLI:
openclaw infer image describe \ --file ./photo.jpg \ --model ollama/qwen2.5vl:7b \ --json--model должен быть полной ссылкой <provider/model>. Когда он задан, openclaw infer image describe запускает эту модель напрямую вместо пропуска описания из-за того, что модель поддерживает нативное зрение.
Используйте infer image describe, когда вам нужен поток провайдера понимания изображений OpenClaw, настроенный agents.defaults.imageModel и форма вывода описания изображения. Используйте infer model run --file, когда вам нужна сырая проверка мультимодальной модели с пользовательским prompt и одним или несколькими изображениями.
Чтобы сделать Ollama моделью понимания изображений по умолчанию для входящих медиа, настройте agents.defaults.imageModel:
{ agents: { defaults: { imageModel: { primary: "ollama/qwen2.5vl:7b", }, }, },}Предпочитайте полную ссылку ollama/<model>. Если та же модель указана в models.providers.ollama.models с input: ["text", "image"] и никакой другой настроенный провайдер изображений не предоставляет этот bare ID модели, OpenClaw также нормализует bare-ссылку imageModel, например qwen2.5vl:7b, в ollama/qwen2.5vl:7b. Если более одного настроенного провайдера изображений имеет один и тот же bare ID, явно используйте префикс провайдера.
Медленным локальным vision-моделям может требоваться более долгий timeout понимания изображений, чем cloud-моделям. Они также могут аварийно завершаться или останавливаться, когда Ollama пытается выделить полный заявленный vision-контекст на ограниченном оборудовании. Задайте timeout для capability и ограничьте num_ctx в записи модели, когда вам нужен только обычный ход описания изображения:
{ models: { providers: { ollama: { models: [ { id: "qwen2.5vl:7b", name: "qwen2.5vl:7b", input: ["text", "image"], params: { num_ctx: 2048, keep_alive: "1m" }, }, ], }, }, }, tools: { media: { image: { timeoutSeconds: 180, models: [{ provider: "ollama", model: "qwen2.5vl:7b", timeoutSeconds: 300 }], }, }, },}Этот timeout применяется к пониманию входящих изображений и к явному инструменту image, который агент может вызвать во время хода. models.providers.ollama.timeoutSeconds на уровне провайдера по-прежнему управляет базовой защитой HTTP-запроса Ollama для обычных вызовов модели.
Проверьте вживую явный инструмент image на локальном Ollama с помощью:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA_IMAGE=1 \ pnpm test:live -- src/agents/tools/image-tool.ollama.live.test.tsЕсли вы определяете models.providers.ollama.models вручную, пометьте vision-модели поддержкой входных изображений:
{ id: "qwen2.5vl:7b", name: "qwen2.5vl:7b", input: ["text", "image"], contextWindow: 128000, maxTokens: 8192,}OpenClaw отклоняет запросы описания изображений для моделей, которые не помечены как поддерживающие изображения. При неявном обнаружении OpenClaw считывает это из Ollama, когда /api/show сообщает о capability vision.
Конфигурация
Базовая (неявное обнаружение)
Самый простой локальный путь включения — через переменную окружения:
export OLLAMA_API_KEY="ollama-local"Явная (ручные модели)
Используйте явную конфигурацию, когда вам нужна настройка размещенного cloud, Ollama работает на другом хосте/порту, вы хотите принудительно задать конкретные окна контекста или списки моделей либо хотите полностью ручные определения моделей.
{ models: { providers: { ollama: { baseUrl: "https://ollama.com", apiKey: "OLLAMA_API_KEY", api: "ollama", models: [ { id: "kimi-k2.5:cloud", name: "kimi-k2.5:cloud", reasoning: false, input: ["text", "image"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 128000, maxTokens: 8192 } ] } } }}Пользовательский базовый URL
Если Ollama работает на другом хосте или порту (явная конфигурация отключает автообнаружение, поэтому определите модели вручную):
{ models: { providers: { ollama: { apiKey: "ollama-local", baseUrl: "http://ollama-host:11434", // Без /v1 - используйте URL нативного API Ollama api: "ollama", // Задайте явно, чтобы гарантировать нативное поведение вызова инструментов timeoutSeconds: 300, // Необязательно: дайте холодным локальным моделям больше времени на подключение и потоковую передачу models: [ { id: "qwen3:32b", name: "qwen3:32b", params: { keep_alive: "15m", // Необязательно: держать модель загруженной между ходами }, }, ], }, }, },}Распространенные рецепты
Используйте их как отправные точки и замените ID моделей точными именами из ollama list или openclaw models list --provider ollama.
Локальная модель с автообнаружением
Используйте это, когда Ollama работает на той же машине, что и Gateway, и вы хотите, чтобы OpenClaw автоматически обнаруживал установленные модели.
ollama serveollama pull gemma4export OLLAMA_API_KEY="ollama-local"openclaw models list --provider ollamaopenclaw models set ollama/gemma4Этот путь сохраняет конфигурацию минимальной. Не добавляйте блок models.providers.ollama, если не хотите определять модели вручную.
LAN-хост Ollama с ручными моделями
Используйте нативные URL Ollama для LAN-хостов. Не добавляйте /v1.
{ models: { providers: { ollama: { baseUrl: "http://gpu-box.local:11434", apiKey: "ollama-local", api: "ollama", timeoutSeconds: 300, contextWindow: 32768, maxTokens: 8192, models: [ { id: "qwen3.5:9b", name: "qwen3.5:9b", reasoning: true, input: ["text"], params: { num_ctx: 32768, thinking: false, keep_alive: "15m", }, }, ], }, }, }, agents: { defaults: { model: { primary: "ollama/qwen3.5:9b" }, }, },}contextWindow — это бюджет контекста на стороне OpenClaw. params.num_ctx отправляется в Ollama для запроса. Держите их согласованными, когда ваше оборудование не может запустить полный заявленный контекст модели.
Только Ollama Cloud
Используйте это, когда вы не запускаете локальный daemon и хотите напрямую использовать размещенные модели Ollama.
export OLLAMA_API_KEY="your-ollama-api-key"{ models: { providers: { ollama: { baseUrl: "https://ollama.com", apiKey: "OLLAMA_API_KEY", api: "ollama", models: [ { id: "kimi-k2.5:cloud", name: "kimi-k2.5:cloud", reasoning: false, input: ["text", "image"], contextWindow: 128000, maxTokens: 8192, }, ], }, }, }, agents: { defaults: { model: { primary: "ollama/kimi-k2.5:cloud" }, }, },}Cloud плюс локальные модели через daemon с выполненным входом
Используйте это, когда локальный или LAN daemon Ollama вошел в систему через ollama signin и должен обслуживать и локальные модели, и модели :cloud.
ollama signinollama pull gemma4{ models: { providers: { ollama: { baseUrl: "http://127.0.0.1:11434", apiKey: "ollama-local", api: "ollama", timeoutSeconds: 300, models: [ { id: "gemma4", name: "gemma4", input: ["text"] }, { id: "kimi-k2.5:cloud", name: "kimi-k2.5:cloud", input: ["text", "image"] }, ], }, }, }, agents: { defaults: { model: { primary: "ollama/gemma4", fallbacks: ["ollama/kimi-k2.5:cloud"], }, }, },}Несколько хостов Ollama
Используйте пользовательские ID провайдеров, когда у вас больше одного сервера Ollama. Каждый провайдер получает собственный хост, модели, auth, timeout и ссылки на модели.
{ models: { providers: { "ollama-fast": { baseUrl: "http://mini.local:11434", apiKey: "ollama-local", api: "ollama", contextWindow: 32768, models: [{ id: "gemma4", name: "gemma4", input: ["text"] }], }, "ollama-large": { baseUrl: "http://gpu-box.local:11434", apiKey: "ollama-local", api: "ollama", timeoutSeconds: 420, contextWindow: 131072, maxTokens: 16384, models: [{ id: "qwen3.5:27b", name: "qwen3.5:27b", input: ["text"] }], }, }, }, agents: { defaults: { model: { primary: "ollama-fast/gemma4", fallbacks: ["ollama-large/qwen3.5:27b"], }, }, },}Когда OpenClaw отправляет запрос, активный префикс провайдера удаляется, поэтому ollama-large/qwen3.5:27b поступает в Ollama как qwen3.5:27b.
Облегченный профиль локальной модели
Некоторые локальные модели могут отвечать на простые промпты, но испытывают трудности с полной поверхностью инструментов агента. Начните с ограничения инструментов и контекста, прежде чем менять глобальные настройки среды выполнения.
{ agents: { list: [ { id: "local", experimental: { localModelLean: true, }, model: { primary: "ollama/gemma4" }, }, ], }, models: { providers: { ollama: { baseUrl: "http://127.0.0.1:11434", apiKey: "ollama-local", api: "ollama", contextWindow: 32768, models: [ { id: "gemma4", name: "gemma4", input: ["text"], params: { num_ctx: 32768 }, compat: { supportsTools: false }, }, ], }, }, },}Используйте compat.supportsTools: false только когда модель или сервер стабильно не справляются со схемами инструментов. Это обменивает возможности агента на стабильность.
localModelLean удаляет браузер, Cron и инструменты сообщений с прямой поверхности агента и по умолчанию помещает более крупные каталоги за структурированные элементы управления поиском инструментов, кроме случаев, когда запуск должен сохранить семантику прямой доставки сообщений, но не меняет контекст среды выполнения Ollama или режим мышления. Сочетайте это с явными params.num_ctx и params.thinking: false для небольших моделей мышления в стиле Qwen, которые зацикливаются или тратят бюджет ответа на скрытое рассуждение.
Выбор модели
После настройки доступны все ваши модели Ollama:
{ agents: { defaults: { model: { primary: "ollama/gpt-oss:20b", fallbacks: ["ollama/llama3.3", "ollama/qwen2.5-coder:32b"], }, }, },}Также поддерживаются пользовательские идентификаторы провайдеров Ollama. Когда ссылка на модель использует активный
префикс провайдера, например ollama-spark/qwen3:32b, OpenClaw удаляет только этот
префикс перед вызовом Ollama, поэтому сервер получает qwen3:32b.
Для медленных локальных моделей предпочитайте настройку запросов в рамках провайдера, прежде чем увеличивать тайм-аут всей среды выполнения агента:
{ models: { providers: { ollama: { timeoutSeconds: 300, models: [ { id: "gemma4:26b", name: "gemma4:26b", params: { keep_alive: "15m" }, }, ], }, }, },}timeoutSeconds применяется к HTTP-запросу модели, включая установку соединения,
заголовки, потоковую передачу тела и полное прерывание защищенной выборки. params.keep_alive
передается в Ollama как верхнеуровневый keep_alive в нативных запросах /api/chat;
задавайте его для каждой модели, когда узким местом является время загрузки первого хода.
Быстрая проверка
# Ollama daemon visible to this machinecurl http://127.0.0.1:11434/api/tags # OpenClaw catalog and selected modelopenclaw models list --provider ollamaopenclaw models status # Direct model smokeopenclaw infer model run \ --model ollama/gemma4 \ --prompt "Reply with exactly: ok"Для удаленных хостов замените 127.0.0.1 на хост, используемый в baseUrl. Если curl работает, а OpenClaw — нет, проверьте, не работает ли Gateway на другой машине, в контейнере или под другой сервисной учетной записью.
Веб-поиск Ollama
OpenClaw поддерживает веб-поиск Ollama как встроенный провайдер web_search.
| Свойство | Подробности |
|---|---|
| Хост | Использует настроенный хост Ollama (models.providers.ollama.baseUrl, если задан, иначе http://127.0.0.1:11434); https://ollama.com использует размещенный API напрямую |
| Аутентификация | Без ключа для локальных хостов Ollama с выполненным входом; OLLAMA_API_KEY или настроенная аутентификация провайдера для прямого поиска через https://ollama.com или хостов, защищенных аутентификацией |
| Требование | Локальные/самостоятельно размещенные хосты должны быть запущены и авторизованы через ollama signin; прямой размещенный поиск требует baseUrl: "https://ollama.com" плюс настоящий ключ API Ollama |
Выберите веб-поиск Ollama во время openclaw onboard или openclaw configure --section web, либо задайте:
{ tools: { web: { search: { provider: "ollama", }, }, },}Для прямого размещенного поиска через Ollama Cloud:
{ models: { providers: { ollama: { baseUrl: "https://ollama.com", apiKey: "OLLAMA_API_KEY", api: "ollama", models: [{ id: "kimi-k2.5:cloud", name: "kimi-k2.5:cloud", input: ["text"] }], }, }, }, tools: { web: { search: { provider: "ollama" }, }, },}Для локального демона с выполненным входом OpenClaw использует прокси демона /api/experimental/web_search. Для https://ollama.com он напрямую вызывает размещенную конечную точку /api/web_search.
Расширенная конфигурация
Устаревший OpenAI-совместимый режим
Если вместо этого нужно использовать OpenAI-совместимую конечную точку (например, за прокси, который поддерживает только формат OpenAI), явно задайте api: "openai-completions":
{ models: { providers: { ollama: { baseUrl: "http://ollama-host:11434/v1", api: "openai-completions", injectNumCtxForOpenAICompat: true, // default: true apiKey: "ollama-local", models: [...] } } }}Этот режим может не поддерживать потоковую передачу и вызов инструментов одновременно. Возможно, потребуется отключить потоковую передачу с помощью params: { streaming: false } в конфигурации модели.
Когда api: "openai-completions" используется с Ollama, OpenClaw по умолчанию внедряет options.num_ctx, чтобы Ollama не откатывалась молча к контекстному окну 4096. Если ваш прокси или вышестоящий сервис отклоняет неизвестные поля options, отключите это поведение:
{ models: { providers: { ollama: { baseUrl: "http://ollama-host:11434/v1", api: "openai-completions", injectNumCtxForOpenAICompat: false, apiKey: "ollama-local", models: [...] } } }}Контекстные окна
Для автоматически обнаруженных моделей OpenClaw использует контекстное окно, сообщаемое Ollama, когда оно доступно, включая более крупные значения PARAMETER num_ctx из пользовательских Modelfiles. В противном случае он откатывается к контекстному окну Ollama по умолчанию, используемому OpenClaw.
Вы можете задать значения по умолчанию contextWindow, contextTokens и maxTokens на уровне провайдера для каждой модели под этим провайдером Ollama, а затем переопределять их для отдельных моделей при необходимости. contextWindow — это бюджет промпта и Compaction в OpenClaw. Нативные запросы Ollama оставляют options.num_ctx незаданным, если вы явно не настроите params.num_ctx, поэтому Ollama может применить собственное значение по умолчанию на основе модели, OLLAMA_CONTEXT_LENGTH или VRAM. Чтобы ограничить или принудительно задать контекст среды выполнения Ollama для каждого запроса без пересборки Modelfile, задайте params.num_ctx; недопустимые, нулевые, отрицательные и не конечные значения игнорируются. Если вы обновили старую конфигурацию, которая использовала только contextWindow или maxTokens для принудительного задания контекста нативного запроса Ollama, запустите openclaw doctor --fix, чтобы скопировать эти явные бюджеты провайдера или модели в params.num_ctx. OpenAI-совместимый адаптер Ollama по-прежнему по умолчанию внедряет options.num_ctx из настроенных params.num_ctx или contextWindow; отключите это с помощью injectNumCtxForOpenAICompat: false, если ваш вышестоящий сервис отклоняет options.
Нативные записи моделей Ollama также принимают общие параметры среды выполнения Ollama в params, включая temperature, top_p, top_k, min_p, num_predict, stop, repeat_penalty, num_batch, num_thread и use_mmap. OpenClaw пересылает только ключи запросов Ollama, поэтому параметры среды выполнения OpenClaw, такие как streaming, не попадают в Ollama. Используйте params.think или params.thinking, чтобы отправить верхнеуровневый think Ollama; false отключает мышление на уровне API для моделей мышления в стиле Qwen.
{ models: { providers: { ollama: { contextWindow: 32768, models: [ { id: "llama3.3", contextWindow: 131072, maxTokens: 65536, params: { num_ctx: 32768, temperature: 0.7, top_p: 0.9, thinking: false, }, } ] } } }}agents.defaults.models["ollama/<model>"].params.num_ctx для каждой модели тоже работает. Если настроены оба варианта, явная запись модели провайдера имеет приоритет над значением по умолчанию агента.
Управление мышлением
Для нативных моделей Ollama OpenClaw пересылает управление мышлением так, как ожидает Ollama: верхнеуровневый think, а не options.think. Автоматически обнаруженные модели, чей ответ /api/show включает возможность thinking, предоставляют /think low, /think medium, /think high и /think max; модели без мышления предоставляют только /think off.
openclaw agent --model ollama/gemma4 --thinking offopenclaw agent --model ollama/gemma4 --thinking lowТакже можно задать значение модели по умолчанию:
{ agents: { defaults: { models: { "ollama/gemma4": { thinking: "low", }, }, }, },}params.think или params.thinking для каждой модели могут отключить или принудительно включить мышление API Ollama для конкретной настроенной модели. OpenClaw сохраняет эти явные параметры модели, когда активный запуск имеет только неявное значение по умолчанию off; команды среды выполнения не off, такие как /think medium, все равно переопределяют активный запуск.
Модели рассуждения
OpenClaw по умолчанию рассматривает модели с именами вроде deepseek-r1, reasoning или think как поддерживающие рассуждение.
ollama pull deepseek-r1:32bДополнительная настройка не требуется. OpenClaw помечает их автоматически.
Стоимость моделей
Ollama бесплатна и работает локально, поэтому все стоимости моделей установлены в $0. Это относится как к автоматически обнаруженным, так и к вручную определенным моделям.
Эмбеддинги памяти
Встроенный Plugin Ollama регистрирует поставщика эмбеддингов памяти для
поиска по памяти. Он использует настроенный базовый URL
Ollama и ключ API, вызывает текущий endpoint Ollama /api/embed и, когда
возможно, объединяет несколько фрагментов памяти в один запрос input.
Когда proxy.enabled=true, запросы эмбеддингов памяти Ollama к точному
host-local loopback origin, выведенному из настроенного baseUrl, используют
защищенный прямой путь OpenClaw вместо управляемого прокси пересылки.
Настроенное имя хоста само должно быть localhost или буквальным loopback
IP-адресом; DNS-имена, которые лишь разрешаются в loopback, все равно
используют путь управляемого прокси. LAN, tailnet, частные сети и публичные
хосты Ollama также остаются на пути управляемого прокси. Перенаправления на
другой хост или порт не наследуют доверие. Операторы все еще могут задать
глобальную настройку proxy.loopbackMode: "proxy", чтобы отправлять loopback
трафик через прокси, или proxy.loopbackMode: "block", чтобы запрещать
loopback подключения до открытия соединения; см.
Управляемый прокси для
эффекта этой настройки на весь процесс.
| Свойство | Значение |
|---|---|
| Модель по умолчанию | nomic-embed-text |
| Автозагрузка | Да — модель эмбеддингов загружается автоматически, если ее нет локально |
Эмбеддинги во время запроса используют префиксы извлечения для моделей, которым они требуются или рекомендованы, включая nomic-embed-text, qwen3-embedding и mxbai-embed-large. Пакеты документов памяти остаются необработанными, чтобы существующим индексам не требовалась миграция формата.
Чтобы выбрать Ollama как поставщика эмбеддингов для поиска по памяти:
{ agents: { defaults: { memorySearch: { provider: "ollama", remote: { // Default for Ollama. Raise on larger hosts if reindexing is too slow. nonBatchConcurrency: 1, }, }, }, },}Для удаленного хоста эмбеддингов держите аутентификацию ограниченной этим хостом:
{ agents: { defaults: { memorySearch: { provider: "ollama", model: "nomic-embed-text", remote: { baseUrl: "http://gpu-box.local:11434", apiKey: "ollama-local", nonBatchConcurrency: 2, }, }, }, },}Конфигурация потоковой передачи
Интеграция Ollama в OpenClaw по умолчанию использует нативный API Ollama (/api/chat), который полностью поддерживает потоковую передачу и вызов инструментов одновременно. Специальная конфигурация не требуется.
Для нативных запросов /api/chat OpenClaw также напрямую передает Ollama управление thinking: /think off и openclaw agent --thinking off отправляют верхнеуровневое think: false, если не настроено явное значение модели params.think/params.thinking, а /think low|medium|high отправляют соответствующую верхнеуровневую строку усилия think. /think max сопоставляется с самым высоким нативным усилием Ollama, think: "high".
Устранение неполадок
Цикл сбоев WSL2 (повторные перезагрузки)
В WSL2 с NVIDIA/CUDA официальный установщик Ollama для Linux создает unit systemd ollama.service с Restart=always. Если эта служба запускается автоматически и загружает модель с поддержкой GPU во время загрузки WSL2, Ollama может закрепить память хоста на время загрузки модели. Возврат памяти Hyper-V не всегда может вернуть эти закрепленные страницы, поэтому Windows может завершить VM WSL2, systemd снова запускает Ollama, и цикл повторяется.
Типичные признаки:
- повторные перезагрузки или завершения WSL2 со стороны Windows
- высокая CPU-нагрузка в
app.sliceилиollama.serviceвскоре после запуска WSL2 - SIGTERM от systemd, а не событие Linux OOM-killer
OpenClaw записывает предупреждение при запуске, когда обнаруживает WSL2, включенный ollama.service с Restart=always и видимые маркеры CUDA.
Смягчение:
sudo systemctl disable ollamaДобавьте это в %USERPROFILE%\.wslconfig на стороне Windows, затем выполните wsl --shutdown:
[experimental]autoMemoryReclaim=disabledУстановите более короткий keep-alive в окружении службы Ollama или запускайте Ollama вручную только тогда, когда он нужен:
export OLLAMA_KEEP_ALIVE=5mollama serveСм. ollama/ollama#11317.
Ollama не обнаружен
Убедитесь, что Ollama запущен, что вы задали OLLAMA_API_KEY (или профиль аутентификации) и что вы не определили явную запись models.providers.ollama:
ollama serveПроверьте, что API доступен:
curl http://localhost:11434/api/tagsНет доступных моделей
Если вашей модели нет в списке, либо загрузите модель локально, либо явно определите ее в models.providers.ollama.
ollama list # See what's installedollama pull gemma4ollama pull gpt-oss:20bollama pull llama3.3 # Or another modelВ соединении отказано
Проверьте, что Ollama запущен на правильном порту:
# Check if Ollama is runningps aux | grep ollama # Or restart Ollamaollama serveУдаленный хост работает с curl, но не с OpenClaw
Проверьте с той же машины и среды выполнения, где работает Gateway:
openclaw gateway status --deepcurl http://ollama-host:11434/api/tagsТипичные причины:
baseUrlуказывает наlocalhost, но Gateway работает в Docker или на другом хосте.- URL использует
/v1, что выбирает OpenAI-совместимое поведение вместо нативного Ollama. - Удаленному хосту нужны изменения firewall или привязки LAN на стороне Ollama.
- Модель присутствует в daemon на вашем ноутбуке, но отсутствует в удаленном daemon.
Модель выводит JSON инструмента как текст
Обычно это означает, что поставщик использует OpenAI-совместимый режим или модель не может обрабатывать схемы инструментов.
Предпочитайте нативный режим Ollama:
{ models: { providers: { ollama: { baseUrl: "http://ollama-host:11434", api: "ollama", }, }, },}Если небольшая локальная модель все еще не справляется со схемами инструментов, задайте compat.supportsTools: false для записи этой модели и протестируйте повторно.
Kimi или GLM возвращает искаженные символы
Размещенные ответы Kimi/GLM, представляющие собой длинные нелингвистические последовательности символов, обрабатываются как неудачный вывод поставщика, а не как успешный ответ ассистента. Это позволяет обычным повторным попыткам, fallback или обработке ошибок вступить в действие без сохранения поврежденного текста в сеанс.
Если это повторяется, сохраните исходное имя модели, текущий файл сеанса и сведения о том, использовал ли запуск Cloud + Local или Cloud only, затем попробуйте новый сеанс и fallback модель:
openclaw infer model run --model ollama/kimi-k2.5:cloud --prompt "Reply with exactly: ok" --jsonopenclaw models set ollama/gemma4Холодная локальная модель превышает тайм-аут
Большим локальным моделям может требоваться долгая первая загрузка перед началом потоковой передачи. Ограничьте тайм-аут поставщиком Ollama и при желании попросите Ollama держать модель загруженной между ходами:
{ models: { providers: { ollama: { timeoutSeconds: 300, models: [ { id: "gemma4:26b", name: "gemma4:26b", params: { keep_alive: "15m" }, }, ], }, }, },}Если сам хост медленно принимает соединения, timeoutSeconds также расширяет защищенный тайм-аут подключения Undici для этого поставщика.
Модель с большим контекстом слишком медленная или исчерпывает память
Многие модели Ollama объявляют контексты, которые больше, чем ваше оборудование может комфортно выполнять. Нативный Ollama использует собственное значение контекста среды выполнения Ollama по умолчанию, если вы не задаете params.num_ctx. Ограничьте и бюджет OpenClaw, и контекст запроса Ollama, когда вам нужна предсказуемая задержка до первого токена:
{ models: { providers: { ollama: { contextWindow: 32768, maxTokens: 8192, models: [ { id: "qwen3.5:9b", name: "qwen3.5:9b", params: { num_ctx: 32768, thinking: false }, }, ], }, }, },}Сначала уменьшите contextWindow, если OpenClaw отправляет слишком большой prompt. Уменьшите params.num_ctx, если Ollama загружает контекст среды выполнения, слишком большой для машины. Уменьшите maxTokens, если генерация выполняется слишком долго.