openclaw onboard.
Відомості про локальні сервери, які мають запускатися лише тоді, коли вони потрібні вибраній моделі, див. у розділі Сервіси локальних моделей.
Мінімальні вимоги до обладнання
Для комфортного циклу роботи агента орієнтуйтеся на щонайменше 2 Mac Studio у максимальній конфігурації або еквівалентну систему з GPU (приблизно від $30 тис.). Один GPU з 24 ГБ пам’яті придатний лише для легших промптів і працює з вищою затримкою. Завжди запускайте найбільший або повнорозмірний варіант, який можете розмістити, — малі або сильно квантовані контрольні точки підвищують ризик ін’єкцій у промпт (див. Безпека).Вибір серверної платформи
Використовуйте
api: "openai-responses", якщо серверна платформа його підтримує (LM Studio підтримує). Інакше використовуйте api: "openai-completions". Якщо для власного провайдера з baseUrl параметр api не вказано, OpenClaw типово використовує openai-completions.
LM Studio + велика локальна модель (Responses API)
Наразі це найкращий локальний стек. Завантажте велику модель у LM Studio (повнорозмірну збірку Qwen, DeepSeek або Llama), увімкніть локальний сервер (типовоhttp://127.0.0.1:1234) і використовуйте Responses API, щоб міркування залишалися відокремленими від остаточного тексту.
- Установіть LM Studio: https://lmstudio.ai
- Завантажте найбільшу доступну збірку моделі (уникайте «малих» або сильно квантованих варіантів), запустіть сервер і переконайтеся, що модель наведено за адресою
http://127.0.0.1:1234/v1/models. - Замініть
my-local-modelфактичним ідентифікатором моделі, показаним у LM Studio. - Не вивантажуйте модель із пам’яті: холодне завантаження збільшує затримку запуску.
- Скоригуйте
contextWindow/maxTokens, якщо ваша збірка LM Studio використовує інші значення. - Для WhatsApp використовуйте Responses API, щоб надсилався лише остаточний текст.
- Залиште
models.mode: "merge", щоб розміщені моделі й надалі були доступні як резервні.
Гібридна конфігурація: розміщена основна модель, локальна резервна
primary/fallbacks і залиште той самий блок providers та models.mode: "merge".
Регіональне розміщення та маршрутизація даних
Розміщені варіанти MiniMax/Kimi/GLM також доступні в OpenRouter із прив’язаними до регіону кінцевими точками (наприклад, розміщеними у США). Виберіть регіональний варіант, щоб зберігати трафік у вибраній юрисдикції, і залиштеmodels.mode: "merge" для резервних моделей Anthropic/OpenAI. Виключно локальне використання все одно забезпечує найкращу приватність; регіональна маршрутизація через розміщеного провайдера — це компромісний варіант, коли потрібні можливості провайдера, але також необхідний контроль над потоком даних.
Інші локальні проксі, сумісні з OpenAI
MLX (mlx_lm.server), vLLM, SGLang, LiteLLM, OAI-proxy або будь-який власний Gateway працюватиме, якщо він надає кінцеву точку /v1/chat/completions у стилі OpenAI. Використовуйте openai-completions, якщо в документації серверної платформи явно не заявлено підтримку /v1/responses.
baseUrl для захищених запитів до моделей, зокрема вузлам зворотного зв’язку, локальної мережі, tailnet і приватного DNS. Джерела метаданих і локального каналу завжди блокуються незалежно від налаштувань. Для запитів до інших приватних джерел усе одно потрібно встановити models.providers.<id>.request.allowPrivateNetwork: true; установіть прапорець довіри в false, щоб вимкнути довіру до точного джерела.
models.providers.<id>.models[].id є локальним для провайдера — не додавайте префікс провайдера. Для сервера MLX, запущеного командою mlx_lm.server --model mlx-community/Qwen3-30B-A3B-6bit:
models.providers.mlx.models[].id: "mlx-community/Qwen3-30B-A3B-6bit"agents.defaults.model.primary: "mlx/mlx-community/Qwen3-30B-A3B-6bit"
input: ["text", "image"] для локальних або проксійованих моделей із підтримкою зображень, щоб вкладення із зображеннями додавалися до ходів агента. Інтерактивне налаштування власного провайдера розпізнає поширені ідентифікатори моделей із підтримкою зображень і ставить запитання лише щодо невідомих назв; неінтерактивне налаштування використовує таке саме розпізнавання, яке можна перевизначити за допомогою --custom-image-input / --custom-text-input.
Для повільних локальних або віддалених серверів моделей використовуйте models.providers.<id>.timeoutSeconds, перш ніж збільшувати agents.defaults.timeoutSeconds. Тайм-аут провайдера охоплює встановлення з’єднання, заголовки, потокове передавання тіла та загальне переривання захищеного отримання лише для HTTP-запитів до моделі. Якщо тайм-аут агента або запуску менший, збільште і його, оскільки тайм-аут провайдера не може подовжити весь запуск.
Для власних провайдерів, сумісних з OpenAI, несекретний локальний маркер на кшталт
apiKey: "ollama-local" приймається, коли baseUrl вказує на вузол зворотного зв’язку, приватну локальну мережу, .local або ім’я хоста без домену, — OpenClaw вважає його дійсними локальними обліковими даними замість повідомлення про відсутній ключ. Використовуйте справжнє значення для будь-якого провайдера, який приймає загальнодоступне ім’я хоста./v1:
- OpenClaw розглядає їх як проксійовані маршрути, сумісні з OpenAI, а не як нативні кінцеві точки OpenAI.
- Формування запитів, призначене лише для нативного OpenAI, не застосовується: без
service_tier, без Responsesstore, без формування корисного навантаження сумісності міркувань OpenAI та без підказок кешу промптів. - Приховані заголовки атрибуції OpenClaw (
originator,version,User-Agent) не додаються до власних URL-адрес проксі.
-
Лише рядковий вміст: деякі сервери приймають у
messages[].contentлише рядки, а не структуровані масиви частин вмісту. Установітьmodels.providers.<provider>.models[].compat.requiresStringContent: true. -
Суворий набір ключів повідомлення: якщо сервер відхиляє записи повідомлень, що містять ключі, відмінні від
role/content, установітьcompat.strictMessageKeys: true. -
Текст інструмента у квадратних дужках: деякі локальні моделі виводять окремі текстові запити до інструментів у квадратних дужках, наприклад
[tool_name], після якого йдуть JSON і[END_TOOL_REQUEST]. OpenClaw перетворює їх на справжні виклики інструментів лише тоді, коли назва точно збігається з інструментом, зареєстрованим для цього ходу; інакше текст залишається прихованим і непідтримуваним. - Неструктурований текст, схожий на виклик інструмента: якщо модель виводить текст у форматі JSON/XML/ReAct, схожий на виклик інструмента, але він не був структурованим викликом, OpenClaw залишає його текстом і записує попередження з ідентифікатором запуску, провайдером/моделлю, виявленим шаблоном та назвою інструмента, якщо вона доступна. Це несумісність провайдера або моделі, а не завершений запуск інструмента.
-
Примусове використання інструментів: якщо інструменти з’являються як текст асистента (необроблений JSON/XML/ReAct або порожній масив
tool_calls), спочатку переконайтеся, що шаблон або аналізатор чату сервера підтримує виклики інструментів. Якщо аналізатор працює лише за примусового використання інструментів, перевизначте типове проксійоване значенняtool_choice: "auto"для відповідної моделі:Використовуйте це лише тоді, коли кожен звичайний хід має викликати інструмент. Замінітьlocal/my-local-modelточним посиланням ізopenclaw models listабо задайте його через CLI: -
Додаткові рівні інтенсивності міркувань: якщо власна модель, сумісна з OpenAI, приймає рівні інтенсивності міркувань OpenAI поза межами вбудованого профілю, оголосіть їх у блоці сумісності моделі. Додавання
"xhigh"робить його доступним для цього посилання на модель у/think xhigh, засобах вибору сеансу, перевірці Gateway і перевірціllm-task:
Менші або суворіші серверні платформи
Якщо модель завантажується без помилок, але повні ходи агента працюють некоректно, рухайтеся згори вниз: спочатку перевірте транспорт, а потім звужуйте поверхню.-
Переконайтеся, що локальна модель відповідає — без інструментів і без контексту агента:
-
Підтвердьте маршрутизацію Gateway — надсилає лише запит, пропускаючи транскрипт, початкове завантаження AGENTS, формування контекстним рушієм, інструменти та вбудовані сервери MCP, але все одно перевіряє маршрутизацію Gateway, автентифікацію та вибір провайдера:
-
Спробуйте полегшений режим, якщо обидві перевірки успішні, але реальні ходи агента завершуються помилкою через неправильно сформовані виклики інструментів або завеликі запити: установіть
agents.defaults.experimental.localModelLean: true. Цей режим вимикає ресурсомісткі інструменти браузера, cron, повідомлень, генерування медіа, голосу та PDF, якщо вони не потрібні явно, а більші каталоги інструментів типово приховує за структурованими засобами керування пошуком інструментів, залишаючиexecбезпосередньо видимим. Докладніше про це та про те, як перевірити, чи режим увімкнено, див. у розділі Експериментальні функції -> Полегшений режим локальної моделі. -
Повністю вимкніть інструменти як крайній захід, установивши
models.providers.<provider>.models[].compat.supportsTools: falseдля цієї моделі — після цього агент працюватиме без викликів інструментів. -
Після цього вузьке місце перебуває у висхідній системі. Якщо після ввімкнення полегшеного режиму та
supportsTools: falseбекенд усе ще відмовляє лише під час великих запусків OpenClaw, проблема, що залишилася, зазвичай полягає в самій моделі або сервері — контекстному вікні, пам’яті GPU, витісненні kv-кешу чи помилці бекенду, — а не в транспортному рівні OpenClaw.
Усунення несправностей
- Gateway не може підключитися до проксі?
curl http://127.0.0.1:1234/v1/models. - Модель LM Studio вивантажено? Завантажте її повторно; холодний запуск — поширена причина «зависання».
- Локальний сервер повідомляє
terminated,ECONNRESETабо закриває потік посеред ходу? OpenClaw записує в діагностику низькокардинальне значенняmodel.call.error.failureKind, а також знімок RSS/купи процесу OpenClaw. У разі тиску на пам’ять у LM Studio/Ollama зіставте цю часову позначку із журналом сервера або журналом аварійного завершення/jetsam у macOS, щоб підтвердити, чи було завершено процес сервера моделі. - Помилки контексту? OpenClaw визначає пороги попередньої перевірки контекстного вікна на основі виявленого вікна моделі (або обмеженого вікна, якщо
agents.defaults.contextTokensзменшує його), показуючи попередження нижче 20% із мінімумом 8k і жорстко блокуючи нижче 10% із мінімумом 4k (з обмеженням до ефективного контекстного вікна, щоб завеликі метадані моделі не призводили до відхилення коректного користувацького обмеження). ЗменштеcontextWindowабо збільште обмеження контексту сервера/моделі. messages[].content ... expected a string? Додайтеcompat.requiresStringContent: trueдо запису цієї моделі.validation.keysабо «message entries only allowroleandcontent»? Додайтеcompat.strictMessageKeys: trueдо запису цієї моделі.- Прямі виклики
/v1/chat/completionsпрацюють, алеopenclaw infer model run --localзавершується помилкою з Gemma або іншою локальною моделлю? Спочатку перевірте URL провайдера, посилання на модель, маркер автентифікації та журнали сервера —model runповністю пропускає інструменти агента. Якщоmodel runвиконується успішно, але більші ходи агента завершуються помилкою, скоротіть набір інструментів за допомогоюlocalModelLeanабоcompat.supportsTools: false. - Виклики інструментів відображаються як необроблений текст JSON/XML/ReAct або провайдер повертає порожній масив
tool_calls? Не додавайте проксі, який безумовно перетворює текст асистента на виконання інструментів, — спочатку виправте шаблон чату/парсер сервера. Якщо модель працює лише за примусового використання інструментів, додайте наведене вище перевизначенняparams.extra_body.tool_choice: "required"і використовуйте цей запис моделі лише для сеансів, у яких виклик інструмента очікується на кожному ході. - Безпека: локальні моделі оминають фільтри на боці провайдера. Звужуйте повноваження агентів і залишайте Compaction увімкненим, щоб обмежити масштаб наслідків ін’єкції запитів.