Локальная модель в OpenClaw: как запустить агента на своём железе
Коротко. Локальная модель в OpenClaw — это штатный режим, а не обходной путь: агент запускается полностью на вашем железе, без облачных API-ключей и без счёта за токены. Путей три: управляемый сервер llama.cpp, который OpenClaw ставит и ведёт сам; Ollama; и любой OpenAI-совместимый сервер (LM Studio, vLLM, MLX, SGLang, LiteLLM). Но исход решают не они, а три вещи. Первая — память хоста: самый маленький рецепт из штатного каталога требует 8 ГиБ, а всё крупнее 9B штатная установка рекомендует только с GPU. Вторая — вызов инструментов: модель, которая бодро отвечает текстом, часто не умеет звать инструменты, и тогда агент перестаёт быть агентом и превращается в чат. Третья, и самая частая ошибка — адрес Ollama с /v1 на конце: это переключает OpenClaw в OpenAI-совместимый режим, где вызов инструментов ненадёжен, и модель начинает печатать JSON вызова прямо в чат вместо того, чтобы что-то сделать. Ниже — рабочие конфиги для каждого пути, порядок проверки и честный список того, что вы при этом теряете.
На чём это проверено
Все команды, ключи конфигурации, значения по умолчанию и требования к памяти сверены с официальной документацией проекта 15 сентября 2026 года. Актуальный релиз на эту дату — OpenClaw 2026.9.4 (опубликован 11 сентября 2026 года). В реестре npm канал latest — 2026.9.4, канал extended-stable — 2026.6.35. Конфигурация лежит в файле ~/.openclaw/openclaw.json в формате JSON5 (допускает комментарии и висящие запятые); если файла нет, OpenClaw работает на значениях по умолчанию.
Проект выпускает релизы часто, и локальные провайдеры — та часть, которая меняется активнее прочих. Прежде чем копировать конфиг в боевой контур, сверьтесь с разделом Local models официальной документации: дальше по тексту мы ссылаемся на конкретные её страницы, чтобы каждый ключ можно было перепроверить за минуту.
Зачем локальная модель — и когда она не нужна
У локального запуска ровно два честных мотива.
Данные не покидают ваш контур. Это главный аргумент для юристов, медицины, бухгалтерии и всего, что подпадает под внутренние регламенты обработки персональных данных. Ни один запрос, ни один фрагмент документа не уходит стороннему провайдеру — потому что уходить некуда, модель крутится на вашей же машине.
Нет счёта за токены. Локальный запуск не тарифицируется: вы платите за железо и электричество, а не за каждый запрос. Для сценариев с большим объёмом однотипной работы — разбор почты, классификация заявок, ночные фоновые задачи — это меняет экономику целиком.
А теперь честная вторая половина. Локальная модель слабее облачной того же поколения, и разница видна не в красоте текста, а в надёжности многошаговых задач: где облачная модель за один заход прочитает три файла, сверит их и напишет отчёт, локальная на пятом вызове инструмента потеряет нить. Плюс она медленнее: на хосте без GPU первый ответ может занять несколько минут — и это нормальное поведение, а не поломка. Если вашему агенту нужно отвечать клиенту в мессенджере за секунды, локальная модель в качестве основной вам не подойдёт; ниже есть гибридная схема, которая закрывает этот случай.
Железо: с чего начинается разговор
Всё остальное вторично. Официальный каталог рецептов для управляемого сервера llama.cpp выглядит так — каждый рецепт использует контекст 65 536 токенов и поддерживает вызов инструментов:
| Модель | Размер загрузки | Минимум памяти хоста |
|---|---|---|
| Qwen3.5 4B Q4_K_M | около 2,7 ГБ | 8 ГиБ |
| Qwen3.5 9B Q4_K_M | около 5,7 ГБ | 16 ГиБ |
| Gemma 4 12B IT Q4_K_M | около 7,1 ГБ | 24 ГиБ и GPU-ускорение |
| Qwen3.8 27B UD-Q4_K_M | около 16,5 ГБ | 32 ГиБ и GPU-ускорение |
| Muse Glimmer 30B Q4_K_M | около 16,8 ГБ | 32 ГиБ и GPU-ускорение |
Источник — страница llama.cpp Provider в документации OpenClaw. Три вещи, которые из этой таблицы не видны, но важнее самих цифр.
Это пороги отбора, а не гарантия скорости. Формулировка в документации прямая: пороги не гарантируют ни то, что модель поместится, ни то, что она будет работать быстро. Установщик дополнительно резервирует память под операционную систему, кэш контекста, рантайм и модель эмбеддингов — и может предложить вариант поменьше, если на хосте уже есть нагрузка.
К загрузке чата добавляется модель эмбеддингов — по умолчанию EmbeddingGemma, около 0,3 ГБ. Она нужна для поиска по памяти агента. Заложите её в расчёт места на диске.
Две видеокарты не складываются. Установщик не считает, что модель поместится, на основании суммы памяти отдельных NVIDIA-карт. 2 × 12 ГБ — это не 24 ГБ.
Отдельно — таблица исполнительных бэкендов для управляемого сервера. Здесь прячется сюрприз, из-за которого половина установок на арендованном сервере разочаровывает:
| Хост Gateway | Управляемый бэкенд |
|---|---|
| macOS на Apple silicon | Metal, общая память |
| macOS на Intel | CPU |
| Linux x64 или arm64 | CPU |
| Windows x64 с поддерживаемой NVIDIA | CUDA 12.4 |
| Windows x64 без совместимой CUDA, Windows arm64 | CPU |
Прочитайте строку про Linux ещё раз: штатный управляемый сервер на Linux работает на CPU, даже если в машине стоит видеокарта. Для проверенной сборки Windows CUDA нужны драйвер NVIDIA 551.78 или новее и вычислительная способность 5.0 или новее. Если вы взяли GPU-сервер под Linux и хотите, чтобы карта действительно использовалась, управляемый путь вам не подходит — нужно поднимать сервер самостоятельно (Ollama, vLLM, собственный llama-server) и подключать его к OpenClaw как внешний. Именно об этом вторая и третья части статьи.
Путь 1. Управляемый сервер llama.cpp
Самый короткий путь, если у вас Mac на Apple silicon или Windows с NVIDIA. OpenClaw сам посмотрит на железо, предложит модель, скачает её, проверит и только потом переключит на неё агента.
openclaw plugins install @openclaw/llama-cpp-provider
openclaw onboard
В мастере выберите Managed local server. Дальше установщик покажет имя хоста, исполнительный бэкенд, модель и размер загрузки — и будет ждать подтверждения. Читайте имя хоста внимательно: если вы открыли веб-интерфейс браузером, подключённым к удалённому Gateway, модель скачается и будет работать на этом Gateway, а не на компьютере, где открыт браузер.
Что именно проверяет установщик
Здесь у OpenClaw сделано то, чего не хватает большинству инструкций из интернета: установка не считается успешной, пока модель не доказала, что она годится в агенты.
- Проверяются контрольные суммы файлов модели и сборки llama.cpp.
- Поднимается конечная точка на локальной петле и делается настоящий запрос на генерацию.
- Отдельно проверяется вызов инструмента: модель просят прочитать временный файл через инструмент OpenClaw и вернуть его содержимое. Проверка идёт в изолированном рабочем каталоге, без инструкций вашего агента. Просто текстовый ответ эту проверку не проходит.
- На каждую проверку отводится 90 секунд. Изменение
agents.defaults.timeoutSecondsэтот срок не продлевает — в отчёте об ошибке будет указано, что именно не уложилось: ответ или вызов инструмента.
Если проверка не прошла или вы её отменили, прежняя модель по умолчанию остаётся выбранной — агент не сломается на полпути. Скачанные файлы могут остаться в кэше для повторной попытки.
И честное предупреждение из той же документации: на хостах без GPU первый ответ может занять несколько минут даже после успешной проверки. Проверка говорит «модель умеет», а не «модель быстрая».
Именно здесь обычно и выясняется, что задача не про конфиг, а про инфраструктуру: подобрать карту, поставить драйверы, не дать серверу уснуть, следить за температурой, памятью и обновлениями. Если возиться с этим некому — подготовим сервер с GPU и будем держать локальную модель в строю, а вы вернётесь к настройке агента уже на готовой машине.
Путь 2. Ollama — самый частый выбор
Ollama выбирают, когда хочется управлять моделями отдельно от агента: своя библиотека моделей, привычные команды, служба, которая живёт сама по себе. OpenClaw это поддерживает, но с одной оговоркой, которая стоит того, чтобы вынести её в отдельный подзаголовок.
Главная ошибка: /v1 в адресе
OpenClaw разговаривает с Ollama по её родному API — /api/chat, а не по OpenAI-совместимому /v1. Правильный адрес выглядит так:
baseUrl: "http://127.0.0.1:11434" // без /v1
Если дописать /v1, провайдер переключится в OpenAI-совместимый режим. Симптом ровно один и его ни с чем не спутать: модель печатает JSON вызова инструмента как обычный текст. Выглядит так, будто «модель тупая», а на самом деле сломан транспорт. Чтобы гарантировать родное поведение, задайте режим явно:
{
models: {
providers: {
ollama: {
baseUrl: "http://127.0.0.1:11434",
api: "ollama",
},
},
},
}
Учётные данные: для локального хоста они фиктивные
Ollama на локальной петле, в частной сети, на .local или на голом имени хоста не требует настоящего токена. OpenClaw использует для таких адресов маркер ollama-local:
export OLLAMA_API_KEY="ollama-local"
Настоящий ключ нужен только для публичных удалённых хостов и для https://ollama.com. Это ровно то место, где люди застревают на полчаса, решив, что «нужно где-то завести ключ» — не нужно.
Минимальный рабочий сценарий
ollama serve
ollama pull gemma4
export OLLAMA_API_KEY="ollama-local"
openclaw models list --provider ollama
openclaw models set ollama/gemma4
Проверка, что всё сошлось:
# демон виден с этой машины
curl http://127.0.0.1:11434/api/tags
# каталог OpenClaw и выбранная модель
openclaw models status
# прямая проба модели
openclaw infer model run --model ollama/gemma4 --prompt "Reply with exactly: ok"
Если вы предпочитаете мастер, есть и неинтерактивный вариант — удобно для скриптов развёртывания:
openclaw onboard --non-interactive --accept-risk --skip-health \
--auth-choice ollama \
--custom-base-url "http://ollama-host:11434" \
--custom-model-id "qwen3.5:27b"
Почему OpenClaw «не видит» установленную модель
Второй по частоте вопрос после /v1. Автоматическое обнаружение при первичной настройке учитывает только модели, уже загруженные в память (по данным /api/ps), у которых подтверждена поддержка инструментов и не менее 16K контекста (по данным /api/show). Модель, установленная на диск, но простаивающая, кандидатом не считается: обнаружение никогда не скачивает и не загружает модель само.
Отсюда два выхода. Либо прогреть модель перед настройкой — сделать к ней любой запрос, чтобы она попала в память. Либо задать её в конфиге руками: непустой ручной список моделей обнаружение пропускает и берёт то, что написано.
Рабочий конфиг для LAN-хоста с GPU
Типовая схема для малого бизнеса: агент живёт на дешёвом сервере, а модель — на отдельной машине с видеокартой в той же сети.
{
models: {
providers: {
ollama: {
baseUrl: "http://gpu-box.local:11434",
apiKey: "ollama-local",
api: "ollama",
timeoutSeconds: 300,
maxTokens: 8192,
models: [
{
id: "qwen3.5:9b",
name: "qwen3.5:9b",
reasoning: true,
input: ["text"],
contextTokens: 32768,
params: {
num_ctx: 32768,
thinking: false,
keep_alive: "15m",
},
},
],
},
},
},
agents: {
defaults: {
model: { primary: "ollama/qwen3.5:9b" },
},
},
}
Если серверов с моделями несколько, заводите отдельные идентификаторы провайдеров — у каждого свой хост, свой список моделей, своя авторизация и свой таймаут. Ссылка вида ollama-large/qwen3.5:27b работает как обычно: OpenClaw снимает префикс провайдера перед обращением к Ollama и отправляет ей qwen3.5:27b.
Путь 3. LM Studio и любой OpenAI-совместимый сервер
LM Studio удобен, когда нужен графический загрузчик моделей: скачали сборку, включили локальный сервер (по умолчанию http://127.0.0.1:1234), проверили, что http://127.0.0.1:1234/v1/models отдаёт список. В отличие от Ollama здесь /v1 как раз уместен — это честный OpenAI-совместимый эндпоинт.
{
agents: {
defaults: {
model: { primary: "lmstudio/my-local-model" },
},
},
models: {
mode: "merge",
providers: {
lmstudio: {
baseUrl: "http://127.0.0.1:1234/v1",
apiKey: "lmstudio",
api: "openai-responses",
models: [
{
id: "my-local-model",
name: "Local Model",
reasoning: false,
input: ["text"],
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
contextWindow: 196608,
maxTokens: 8192,
},
],
},
},
},
}
Три правила, которые нужно запомнить один раз.
api: "openai-responses"— только если бэкенд это умеет (LM Studio умеет). Во всех остальных случаях —openai-completions. Если у пользовательского провайдера сbaseUrlключapiне указан вовсе, OpenClaw по умолчанию берётopenai-completions.models[].idпишется без префикса провайдера. Для сервера MLX, запущенного какmlx_lm.server --model mlx-community/Qwen3-30B-A3B-6bit, в списке моделей будетmlx-community/Qwen3-30B-A3B-6bit, а вagents.defaults.model.primary—mlx/mlx-community/Qwen3-30B-A3B-6bit.models.mode: "merge"сохраняет облачные модели доступными как запасные. Уберёте его — и остаться без ответа при падении локального сервера станет штатным сценарием.
По этой же схеме подключаются vLLM, SGLang, MLX, LiteLLM и любой собственный шлюз, выставляющий /v1/chat/completions. Отдельно стоит знать про ключ localService: он позволяет не держать тяжёлый сервер запущенным круглосуточно, а поднимать его в момент, когда выбрана соответствующая модель, и гасить после простоя. Поля там простые — command (обязательно абсолютный путь, PATH не просматривается), args, healthUrl, readyTimeoutMs (по умолчанию 120 000) и idleStopMs; подробности — на странице Local model services.
Контекст, таймауты и «модель думает пять минут»
Две трети жалоб на локальный запуск — это не про модель, а про три числа, которые живут в разных местах и должны быть согласованы.
| Параметр | Что ограничивает | Когда снижать |
|---|---|---|
contextTokens | бюджет входных данных со стороны OpenClaw | OpenClaw отправляет слишком большой запрос |
params.num_ctx | контекст запроса на стороне Ollama | рантайм-контекст великоват для машины |
maxTokens | длину генерации | ответы получаются слишком длинными |
Модели часто заявляют контекст больше того, что ваше железо потянет комфортно. При родных запросах эффективное значение contextTokens уходит на сервер, если его не перекрывает params.num_ctx — поэтому имеет смысл ограничить оба сразу и получить предсказуемое время до первого токена. Для локальных моделей Ollama приложение, интерактивная и неинтерактивная установка используют рантайм-контекст 32 768 токенов или родное окно модели, если оно меньше.
У OpenClaw есть собственный предохранитель по контексту: он предупреждает, когда остаётся меньше 20 % (с нижней границей 8k), и жёстко блокирует запрос ниже 10 % (с нижней границей 4k). Увидели такую ошибку — либо снижайте contextTokens у этой модели, либо поднимайте лимит контекста на сервере.
Отдельная история — холодная загрузка. Большая локальная модель может грузиться долго, и стандартный таймаут запроса её не дождётся. Правильное лечение — поднять таймаут именно у провайдера, а не у всего агента, и по возможности держать модель загруженной между ходами:
{
models: {
providers: {
ollama: {
timeoutSeconds: 300,
models: [
{
id: "gemma4:26b",
name: "gemma4:26b",
params: { keep_alive: "15m" },
},
],
},
},
},
}
timeoutSeconds покрывает весь HTTP-запрос к модели: установку соединения, заголовки, потоковую передачу тела и общий обрыв по защищённой выборке. params.keep_alive передаётся как поле keep_alive верхнего уровня в родных запросах /api/chat — задавайте его для конкретной модели, когда узкое место именно в загрузке на первом ходу. Важное ограничение: таймаут провайдера не может продлить весь прогон — если ниже стоит лимит агента или прогона, поднимать надо и его.
Подбор этих чисел — работа вечера с секундомером, и она не делается один раз: меняете модель — пересобираете весь набор. Если хочется пропустить эту итерацию, подберём модель, контекст и таймауты под ваше оборудование и отдадим готовый конфиг с замерами.
Гибрид: локальная модель как основная, облако как страховка
Практичная схема для тех, кому нужна и приватность, и надёжность. Основная модель локальная, запасная — облачная; при сбое локального сервера агент не замолкает.
{
agents: {
defaults: {
model: {
primary: "lmstudio/my-local-model",
fallbacks: ["anthropic/claude-sonnet-4-6"],
},
},
},
models: {
mode: "merge",
},
}
Тот же приём работает и в обратную сторону: облачная модель основная, локальная — запасная на случай, когда провайдер недоступен или вы упёрлись в лимиты; достаточно поменять местами primary и fallbacks, оставив блок провайдеров как есть. Ключевое условие в обоих случаях — models.mode: "merge", чтобы каталог облачных моделей остался на месте.
Вариант «всё через один демон» тоже существует: Ollama умеет отдавать и локальные, и облачные модели (с суффиксом :cloud) через один хост — но для этого на нём нужно выполнить ollama signin, иначе установка останется локальной. Если локальный демон вам вообще не нужен, есть отдельный провайдер ollama-cloud, которому ни вход, ни запущенный сервер не требуются.
Отдельно замечу то, о чём часто забывают: гибрид необязательно про одну модель на всё. Служебные задачи — сжатие истории, поиск по памяти, разметка — можно увести на локальную модель, оставив основную облачной. Это уменьшает счёт и объём данных, уходящих наружу, без потери качества на главном. Как раскладывать задачи по моделям, мы разбирали в отдельном материале про тюнинг OpenClaw.
Инструменты: где локальные модели ломаются
Это главное отличие агента от чат-бота и главная точка отказа локальных моделей. Симптомы выглядят по-разному, а причина одна: сервер или шаблон чата не умеет структурные вызовы инструментов.
- Модель выдаёт JSON, XML или текст в стиле ReAct, похожий на вызов, — OpenClaw оставит это текстом и запишет предупреждение с идентификатором прогона, провайдером, моделью и обнаружённым шаблоном. Это несовместимость, а не выполненный вызов.
- Провайдер возвращает пустой массив
tool_calls. - Модель печатает вызовы в скобочном формате вида
[имя_инструмента]с JSON и[END_TOOL_REQUEST]. OpenClaw превратит это в настоящий вызов только если имя точно совпадает с зарегистрированным на этом ходу инструментом; иначе останется скрытым текстом.
Первое, что нужно сделать, — проверить, что шаблон чата и парсер на стороне сервера вообще поддерживают вызов инструментов. И категорическое «нельзя» из документации: не ставьте прокси, который слепо превращает текст ответа в исполнение инструмента. Это готовая дыра в безопасности — модель, подхватившая инъекцию из прочитанного письма, получит через такой прокси право что-то выполнить.
Если парсер работает только при принудительном вызове, есть штатный обход — по одной модели:
openclaw config set agents.defaults.models '{"local/my-local-model":{"params":{"extra_body":{"tool_choice":"required"}}}}' --strict-json --merge
Применяйте его только там, где вызов инструмента ожидается на каждом ходу, — иначе агент начнёт звать инструменты там, где достаточно ответить словами.
Лестница диагностики
Порядок важен: каждая ступень отсекает свой слой, и если пройти их по очереди, причина находится за несколько минут.
- Модель вообще отвечает — без инструментов и без контекста агента:
openclaw infer model run --local --model <провайдер/модель> --prompt "Reply with exactly: pong" --json - Маршрутизация Gateway — отправляется только промпт, минуя транскрипт, загрузку AGENTS, сборку контекста, инструменты и встроенные MCP-серверы, но задействуя маршрутизацию, авторизацию и выбор провайдера:
openclaw infer model run --gateway --model <провайдер/модель> --prompt "Reply with exactly: pong" --json - Tool Search — если обе пробы прошли, а реальные ходы агента падают на кривых вызовах или слишком больших запросах. Локальные модели Ollama, LM Studio и управляемые локальные сервисы включают структурный Tool Search автоматически, если
tools.toolSearchне задан. Остальным бэкендам его включают явно:tools.toolSearch: { mode: "tools" }. КлючlocalModelLeanпри этом оставьте незаданным илиfalse, иначе потеряете часть инструментов. - Отключить инструменты совсем — крайняя мера:
compat.supportsTools: falseна записи модели. Агент будет работать без вызовов инструментов. Понимайте, что это значит: вы получаете локальный чат, а не агента.
Есть ещё два ключа совместимости для строгих серверов: compat.requiresStringContent: true, если сервер принимает только строковое messages[].content и падает на структурных массивах частей, и compat.strictMessageKeys: true, если он отвергает записи сообщений с чем-либо помимо role и content. Обе ошибки узнаваемы по тексту в логе и лечатся одной строкой.
Безопасность: у локальной модели нет фильтров провайдера
Об этом стоит сказать прямо, потому что мотив «данные не уходят наружу» легко перепутать с «стало безопаснее». Это разные вещи.
Локальные модели не имеют защитных фильтров хостинг-провайдера — всё, что у облачной модели отсекалось на стороне вендора, у локальной становится вашей ответственностью. Практический вывод из документации: держите права инструментов узкими, соразмерными модели и задаче, и не выключайте сжатие истории — оно ограничивает радиус поражения при инъекции промпта.
Второй момент касается сетевого доверия. Записи пользовательских и локальных провайдеров доверяют ровно тому источнику, который указан в их baseUrl, — включая локальную петлю, локальную сеть, tailnet и частный DNS. Метаданные, link-local и адреса NAT64 локального использования (64:ff9b:1::/48) остаются заблокированными без явного согласия. Запросы к прочим частным источникам требуют отдельного разрешения models.providers.<id>.request.allowPrivateNetwork: true.
И бытовое, но важное: у llmman, например, API вообще без аутентификации, поэтому привязку к локальной петле там не стоит менять, пока сеть не ограничена доверенной границей. Это общее правило для любого локального сервера моделей — он не рассчитан на то, чтобы торчать в интернет.
Отдельная большая тема — что агент с локальной моделью может сделать с вашей машиной, если дать ему доступ к терминалу. Мы разбирали её в материале про песочницу OpenClaw в Docker; для локального запуска она актуальна ровно так же, а с учётом отсутствия фильтров провайдера — даже больше.
Что ломается чаще всего
/v1в адресе Ollama. Симптом — JSON вызова инструмента в тексте ответа. Уберите/v1и задайтеapi: "ollama"явно.- Ollama не обнаружена. Проверьте, что демон запущен и виден:
ollama serve, затемcurl http://localhost:11434/api/tags. Для обнаружения на локальной петле должен быть заданOLLAMA_API_KEYили профиль авторизации. - Моделей нет в списке.
ollama listпокажет установленные,ollama pull gemma4добавит новую. Либо опишите модель в конфиге явно. - curl работает, а OpenClaw нет. Почти всегда Gateway живёт не там, где вы проверяете: в контейнере, на другой машине или под другой служебной учётной записью. Проверяйте с того же места:
openclaw gateway status --deep. - Локальный сервер обрывает поток (
terminated,ECONNRESET, обрыв посреди хода). OpenClaw записывает в диагностику вид отказа и снимок памяти процесса — сопоставьте отметку времени с логом сервера моделей, чтобы понять, не убила ли его нехватка памяти. - Бесконечная перезагрузка WSL2 с NVIDIA. Официальный установщик Ollama для Linux создаёт службу systemd с
Restart=always; при автозапуске она грузит GPU-модель во время загрузки WSL2 и закрепляет память хоста, Windows убивает виртуальную машину, systemd поднимает Ollama снова — и так по кругу. Лечится отключением автозапуска (sudo systemctl disable ollama) и строкойautoMemoryReclaim=disabledв секции[experimental]файла%USERPROFILE%\.wslconfigс последующимwsl --shutdown. Исходное обсуждение — ollama/ollama#11317. - Модель «висит» на первом запросе в LM Studio. Чаще всего она просто выгружена — загрузите её заново и держите загруженной.
Когда проще не делать самому
Инструкция выше рабочая: по ней локальный агент поднимается за вечер, если железо подходящее. Честно о том, чего она не отменяет.
Локальный контур — это не установка, а эксплуатация. Сервер должен быть жив круглосуточно, модель — прогрета, драйверы — совместимы с рантаймом, обновления OpenClaw — проверены до того, как их увидит бизнес. Каждая смена модели тянет за собой пересборку контекста, таймаутов и проверки вызова инструментов. А диагностика «агент стал тупить» на локальной модели требует пройти всю лестницу выше, а не написать в поддержку провайдера.
Если локальный запуск нужен вам из-за требований к данным, а не из интереса — соберём локальный контур под ключ: сервер, модель, обновления и присмотр. Состав подписки и актуальные тарифы — на отдельной странице; стоимость самого железа и электричества при этом остаётся вашей, и это честнее любой «единой цены за всё».
Частые вопросы
Можно ли обойтись без видеокарты?
Да, но с оговорками. Рекомендации для CPU в штатном каталоге останавливаются на Qwen3.5 9B — крупнее установщик на процессорном хосте не предложит. И первый ответ на машине без GPU может занимать несколько минут даже после успешной проверки установки. Для фоновых задач это терпимо, для живого диалога — нет.
Какую модель брать первой?
Ту, которая укладывается в память с запасом, а не самую большую из влезающих. Порядок рекомендаций в документации — это продуктовая настройка по умолчанию, а не утверждение, что одна модель выигрывает в любой задаче. Возьмите вариант на ступень ниже предела вашей машины, доведите до рабочего состояния вызов инструментов, и только потом пробуйте укрупняться.
Почему OpenClaw не даёт выбрать модель, которая у меня установлена?
Если она объявлена как предназначенная только для эмбеддингов, выбрать её основной моделью чата нельзя — установка сообщит об ошибке и оставит текущую конфигурацию нетронутой. Модели, умеющие и генерацию, и эмбеддинги, при этом остаются доступными.
Локальная модель полностью заменит облачную?
На многошаговых задачах с инструментами — как правило, нет, и планировать стоит из этого. Практичнее гибрид: локальная модель на служебных и чувствительных задачах, облачная — на сложных. Схема с primary и fallbacks выше делает переключение автоматическим.
Нужен ли ключ Ollama, если сервер стоит в моей локальной сети?
Настоящий — нет. Для локальной петли, частной сети, адресов .local и голых имён хостов достаточно маркера ollama-local. Настоящий ключ требуется только публичным удалённым хостам и Ollama Cloud.
Как не держать тяжёлый сервер запущенным круглосуточно?
Ключ localService у записи провайдера: OpenClaw проверит адрес состояния, поднимет процесс, если тот не отвечает, дождётся готовности и только потом отправит запрос. Если процесс запустил сам OpenClaw и задан idleStopMs, он же его и погасит после простоя. Никаких systemd, launchd или Docker для этого не требуется — сервер становится обычным дочерним процессом.
Насколько быстро всё это устаревает?
Каталог рекомендованных моделей и требования к памяти меняются от релиза к релизу — это самая подвижная часть. Ключи конфигурации (baseUrl, api, contextTokens, timeoutSeconds, params.num_ctx) держатся стабильнее. Правило простое: конфиг переносите, цифры перепроверяйте по документации.