Cục bộ là khả thi, nhưng OpenClaw cần ngữ cảnh lớn và các lớp phòng vệ mạnh trước prompt injection. Các card nhỏ sẽ cắt ngắn ngữ cảnh và làm suy yếu độ an toàn. Hãy đặt mục tiêu cao: ≥2 Mac Studios cấu hình tối đa hoặc dàn GPU tương đương (~$30k+). Một GPU 24 GB chỉ phù hợp với các prompt nhẹ hơn và độ trễ cao hơn. Dùng biến thể mô hình lớn nhất / đầy đủ kích thước mà bạn có thể chạy; các checkpoint bị lượng tử hóa quá mạnh hoặc “nhỏ” làm tăng rủi ro prompt injection (xem Bảo mật). Nếu bạn muốn thiết lập cục bộ ít ma sát nhất, hãy bắt đầu với LM Studio hoặc Ollama vàDocumentation 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. Trang này là hướng dẫn có chủ kiến cho các stack cục bộ cao cấp hơn và máy chủ cục bộ tương thích OpenAI tùy chỉnh.
Khuyến nghị: LM Studio + mô hình cục bộ lớn (Responses API)
Stack cục bộ tốt nhất hiện nay. Tải một mô hình lớn trong LM Studio (ví dụ: bản dựng Qwen, DeepSeek hoặc Llama đầy đủ kích thước), bật máy chủ cục bộ (mặc địnhhttp://127.0.0.1:1234), và dùng Responses API để tách riêng suy luận khỏi văn bản cuối cùng.
- Cài đặt LM Studio: https://lmstudio.ai
- Trong LM Studio, tải xuống bản dựng mô hình lớn nhất hiện có (tránh các biến thể “nhỏ”/bị lượng tử hóa nặng), khởi động máy chủ, xác nhận
http://127.0.0.1:1234/v1/modelsliệt kê mô hình đó. - Thay
my-local-modelbằng ID mô hình thực tế hiển thị trong LM Studio. - Giữ mô hình đã tải; tải nguội sẽ làm tăng độ trễ khởi động.
- Điều chỉnh
contextWindow/maxTokensnếu bản dựng LM Studio của bạn khác. - Với WhatsApp, hãy dùng Responses API để chỉ văn bản cuối cùng được gửi.
models.mode: "merge" để các phương án dự phòng vẫn khả dụng.
Cấu hình lai: chính là hosted, dự phòng là cục bộ
Ưu tiên cục bộ với lưới an toàn hosted
Đổi thứ tự chính và dự phòng; giữ nguyên khối providers vàmodels.mode: "merge" để bạn có thể chuyển dự phòng sang Sonnet hoặc Opus khi máy cục bộ không hoạt động.
Hosting theo khu vực / định tuyến dữ liệu
- Các biến thể hosted MiniMax/Kimi/GLM cũng có trên OpenRouter với endpoint được ghim theo khu vực (ví dụ: hosted tại Hoa Kỳ). Chọn biến thể khu vực ở đó để giữ lưu lượng trong phạm vi pháp lý bạn chọn trong khi vẫn dùng
models.mode: "merge"cho các phương án dự phòng Anthropic/OpenAI. - Chỉ cục bộ vẫn là hướng bảo mật riêng tư mạnh nhất; định tuyến khu vực hosted là điểm cân bằng khi bạn cần tính năng của nhà cung cấp nhưng muốn kiểm soát luồng dữ liệu.
Các proxy cục bộ tương thích OpenAI khác
MLX (mlx_lm.server), vLLM, SGLang, LiteLLM, OAI-proxy hoặc gateway tùy chỉnh hoạt động nếu chúng cung cấp endpoint /v1/chat/completions kiểu OpenAI. Dùng bộ chuyển đổi Chat Completions trừ khi backend ghi rõ có hỗ trợ /v1/responses. Thay khối provider ở trên bằng endpoint và ID mô hình của bạn:
api bị bỏ qua trên provider tùy chỉnh có baseUrl, OpenClaw mặc định dùng openai-completions. Các endpoint loopback như 127.0.0.1 được tự động tin cậy; các endpoint LAN, tailnet và DNS riêng vẫn cần request.allowPrivateNetwork: true.
Giá trị models.providers.<id>.models[].id là cục bộ theo provider. Không bao gồm tiền tố provider ở đó. Ví dụ, một máy chủ MLX khởi động bằng mlx_lm.server --model mlx-community/Qwen3-30B-A3B-6bit nên dùng ID catalog và ref mô hình này:
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"] trên các mô hình vision cục bộ hoặc qua proxy để tệp đính kèm hình ảnh được chèn vào lượt agent. Onboarding provider tùy chỉnh tương tác sẽ suy luận các ID mô hình vision phổ biến và chỉ hỏi với tên chưa biết. Onboarding không tương tác dùng cùng suy luận đó; dùng --custom-image-input cho ID vision chưa biết hoặc --custom-text-input khi một mô hình trông như đã biết chỉ hỗ trợ văn bản phía sau endpoint của bạn.
Giữ models.mode: "merge" để các mô hình hosted vẫn khả dụng làm phương án dự phòng. Dùng models.providers.<id>.timeoutSeconds cho máy chủ mô hình cục bộ hoặc từ xa chậm trước khi tăng agents.defaults.timeoutSeconds. Timeout của provider chỉ áp dụng cho các yêu cầu HTTP mô hình, bao gồm kết nối, header, streaming body và toàn bộ abort được guarded-fetch bảo vệ.
Với provider tùy chỉnh tương thích OpenAI, việc lưu một marker cục bộ không bí mật như
apiKey: "ollama-local" được chấp nhận khi baseUrl phân giải tới loopback, LAN riêng, .local hoặc hostname trần. OpenClaw xem đó là thông tin xác thực cục bộ hợp lệ thay vì báo thiếu khóa. Dùng giá trị thật cho bất kỳ provider nào chấp nhận hostname công khai./v1 cục bộ/qua proxy:
- OpenClaw xem các route này là route tương thích OpenAI kiểu proxy, không phải endpoint OpenAI gốc
- định dạng yêu cầu chỉ dành cho OpenAI gốc không áp dụng ở đây: không có
service_tier, không có Responsesstore, không có định dạng payload tương thích reasoning của OpenAI, và không có gợi ý prompt-cache - các header ghi nhận OpenClaw ẩn (
originator,version,User-Agent) không được chèn vào các URL proxy tùy chỉnh này
-
Một số máy chủ chỉ chấp nhận
messages[].contentdạng chuỗi trên Chat Completions, không chấp nhận mảng content-part có cấu trúc. Đặtmodels.providers.<provider>.models[].compat.requiresStringContent: truecho các endpoint đó. -
Một số mô hình cục bộ phát ra yêu cầu công cụ độc lập trong ngoặc vuông dưới dạng văn bản, chẳng hạn
[tool_name]theo sau là JSON và[END_TOOL_REQUEST]. OpenClaw chỉ nâng cấp chúng thành lệnh gọi công cụ thật khi tên khớp chính xác với một công cụ đã đăng ký cho lượt đó; nếu không, khối này được xem là văn bản không được hỗ trợ và bị ẩn khỏi phản hồi người dùng nhìn thấy. - Nếu một mô hình phát ra JSON, XML hoặc văn bản kiểu ReAct trông giống lệnh gọi công cụ nhưng provider không phát ra invocation có cấu trúc, OpenClaw giữ nguyên nó dưới dạng văn bản và ghi cảnh báo kèm run id, provider/model, mẫu đã phát hiện, và tên công cụ khi có. Hãy xem đó là không tương thích tool-call của provider/model, không phải một lần chạy công cụ đã hoàn tất.
-
Nếu công cụ xuất hiện dưới dạng văn bản assistant thay vì chạy, ví dụ JSON thô, XML, cú pháp ReAct hoặc một mảng
tool_callsrỗng trong phản hồi provider, trước tiên hãy xác minh máy chủ đang dùng chat template/parser có khả năng tool-call. Với backend Chat Completions tương thích OpenAI có parser chỉ hoạt động khi tool use bị bắt buộc, hãy đặt override yêu cầu theo từng mô hình thay vì dựa vào phân tích văn bản:Chỉ dùng cấu hình này cho các mô hình/phiên mà mọi lượt bình thường đều nên gọi công cụ. Nó ghi đè giá trị proxy mặc định của OpenClaw làtool_choice: "auto". Thaylocal/my-local-modelbằng ref provider/model chính xác hiển thị bởiopenclaw models list. -
Nếu một mô hình tùy chỉnh tương thích OpenAI chấp nhận các mức effort reasoning OpenAI ngoài hồ sơ dựng sẵn, hãy khai báo chúng trên khối compat của mô hình. Thêm
"xhigh"ở đây sẽ khiến/think xhigh, bộ chọn phiên, xác thực Gateway và xác thựcllm-taskhiển thị mức này cho ref provider/model đã cấu hình đó: -
Một số backend cục bộ nhỏ hơn hoặc nghiêm ngặt hơn không ổn định với hình dạng prompt agent-runtime đầy đủ của OpenClaw, đặc biệt khi có kèm schema công cụ. Trước tiên hãy xác minh đường dẫn provider bằng probe cục bộ gọn nhẹ:
Để xác minh route Gateway mà không dùng hình dạng prompt agent đầy đủ, hãy dùng probe mô hình Gateway thay vào đó:Cả probe mô hình cục bộ và Gateway đều chỉ gửi prompt được cung cấp. Probe Gateway vẫn xác thực định tuyến Gateway, auth và lựa chọn provider, nhưng nó cố ý bỏ qua transcript phiên trước đó, ngữ cảnh AGENTS/bootstrap, lắp ráp context-engine, công cụ và các máy chủ MCP đi kèm. Nếu thao tác đó thành công nhưng các lượt tác tử OpenClaw bình thường thất bại, trước tiên hãy thử
agents.defaults.experimental.localModelLean: trueđể loại bỏ các công cụ mặc định nặng nhưbrowser,cronvàmessage; đây là một cờ thử nghiệm, không phải thiết lập chế độ mặc định ổn định. Xem Tính năng thử nghiệm. Nếu vẫn thất bại, hãy thửmodels.providers.<provider>.models[].compat.supportsTools: false. - Nếu phần phụ trợ vẫn chỉ thất bại trên các lượt chạy OpenClaw lớn hơn, vấn đề còn lại thường là dung lượng mô hình/máy chủ thượng nguồn hoặc lỗi phần phụ trợ, không phải lớp vận chuyển của OpenClaw.
Khắc phục sự cố
- Gateway có thể truy cập proxy không?
curl http://127.0.0.1:1234/v1/models. - Mô hình LM Studio đã bị dỡ tải? Tải lại; khởi động nguội là một nguyên nhân “treo” phổ biến.
- Máy chủ cục bộ báo
terminated,ECONNRESET, hoặc đóng luồng giữa lượt? OpenClaw ghi lạimodel.call.error.failureKindcó số lượng giá trị thấp cùng với ảnh chụp RSS/heap của tiến trình OpenClaw trong chẩn đoán. Đối với áp lực bộ nhớ của LM Studio/Ollama, đối chiếu dấu thời gian đó với nhật ký máy chủ hoặc nhật ký sự cố / jetsam của macOS để xác nhận máy chủ mô hình có bị kết thúc hay không. - OpenClaw cảnh báo khi cửa sổ ngữ cảnh được phát hiện thấp hơn 32k và chặn khi thấp hơn 16k. Nếu gặp kiểm tra trước đó, hãy tăng giới hạn ngữ cảnh của máy chủ/mô hình hoặc chọn một mô hình lớn hơn.
- Lỗi ngữ cảnh? Giảm
contextWindowhoặc tăng giới hạn máy chủ của bạn. - Máy chủ tương thích OpenAI trả về
messages[].content ... expected a string? Thêmcompat.requiresStringContent: truevào mục mô hình đó. - Các lệnh gọi
/v1/chat/completionsrất nhỏ chạy trực tiếp thì hoạt động, nhưngopenclaw infer model run --localthất bại trên Gemma hoặc một mô hình cục bộ khác? Trước tiên hãy kiểm tra URL nhà cung cấp, tham chiếu mô hình, dấu hiệu xác thực và nhật ký máy chủ;model runcục bộ không bao gồm công cụ của tác tử. Nếumodel runcục bộ thành công nhưng các lượt tác tử lớn hơn thất bại, hãy giảm bề mặt công cụ của tác tử bằnglocalModelLeanhoặccompat.supportsTools: false. - Lệnh gọi công cụ hiển thị dưới dạng văn bản JSON/XML/ReAct thô, hoặc nhà cung cấp trả về một
mảng
tool_callsrỗng? Không thêm proxy chuyển đổi mù quáng văn bản của trợ lý thành thực thi công cụ. Trước tiên hãy sửa mẫu/phân tích cú pháp trò chuyện của máy chủ. Nếu mô hình chỉ hoạt động khi việc dùng công cụ bị ép buộc, hãy thêm ghi đè theo từng mô hìnhparams.extra_body.tool_choice: "required"ở trên và chỉ dùng mục mô hình đó cho các phiên mà lệnh gọi công cụ được kỳ vọng ở mọi lượt. - An toàn: mô hình cục bộ bỏ qua bộ lọc phía nhà cung cấp; giữ phạm vi tác tử hẹp và bật compaction để hạn chế phạm vi tác động của chèn prompt.