Modele lokalne są możliwe do uruchomienia. Podnoszą jednak wymagania dotyczące sprzętu, rozmiaru kontekstu i ochrony przed wstrzykiwaniem promptów — małe lub agresywnie kwantyzowane karty skracają kontekst i osłabiają bezpieczeństwo. Ta strona to opiniowany przewodnik po lokalnych stosach wyższej klasy i niestandardowych lokalnych serwerach zgodnych z OpenAI. Aby rozpocząć z najmniejszym tarciem, zacznij od LM Studio lub Ollama orazDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
openclaw onboard.
W przypadku lokalnych serwerów, które powinny uruchamiać się tylko wtedy, gdy wybrany model ich potrzebuje, zobacz
Usługi modeli lokalnych.
Minimalny sprzęt
Celuj wysoko: ≥2 maksymalnie skonfigurowane Mac Studio albo równoważny zestaw GPU (~30 tys. USD+) dla komfortowej pętli agenta. Pojedyncze GPU 24 GB sprawdza się tylko przy lżejszych promptach i większych opóźnieniach. Zawsze uruchamiaj największy / pełnowymiarowy wariant, jaki możesz hostować; małe lub mocno kwantyzowane checkpointy zwiększają ryzyko wstrzykiwania promptów (zobacz Bezpieczeństwo).Wybierz backend
| Backend | Użyj, gdy |
|---|---|
| LM Studio | Pierwsza lokalna konfiguracja, loader GUI, natywne Responses API |
| Ollama | Przepływ pracy CLI, biblioteka modeli, bezobsługowa usługa systemd |
| MLX / vLLM / SGLang | Wysokoprzepustowe samodzielne serwowanie z punktem końcowym HTTP zgodnym z OpenAI |
| LiteLLM / OAI-proxy / niestandardowy proxy zgodny z OpenAI | Wystawiasz inne API modelu i potrzebujesz, aby OpenClaw traktował je jak OpenAI |
api: "openai-responses"), gdy backend je obsługuje (LM Studio obsługuje). W przeciwnym razie trzymaj się Chat Completions (api: "openai-completions").
Zalecane: LM Studio + duży model lokalny (Responses API)
Najlepszy obecnie stos lokalny. Załaduj duży model w LM Studio (na przykład 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
- W LM Studio pobierz największą dostępną kompilację modelu (unikaj wariantów „small”/mocno kwantyzowanych), uruchom serwer, potwierdź, że
http://127.0.0.1:1234/v1/modelsją wyświetla. - Zastąp
my-local-modelrzeczywistym identyfikatorem modelu pokazanym w LM Studio. - Utrzymuj model załadowany; zimne ładowanie zwiększa opóźnienie startu.
- Dostosuj
contextWindow/maxTokens, jeśli twoja kompilacja LM Studio się różni. - W przypadku WhatsApp trzymaj się Responses API, aby wysyłany był tylko tekst końcowy.
models.mode: "merge", aby opcje awaryjne pozostały dostępne.
Konfiguracja hybrydowa: hostowany podstawowy, lokalny awaryjny
Najpierw lokalnie, z hostowaną siatką bezpieczeństwa
Zamień kolejność modelu podstawowego i awaryjnego; zachowaj ten sam blok providers orazmodels.mode: "merge", aby móc przełączyć się awaryjnie na Sonnet lub Opus, gdy lokalny komputer nie działa.
Hosting regionalny / routing danych
- Hostowane warianty MiniMax/Kimi/GLM istnieją także w OpenRouter z punktami końcowymi przypiętymi do regionu (np. hostowane w USA). Wybierz tam wariant regionalny, aby utrzymać ruch w wybranej jurysdykcji, nadal używając
models.mode: "merge"dla opcji awaryjnych Anthropic/OpenAI. - Wyłącznie lokalne działanie pozostaje najsilniejszą ścieżką prywatności; hostowany routing regionalny to rozwiązanie pośrednie, gdy potrzebujesz funkcji dostawcy, ale chcesz kontrolować przepływ danych.
Inne lokalne proxy zgodne z OpenAI
MLX (mlx_lm.server), vLLM, SGLang, LiteLLM, OAI-proxy lub niestandardowe
Gateway działają, jeśli udostępniają punkt końcowy /v1/chat/completions
w stylu OpenAI. Użyj adaptera Chat Completions, chyba że backend jawnie
dokumentuje obsługę /v1/responses. Zastąp powyższy blok provider własnym
punktem końcowym i identyfikatorem modelu:
api zostanie pominięte u niestandardowego providera z baseUrl, OpenClaw domyślnie używa
openai-completions. Punkty końcowe loopback, takie jak 127.0.0.1, są zaufane
automatycznie; punkty końcowe LAN, tailnet i prywatnego DNS nadal wymagają
request.allowPrivateNetwork: true.
Wartość models.providers.<id>.models[].id jest lokalna dla providera. Nie
dodawaj tam prefiksu providera. Na przykład serwer MLX uruchomiony z
mlx_lm.server --model mlx-community/Qwen3-30B-A3B-6bit powinien używać tego
identyfikatora katalogowego i odwołania do modelu:
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"] w lokalnych lub proxowanych modelach wizyjnych, aby załączniki
obrazów były wstrzykiwane do tur agenta. Interaktywne wdrażanie niestandardowego providera
wnioskuje typowe identyfikatory modeli wizyjnych i pyta tylko o nieznane nazwy.
Nieinteraktywne wdrażanie używa tego samego wnioskowania; użyj --custom-image-input
dla nieznanych identyfikatorów wizyjnych albo --custom-text-input, gdy model wyglądający na znany
jest tekstowy za twoim punktem końcowym.
Zachowaj models.mode: "merge", aby modele hostowane pozostały dostępne jako opcje awaryjne.
Używaj models.providers.<id>.timeoutSeconds dla wolnych lokalnych lub zdalnych serwerów
modeli, zanim zwiększysz agents.defaults.timeoutSeconds. Limit czasu providera
dotyczy wyłącznie żądań HTTP modelu, w tym połączenia, nagłówków, strumieniowania treści
oraz całkowitego przerwania chronionego pobierania.
W przypadku niestandardowych providerów zgodnych z OpenAI zapis niesekretnego lokalnego znacznika, takiego jak
apiKey: "ollama-local", jest akceptowany, gdy baseUrl rozwiązuje się do loopback, prywatnej sieci LAN, .local lub samej nazwy hosta. OpenClaw traktuje go jako prawidłowe lokalne poświadczenie zamiast zgłaszać brak klucza. Użyj rzeczywistej wartości dla każdego providera akceptującego publiczną nazwę hosta./v1:
- OpenClaw traktuje je jako trasy zgodne z OpenAI w stylu proxy, a nie natywne punkty końcowe OpenAI
- nie stosuje się tu kształtowanie żądań wyłącznie dla natywnego OpenAI: brak
service_tier, brak Responsesstore, brak kształtowania payloadu zgodnego z rozumowaniem OpenAI i brak podpowiedzi pamięci podręcznej promptów - ukryte nagłówki atrybucji OpenClaw (
originator,version,User-Agent) nie są wstrzykiwane pod tymi niestandardowymi URL-ami proxy
-
Niektóre serwery akceptują w Chat Completions tylko tekstowe
messages[].content, a nie ustrukturyzowane tablice części treści. Ustawmodels.providers.<provider>.models[].compat.requiresStringContent: truedla tych punktów końcowych. -
Niektóre modele lokalne emitują samodzielne narzędziowe żądania w nawiasach jako tekst, takie jak
[tool_name], po którym następuje JSON i[END_TOOL_REQUEST]. OpenClaw promuje je do prawdziwych wywołań narzędzi tylko wtedy, gdy nazwa dokładnie pasuje do zarejestrowanego narzędzia dla danej tury; w przeciwnym razie blok jest traktowany jako nieobsługiwany tekst i ukrywany przed odpowiedziami widocznymi dla użytkownika. - Jeśli model emituje JSON, XML lub tekst w stylu ReAct, który wygląda jak wywołanie narzędzia, ale provider nie wyemitował ustrukturyzowanego wywołania, OpenClaw pozostawia go jako tekst i rejestruje ostrzeżenie z identyfikatorem uruchomienia, providerem/modelem, wykrytym wzorcem oraz nazwą narzędzia, gdy jest dostępna. Traktuj to jako niekompatybilność wywołań narzędzi providera/modelu, a nie ukończone uruchomienie narzędzia.
-
Jeśli narzędzia pojawiają się jako tekst asystenta zamiast się uruchamiać, na przykład surowy JSON,
XML, składnia ReAct lub pusta tablica
tool_callsw odpowiedzi providera, najpierw sprawdź, czy serwer używa szablonu/parsera czatu obsługującego wywołania narzędzi. W przypadku backendów Chat Completions zgodnych z OpenAI, których parser działa tylko wtedy, gdy użycie narzędzi jest wymuszone, ustaw nadpisanie żądania dla konkretnego modelu zamiast polegać na parsowaniu tekstu:Używaj tego tylko dla modeli/sesji, w których każda normalna tura powinna wywoływać narzędzie. Nadpisuje to domyślną wartość proxy OpenClawtool_choice: "auto". Zastąplocal/my-local-modeldokładnym odwołaniem provider/model pokazanym przezopenclaw models list. -
Jeśli niestandardowy model zgodny z OpenAI akceptuje wysiłki rozumowania OpenAI wykraczające poza
wbudowany profil, zadeklaruj je w bloku kompatybilności modelu. Dodanie tutaj
"xhigh"sprawia, że/think xhigh, selektory sesji, walidacja Gateway i walidacjallm-taskudostępniają ten poziom dla skonfigurowanego odwołania provider/model:
Mniejsze lub ściślejsze backendy
Jeśli model ładuje się poprawnie, ale pełne tury agenta działają nieprawidłowo, pracuj od góry do dołu — najpierw potwierdź transport, potem zawęź powierzchnię.-
Potwierdź, że sam model lokalny odpowiada. Bez narzędzi, bez kontekstu agenta:
-
Potwierdź trasowanie Gateway. Wysyła tylko podany prompt — pomija transkrypcję, bootstrap AGENTS, składanie przez silnik kontekstu, narzędzia i dołączone serwery MCP, ale nadal sprawdza trasowanie Gateway, uwierzytelnianie i wybór providera:
-
Wypróbuj tryb odchudzony. Jeśli oba sprawdzenia przechodzą, ale rzeczywiste tury agenta kończą się niepoprawnie sformatowanymi wywołaniami narzędzi lub zbyt dużymi promptami, włącz
agents.defaults.experimental.localModelLean: true. Usuwa to trzy najcięższe domyślne narzędzia (browser,cron,message), dzięki czemu kształt promptu jest mniejszy i mniej kruchy. Zobacz Funkcje eksperymentalne → tryb odchudzonego modelu lokalnego, aby poznać pełne wyjaśnienie, kiedy go używać i jak potwierdzić, że jest włączony. -
Całkowicie wyłącz narzędzia w ostateczności. Jeśli tryb odchudzony nie wystarczy, ustaw
models.providers.<provider>.models[].compat.supportsTools: falsedla tego wpisu modelu. Agent będzie wtedy działać na tym modelu bez wywołań narzędzi. -
Poza tym wąskie gardło jest upstream. Jeśli backend nadal zawodzi tylko przy większych uruchomieniach OpenClaw po włączeniu trybu odchudzonego i
supportsTools: false, pozostały problem zwykle dotyczy upstreamowego modelu lub pojemności serwera — okna kontekstu, pamięci GPU, eksmisji kv-cache albo błędu backendu. Na tym etapie nie jest to warstwa transportu OpenClaw.
Rozwiązywanie problemów
- Gateway może dosięgnąć proxy?
curl http://127.0.0.1:1234/v1/models. - Model LM Studio jest rozładowany? Załaduj go ponownie; zimny start to częsta przyczyna „zawieszania się”.
- Serwer lokalny zgłasza
terminated,ECONNRESETalbo zamyka strumień w połowie tury? OpenClaw zapisuje niskokardynalnymodel.call.error.failureKindoraz migawkę RSS/sterty procesu OpenClaw w diagnostyce. Przy presji pamięciowej LM Studio/Ollama dopasuj ten znacznik czasu do logu serwera albo logu awarii macOS / jetsam, aby potwierdzić, czy serwer modelu został zabity. - OpenClaw wyprowadza progi kontroli wstępnej okna kontekstu z wykrytego okna modelu albo z nieograniczonego okna modelu, gdy
agents.defaults.contextTokensobniża efektywne okno. Ostrzega poniżej 20% z dolnym limitem 8k. Twarde blokady używają progu 10% z dolnym limitem 4k, ograniczonego do efektywnego okna kontekstu, aby zawyżone metadane modelu nie mogły odrzucić skądinąd poprawnego limitu użytkownika. Jeśli trafisz na tę kontrolę wstępną, zwiększ limit kontekstu serwera/modelu albo wybierz większy model. - Błędy kontekstu? Obniż
contextWindowalbo zwiększ limit serwera. - Serwer zgodny z OpenAI zwraca
messages[].content ... expected a string? Dodajcompat.requiresStringContent: truedo tego wpisu modelu. - Serwer zgodny z OpenAI zwraca
validation.keysalbo mówi, że wpisy wiadomości dopuszczają tylkoroleicontent? Dodajcompat.strictMessageKeys: truedo tego wpisu modelu. - Bezpośrednie małe wywołania
/v1/chat/completionsdziałają, aleopenclaw infer model run --localzawodzi na Gemmie albo innym modelu lokalnym? Najpierw sprawdź URL providera, referencję modelu, marker uwierzytelniania i logi serwera; lokalnemodel runnie zawiera narzędzi agenta. Jeśli lokalnemodel rundziała, ale większe tury agenta zawodzą, ogranicz powierzchnię narzędzi agenta przezlocalModelLeanalbocompat.supportsTools: false. - Wywołania narzędzi pojawiają się jako surowy tekst JSON/XML/ReAct albo provider zwraca
pustą tablicę
tool_calls? Nie dodawaj proxy, które ślepo konwertuje tekst asystenta na wykonanie narzędzia. Najpierw napraw szablon/parser czatu serwera. Jeśli model działa tylko wtedy, gdy użycie narzędzi jest wymuszone, dodaj powyższe nadpisanieparams.extra_body.tool_choice: "required"dla danego modelu i używaj tego wpisu modelu tylko w sesjach, w których wywołanie narzędzia jest oczekiwane w każdej turze. - Bezpieczeństwo: modele lokalne pomijają filtry po stronie providera; utrzymuj agentów wąsko ukierunkowanych i włącz Compaction, aby ograniczyć zasięg prompt injection.