openclaw onboard.
Informacje o lokalnych serwerach, które powinny uruchamiać się tylko wtedy, gdy wymaga ich wybrany model, znajdziesz w sekcji Usługi modeli lokalnych.
Minimalne wymagania sprzętowe
Aby zapewnić komfortową pętlę agenta, wybierz co najmniej 2 komputery Mac Studio w maksymalnej konfiguracji lub równoważny zestaw GPU (ok. 30 tys. USD lub więcej). Pojedynczy GPU z 24 GB pamięci obsłuży tylko prostsze polecenia i będzie działać z większym opóźnieniem. Zawsze uruchamiaj największy wariant o pełnym rozmiarze, jaki możesz hostować — małe lub silnie skwantyzowane punkty kontrolne zwiększają ryzyko wstrzykiwania poleceń (zobacz Bezpieczeństwo).Wybór zaplecza
Użyj
api: "openai-responses", gdy zaplecze go obsługuje (LM Studio obsługuje). W przeciwnym razie użyj api: "openai-completions". Jeśli w niestandardowym dostawcy z baseUrl pominięto api, OpenClaw domyślnie używa openai-completions.
LM Studio + duży model lokalny (Responses API)
Jest to obecnie najlepszy stos lokalny. Załaduj duży model w LM Studio (pełnowymiarową kompilację Qwen, DeepSeek lub Llama), włącz serwer lokalny (domyślniehttp://127.0.0.1:1234) i użyj Responses API, aby oddzielić rozumowanie od tekstu końcowego.
- Zainstaluj LM Studio: https://lmstudio.ai
- Pobierz największą dostępną kompilację modelu (unikaj wariantów „małych” lub silnie skwantyzowanych), uruchom serwer i potwierdź, że model znajduje się na liście pod adresem
http://127.0.0.1:1234/v1/models. - Zastąp
my-local-modelrzeczywistym identyfikatorem modelu wyświetlanym w LM Studio. - Pozostaw model załadowany; ładowanie od zera zwiększa opóźnienie uruchamiania.
- Dostosuj
contextWindow/maxTokens, jeśli Twoja kompilacja LM Studio ma inne wartości. - W przypadku WhatsApp pozostań przy Responses API, aby wysyłany był tylko tekst końcowy.
- Zachowaj
models.mode: "merge", aby modele hostowane pozostały dostępne jako opcje rezerwowe.
Konfiguracja hybrydowa: hostowany model podstawowy, lokalny model rezerwowy
primary/fallbacks i zachowaj ten sam blok providers oraz models.mode: "merge".
Hosting regionalny / trasowanie danych
Hostowane warianty MiniMax/Kimi/GLM są również dostępne w OpenRouter z punktami końcowymi przypisanymi do regionów (na przykład hostowanymi w Stanach Zjednoczonych). Wybierz wariant regionalny, aby utrzymać ruch w wybranej jurysdykcji, zachowując jednocześniemodels.mode: "merge" dla modeli rezerwowych Anthropic/OpenAI. Korzystanie wyłącznie z modeli lokalnych nadal zapewnia najwyższy poziom prywatności; regionalne trasowanie hostowane stanowi rozwiązanie pośrednie, gdy potrzebujesz funkcji dostawcy, ale chcesz zachować kontrolę nad przepływem danych.
Inne lokalne proxy zgodne z OpenAI
MLX (mlx_lm.server), vLLM, SGLang, LiteLLM, OAI-proxy lub dowolny niestandardowy Gateway działa, jeśli udostępnia punkt końcowy /v1/chat/completions w stylu OpenAI. Używaj openai-completions, chyba że dokumentacja zaplecza wyraźnie potwierdza obsługę /v1/responses.
baseUrl za zaufane dla chronionych żądań modelu, w tym hosty pętli zwrotnej, sieci LAN, sieci tailnet i prywatnego DNS. Źródła metadanych i adresy lokalne dla łącza są zawsze blokowane. Żądania do innych źródeł prywatnych nadal wymagają ustawienia models.providers.<id>.request.allowPrivateNetwork: true; ustaw flagę zaufania na false, aby wyłączyć zaufanie do dokładnie wskazanego źródła.
models.providers.<id>.models[].id jest lokalny dla dostawcy — nie dołączaj prefiksu dostawcy. Dla serwera MLX uruchomionego za pomocą 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"] dla lokalnych lub pośredniczonych modeli wizyjnych, aby załączniki graficzne były wstrzykiwane do tur agenta. Interaktywna konfiguracja niestandardowego dostawcy rozpoznaje typowe identyfikatory modeli wizyjnych i pyta tylko o nieznane nazwy; konfiguracja nieinteraktywna korzysta z tego samego rozpoznawania, z możliwością nadpisania za pomocą --custom-image-input / --custom-text-input.
W przypadku powolnych lokalnych lub zdalnych serwerów modeli użyj models.providers.<id>.timeoutSeconds, zanim zwiększysz agents.defaults.timeoutSeconds. Limit czasu dostawcy obejmuje nawiązywanie połączenia, nagłówki, strumieniowanie treści oraz całkowite przerwanie chronionego pobierania wyłącznie dla żądań HTTP modelu — jeśli limit czasu agenta/uruchomienia jest niższy, zwiększ również jego wartość, ponieważ limit czasu dostawcy nie może wydłużyć całego uruchomienia.
W przypadku niestandardowych dostawców zgodnych z OpenAI akceptowany jest niepoufny lokalny znacznik, taki jak
apiKey: "ollama-local", gdy baseUrl wskazuje na pętlę zwrotną, prywatną sieć LAN, domenę .local lub prostą nazwę hosta — OpenClaw traktuje go jako prawidłowe lokalne poświadczenie zamiast zgłaszać brak klucza. Użyj rzeczywistej wartości dla każdego dostawcy, który akceptuje publiczną nazwę hosta./v1:
- OpenClaw traktuje je jako trasy proxy zgodne z OpenAI, a nie natywne punkty końcowe OpenAI.
- Kształtowanie żądań przeznaczone wyłącznie dla natywnego OpenAI nie ma zastosowania: bez
service_tier, bezstoreinterfejsu Responses, bez kształtowania ładunku zgodności rozumowania OpenAI i bez wskazówek dotyczących pamięci podręcznej poleceń. - Ukryte nagłówki atrybucji OpenClaw (
originator,version,User-Agent) nie są wstrzykiwane do niestandardowych adresów URL proxy.
-
Treść wyłącznie jako ciąg znaków: niektóre serwery akceptują tylko ciąg znaków w
messages[].content, a nie ustrukturyzowane tablice części treści. Ustawmodels.providers.<provider>.models[].compat.requiresStringContent: true. -
Ścisłe klucze wiadomości: jeśli serwer odrzuca wpisy wiadomości zawierające więcej niż
role/content, ustawcompat.strictMessageKeys: true. -
Tekst narzędzia w nawiasach kwadratowych: niektóre modele lokalne emitują jako tekst samodzielne żądania narzędzi w nawiasach kwadratowych, takie jak
[tool_name], po których następuje kod JSON i[END_TOOL_REQUEST]. OpenClaw przekształca je w rzeczywiste wywołania narzędzi tylko wtedy, gdy nazwa dokładnie odpowiada narzędziu zarejestrowanemu dla danej tury; w przeciwnym razie pozostają ukrytym, nieobsługiwanym tekstem. - Nieustrukturyzowany tekst przypominający wywołanie narzędzia: jeśli model emituje tekst w stylu JSON/XML/ReAct, który wygląda jak wywołanie narzędzia, ale nie był ustrukturyzowanym wywołaniem, OpenClaw pozostawia go jako tekst i rejestruje ostrzeżenie z identyfikatorem uruchomienia, dostawcą/modelem, wykrytym wzorcem oraz nazwą narzędzia, jeśli jest dostępna. Jest to niezgodność dostawcy/modelu, a nie ukończone uruchomienie narzędzia.
-
Wymuszanie użycia narzędzia: jeśli narzędzia pojawiają się jako tekst asystenta (surowy JSON/XML/ReAct albo pusta tablica
tool_calls), najpierw potwierdź, że szablon/parser czatu serwera obsługuje wywołania narzędzi. Jeśli parser działa tylko przy wymuszonym użyciu narzędzi, nadpisz dla danego modelu domyślną wartość proxytool_choice: "auto":Używaj tego tylko wtedy, gdy każda zwykła tura powinna wywoływać narzędzie. Zastąplocal/my-local-modeldokładnym odwołaniem zopenclaw models listalbo ustaw je za pomocą CLI: -
Dodatkowe poziomy intensywności rozumowania: jeśli niestandardowy model zgodny z OpenAI akceptuje poziomy intensywności rozumowania OpenAI wykraczające poza wbudowany profil, zadeklaruj je w bloku zgodności modelu. Dodanie
"xhigh"udostępnia je dla tego odwołania do modelu w/think xhigh, selektorach sesji, walidacji Gateway oraz walidacjillm-task:
Mniejsze lub bardziej rygorystyczne zaplecza
Jeśli model ładuje się prawidłowo, ale pełne tury agenta działają niepoprawnie, postępuj od ogółu do szczegółu: najpierw potwierdź działanie transportu, a następnie zawężaj zakres.-
Potwierdź, że model lokalny odpowiada — bez narzędzi i bez kontekstu agenta:
-
Potwierdź routing Gateway — wysyła wyłącznie prompt, pomijając transkrypcję, inicjalizację AGENTS, składanie silnika kontekstu, narzędzia i dołączone serwery MCP, ale nadal sprawdza routing Gateway, uwierzytelnianie i wybór dostawcy:
-
Wypróbuj tryb odchudzony, jeśli oba testy kończą się powodzeniem, ale rzeczywiste tury agenta zawodzą z powodu nieprawidłowych wywołań narzędzi lub zbyt dużych promptów: ustaw
agents.defaults.experimental.localModelLean: true. Tryb ten usuwa rozbudowane narzędzia przeglądarki, cron, wiadomości, generowania multimediów, obsługi głosu i plików PDF, chyba że są jawnie wymagane, a większe katalogi narzędzi domyślnie udostępnia za pośrednictwem ustrukturyzowanych mechanizmów wyszukiwania narzędzi, pozostawiającexecbezpośrednio widoczne. Szczegóły i sposób sprawdzenia, czy tryb jest włączony, znajdziesz w sekcji Funkcje eksperymentalne -> Tryb odchudzony modelu lokalnego. -
W ostateczności całkowicie wyłącz narzędzia, ustawiając dla tego modelu
models.providers.<provider>.models[].compat.supportsTools: false— agent będzie wtedy działać bez wywołań narzędzi. -
Po wyczerpaniu tych możliwości wąskie gardło znajduje się po stronie systemu nadrzędnego. Jeśli po włączeniu trybu odchudzonego i ustawieniu
supportsTools: falsebackend nadal zawodzi tylko przy większych uruchomieniach OpenClaw, pozostały problem zwykle dotyczy samego modelu lub serwera — okna kontekstu, pamięci GPU, usuwania wpisów z pamięci podręcznej KV albo błędu backendu — a nie warstwy transportowej OpenClaw.
Rozwiązywanie problemów
- Gateway nie może połączyć się z serwerem proxy?
curl http://127.0.0.1:1234/v1/models. - Model został wyładowany z LM Studio? Załaduj go ponownie; zimny start jest częstą przyczyną „zawieszania się”.
- Serwer lokalny zgłasza
terminated,ECONNRESETlub zamyka strumień w trakcie tury? OpenClaw zapisuje w diagnostyce wartośćmodel.call.error.failureKindo niewielkiej liczbie możliwych wariantów oraz migawkę RSS/sterty procesu OpenClaw. W przypadku presji na pamięć w LM Studio/Ollama porównaj ten znacznik czasu z dziennikiem serwera albo dziennikiem awarii/jetsam systemu macOS, aby potwierdzić, czy serwer modelu został zakończony. - Błędy kontekstu? OpenClaw wyznacza progi kontroli wstępnej okna kontekstu na podstawie wykrytego okna modelu (lub ograniczonego okna, gdy
agents.defaults.contextTokensje zmniejsza), wyświetlając ostrzeżenie poniżej 20% przy dolnej granicy 8k i bezwzględnie blokując działanie poniżej 10% przy dolnej granicy 4k (wartości są ograniczone do efektywnego okna kontekstu, aby zawyżone metadane modelu nie mogły spowodować odrzucenia prawidłowego limitu użytkownika). ZmniejszcontextWindowalbo zwiększ limit kontekstu serwera/modelu. messages[].content ... expected a string? Dodajcompat.requiresStringContent: truedo wpisu tego modelu.validation.keyslub „message entries only allowroleandcontent”? Dodajcompat.strictMessageKeys: truedo wpisu tego modelu.- Bezpośrednie wywołania
/v1/chat/completionsdziałają, aleopenclaw infer model run --localnie działa z modelem Gemma lub innym modelem lokalnym? Najpierw sprawdź adres URL dostawcy, odwołanie do modelu, znacznik uwierzytelniania i dzienniki serwera —model runcałkowicie pomija narzędzia agenta. Jeślimodel rundziała, ale większe tury agenta zawodzą, ogranicz zestaw narzędzi za pomocąlocalModelLeanlubcompat.supportsTools: false. - Wywołania narzędzi pojawiają się jako nieprzetworzony tekst JSON/XML/ReAct albo dostawca zwraca pustą tablicę
tool_calls? Nie dodawaj serwera proxy, który bezwarunkowo przekształca tekst asystenta w wykonanie narzędzia — najpierw napraw szablon/parser czatu serwera. Jeśli model działa tylko przy wymuszonym użyciu narzędzi, dodaj opisane wyżej nadpisanieparams.extra_body.tool_choice: "required"i używaj tego wpisu modelu wyłącznie w sesjach, w których w każdej turze oczekiwane jest wywołanie narzędzia. - Bezpieczeństwo: modele lokalne pomijają filtry po stronie dostawcy. Ogranicz zakres działania agentów i pozostaw włączoną funkcję Compaction, aby zmniejszyć zasięg skutków wstrzykiwania promptów.