Ollama OpenClaw — это связка, в которой агент OpenClaw работает на локальной модели с сервера Ollama: в конфигурации записывают адрес сервера, а модель называют ссылкой вида ollama/имя. Связка подходит, когда документы остаются внутри контура, но принимать её нужно после проверки четырёх свойств: совместимости режима API, качества вызовов инструментов, задержки на холодном старте и границ данных, ведь облачные модели Ollama живут в том же списке.
Что связывает
OpenClaw обращается к Ollama по родному API (/api/chat), модель задаётся ссылкой ollama/имя, а адрес сервера записан в поле baseUrl без суффикса /v1.
Условный сценарий: агент читает протоколы совещаний отдела продаж, выделяет поручения с исполнителем и сроком и готовит черновик задач для руководителя. Протоколы содержат условия клиентов, поэтому отправлять их во внешнее облако нежелательно, и модель работает на сервере компании. Руководитель сверяет черновик с протоколом и сам заводит задачи в трекере. Критерий приёмки записывают заранее: доля поручений, найденных с верным исполнителем и сроком на наборе размеченных протоколов.
Роли распределены так: конфигурация OpenClaw решает, какие файлы агент видит, модель формулирует поручения, руководитель принимает решение. Установка самого OpenClaw и каналы связи остаются за рамками. Общий взгляд на локальный контур даёт разбор локального ИИ-агента на своём сервере, а работу самого сервера моделей описывает статья про запуск Ollama для компании.
Граница с соседним материалом такая: выбор провайдера и запасной модели разобран в статье про OpenClaw models, а здесь речь идёт только о локальном Ollama как источнике модели и о том, чем эту связку проверяют.
Совместимость
По документации OpenClaw, провайдер использует родной API Ollama /api/chat. Адрес вида http://host:11434/v1 документация прямо запрещает: на нём ломается вызов инструментов, и модель выводит JSON вызова обычным текстом.
- Загрузите модель на сервере Ollama командой
ollama pullс нужным именем. - Для локального или локально-сетевого сервера задайте метку
OLLAMA_API_KEY="ollama-local"; удалённым адресам требуются настоящие учётные данные. - Выберите модель командой
openclaw models set ollama/имялибо запишите её в полеagents.defaults.model.primary. - Укажите в
models.providers.ollama.baseUrlадрес сервера без суффикса/v1. - Проверьте связку без агентного слоя командой
openclaw infer model run --local --model ollama/имя.
Когда Gateway и Ollama стоят на разных машинах, адрес проверяют с той машины, где работает Gateway. Документация советует для этого команду openclaw gateway status --deep и обычный запрос curl оттуда же. Типичные причины сбоя: localhost в конфигурации вместо реального адреса, суффикс /v1, закрытый межсетевым экраном порт и модель, загруженная на другом сервере Ollama.
Перечень моделей OpenClaw строит сам, запрашивая у Ollama список и параметры каждой. Ручной список в models.providers.ollama.models это обнаружение отключает. Запишите, каким способом вы пользуетесь, иначе после смены модели конфигурация и реальность разойдутся.
Если сервер Ollama общий с другими командами, учтите очередь: параллельные запросы к одной модели ждут друг друга, и агент, обрабатывающий большую папку, замедляет чужие задачи. Договоритесь об окнах для пакетной работы либо выделите отдельный экземпляр сервера.
Качество вызовов
Способность вызывать инструменты определяет, станет ли модель агентом. По документации, OpenClaw определяет возможности модели по сведениям, которые сообщает сам Ollama, но сведения могут быть неполными, и узкую пробу без инструментов агента даёт команда openclaw infer model run. Если проба проходит, а ответы агента ломаются, причина лежит в способности модели работать с инструментами. Поэтому решающим остаётся собственный набор заданий на реальных протоколах.
| Проба | Ожидаемое поведение | Признак брака |
|---|---|---|
| Поручение с названным исполнителем и сроком | Вызов чтения протокола с верным именем файла и точный пункт в черновике | В ответе виден текст вида JSON вместо вызова |
| Протокол без поручений | Сообщение, что поручений нет | Выдуманный исполнитель или срок |
| Два исполнителя в одной фразе | Два отдельных пункта | Один пункт с потерянным исполнителем |
| Нужного файла нет в папке | Сообщение об отсутствии файла | Вызов другого файла и пересказ чужого содержимого |
| Просьба удалить протокол | Отказ по правам | Попытка вызвать запрещённую функцию |
Текст JSON на месте вызова — прямой признак того, что провайдер работает в OpenAI-совместимом режиме. Раздел документации об устранении неполадок называет это первой причиной и советует родной режим api: "ollama". Проверьте адрес и режим, прежде чем винить модель.
Прогоните набор для двух-трёх моделей подходящего размера на одинаковых протоколах и сохраните журнал вызовов рядом с версией набора. Скрипт собирает вызовы и итоги, спорные ответы оценивает человек. Повторяйте прогон после смены модели, версии Ollama и версии OpenClaw.
Аргументы вызова проверяйте так же строго, как в любом сервисе. Агент обращается к файлам через инструменты, и путь за пределами выделенной папки сервер обязан отклонять независимо от того, насколько убедительно звучит просьба модели.
Задержка и память
Холодный старт локальной модели растягивает первый ответ. В разделе устранения неполадок документация показывает настройку timeoutSeconds (в примере 300) и keep_alive, чтобы модель оставалась в памяти между запросами. Для больших окон там же рекомендуют ограничить и maxTokens в OpenClaw, и params.num_ctx под возможности железа.
- Время первого ответа после паузы и время повторного ответа в тёплом режиме, измеренные отдельно.
- Фактическое окно: значение
params.num_ctxуходит в/api/chatкакoptions.num_ctx, действующий размер сверяйте командойollama ps. - Верхнюю границу при обнаружении: по документации,
contextTokensпри обнаружении обычно ограничено значением 32 768 (или меньшим родным окном модели), и длинные протоколы могут упереться в него. - Влияние размышления: у моделей с этой возможностью уровни переключаются командой
/think(low, medium, high, max), аparams.thinking: falseотключает размышление на уровне API.
Допустимый порог ожидания задаёт сам процесс. Протоколы собирают заранее, и ответ может подождать, а живой чат с сотрудником требует другого порога. Запишите допустимую задержку до измерений, и результат обретёт смысл. Сравнивать полезно и скорость, и стабильность: разброс между повторами одного запроса показывает, можно ли обещать сотрудникам предсказуемое время.
Какую задержку ответа допускает ваш процесс?
Границы данных
Локальная модель удерживает данные внутри контура, пока вся цепочка локальна. В режиме Cloud + Local один демон Ollama обслуживает локальные модели и, после входа командой ollama signin, модели с суффиксом :cloud. Облачные ссылки в OpenClaw выглядят как ollama-cloud/имя:cloud. Запрос к такой модели уходит на серверы Ollama, и протоколы с условиями клиентов покидают контур.
Поэтому в конфигурации агента для протоколов оставляют только ссылки ollama/… и проверяют это скриптом: любое имя с :cloud или провайдер ollama-cloud останавливают запуск. Эту проверку запускайте при старте агента и по расписанию: коллега способен изменить конфигурацию случайно, и облачная ссылка появится в списке без чьего-либо решения. Смежная тема разобрана в статье про облачный и локальный режимы Ollama.
Протоколы и журналы агента лежат на диске сервера, и каталог открывают отдельной учётной записи с чтением нужной папки. Редакция секретов в журнале OpenClaw включена всегда, но обезличивание содержимого протоколов остаётся задачей вашего скрипта. Нулевая стоимость в отчётах OpenClaw для обнаруженных моделей служит лишь значением по умолчанию, реальную нагрузку считайте на стороне сервера. Если агенту предстоит действовать за пределами чтения, начните со страницы про ИИ-агентов для бизнеса.
Ведите паспорт связки: версии OpenClaw и Ollama, имя модели, значение num_ctx, режим API, список запрещённых провайдеров и дату последнего прогона проверок. Менять любую из этих строк без записи в паспорте нельзя.