diff --git a/docs/zh-CN/gateway/local-models.md b/docs/zh-CN/gateway/local-models.md index a69da14e2..fc7eabd28 100644 --- a/docs/zh-CN/gateway/local-models.md +++ b/docs/zh-CN/gateway/local-models.md @@ -1,26 +1,26 @@ --- read_when: - - 你想从你自己的 GPU 机器提供模型服务 - - 你正在配置 LM Studio 或兼容 OpenAI 的代理 + - 你想从你自己的 GPU 主机提供模型服务 + - 你正在连接 LM Studio 或兼容 OpenAI 的代理 - 你需要最安全的本地模型使用指南 summary: 在本地 LLM 上运行 OpenClaw(LM Studio、vLLM、LiteLLM、自定义 OpenAI 端点) title: 本地模型 x-i18n: - generated_at: "2026-04-27T08:00:04Z" + generated_at: "2026-04-27T08:18:16Z" model: gpt-5.4 provider: openai - source_hash: 4a42076e542448018eaf8633c18dfd290c822be502d78a135d03d138e9713668 + source_hash: d6d44f451e14e74f49b8fb23c7c890c8a13a76c56ef82e5d271cfbb7d90f7c81 source_path: gateway/local-models.md workflow: 15 --- -本地部署是可行的,但 OpenClaw 需要大上下文窗口,并且要对提示注入有较强防御。小显卡会截断上下文,并削弱安全性。尽量提高配置:**至少 2 台满配 Mac Studio 或同等级 GPU 设备(约 3 万美元以上)**。单张 **24 GB** GPU 仅适用于较轻量的提示,且延迟更高。请使用**你能运行的最大 / 完整尺寸模型变体**;激进量化或“small”检查点会提高提示注入风险(参见 [Security](/zh-CN/gateway/security))。 +本地部署是可行的,但 OpenClaw 需要大上下文窗口 + 强大的提示注入防御能力。小显卡会截断上下文并削弱安全性。建议尽量提高配置:**≥2 台满配 Mac Studio 或同等级 GPU 主机(约 3 万美元以上)**。单张 **24 GB** GPU 只适合较轻量的提示,且延迟更高。请使用**你能运行的最大 / 完整尺寸模型变体**;激进量化或“small”检查点会提高提示注入风险(参见 [Security](/zh-CN/gateway/security))。 -如果你想要摩擦最小的本地部署方式,先从 [LM Studio](/zh-CN/providers/lmstudio) 或 [Ollama](/zh-CN/providers/ollama) 和 `openclaw onboard` 开始。本页是面向更高端本地方案和自定义兼容 OpenAI 的本地服务器的带有明确倾向性的指南。 +如果你想要最低摩擦的本地部署方式,请从 [LM Studio](/zh-CN/providers/lmstudio) 或 [Ollama](/zh-CN/providers/ollama) 开始,并运行 `openclaw onboard`。本页是面向更高端本地技术栈和自定义兼容 OpenAI 的本地服务器的主观推荐指南。 ## 推荐:LM Studio + 大型本地模型(Responses API) -这是当前最佳的本地方案。在 LM Studio 中加载一个大型模型(例如完整尺寸的 Qwen、DeepSeek 或 Llama 构建),启用本地服务器(默认 `http://127.0.0.1:1234`),并使用 Responses API 以将推理过程与最终文本分离。 +这是当前最好的本地技术栈。在 LM Studio 中加载一个大型模型(例如完整尺寸的 Qwen、DeepSeek 或 Llama 构建),启用本地服务器(默认 `http://127.0.0.1:1234`),并使用 Responses API 将推理内容与最终文本分离。 ```json5 { @@ -57,18 +57,18 @@ x-i18n: } ``` -**设置检查清单** +**设置清单** - 安装 LM Studio:[https://lmstudio.ai](https://lmstudio.ai) -- 在 LM Studio 中,下载**可用的最大模型构建**(避免使用 “small”/重度量化变体),启动服务器,并确认 `http://127.0.0.1:1234/v1/models` 能列出该模型。 +- 在 LM Studio 中,下载**可用的最大模型构建**(避免 “small”/重度量化变体),启动服务器,并确认 `http://127.0.0.1:1234/v1/models` 能列出该模型。 - 将 `my-local-model` 替换为 LM Studio 中显示的实际模型 ID。 -- 保持模型处于已加载状态;冷加载会增加启动延迟。 +- 保持模型已加载;冷加载会增加启动延迟。 - 如果你的 LM Studio 构建不同,请调整 `contextWindow`/`maxTokens`。 - 对于 WhatsApp,请坚持使用 Responses API,这样只会发送最终文本。 -即使在本地运行,也请保留已配置的托管模型;使用 `models.mode: "merge"` 以便回退模型仍然可用。 +即使在运行本地模型时,也请保留托管模型配置;使用 `models.mode: "merge"`,这样回退模型仍然可用。 -### 混合配置:托管模型为主,本地模型为回退 +### 混合配置:托管模型作为主模型,本地模型作为回退 ```json5 { @@ -109,18 +109,18 @@ x-i18n: } ``` -### 本地优先,并保留托管安全兜底 +### 本地优先,同时保留托管安全网 -交换主模型与回退模型的顺序;保留相同的 provider 配置块和 `models.mode: "merge"`,这样当本地设备宕机时,你仍可回退到 Sonnet 或 Opus。 +交换主模型与回退模型的顺序;保留相同的 provider 配置块和 `models.mode: "merge"`,这样当本地主机不可用时,你仍然可以回退到 Sonnet 或 Opus。 ### 区域托管 / 数据路由 -- 托管的 MiniMax/Kimi/GLM 变体在 OpenRouter 上也可用,并提供区域固定端点(例如托管于美国)。你可以在那里选择区域变体,以便在所选司法辖区内保留流量,同时仍然使用 `models.mode: "merge"` 为 Anthropic/OpenAI 回退保留支持。 -- 纯本地仍然是隐私性最强的路径;当你需要提供商功能但又希望控制数据流向时,托管的区域路由是折中方案。 +- 托管的 MiniMax/Kimi/GLM 变体也可通过 OpenRouter 的区域固定端点提供(例如美国托管)。你可以在那里选择区域变体,将流量限制在你指定的司法辖区内,同时仍然使用 `models.mode: "merge"` 来保留 Anthropic/OpenAI 回退。 +- 纯本地仍然是隐私最强的方案;当你需要提供商功能但又希望控制数据流向时,区域托管路由是折中方案。 ## 其他兼容 OpenAI 的本地代理 -vLLM、LiteLLM、OAI-proxy 或自定义 Gateway 网关 只要暴露出兼容 OpenAI 风格的 `/v1` 端点即可使用。将上面的 provider 配置块替换为你的端点和模型 ID: +如果 vLLM、LiteLLM、OAI-proxy 或自定义网关暴露的是 OpenAI 风格的 `/v1` 端点,它们都可以工作。将上面的 provider 配置块替换为你的端点和模型 ID: ```json5 { @@ -149,34 +149,35 @@ vLLM、LiteLLM、OAI-proxy 或自定义 Gateway 网关 只要暴露出兼容 Ope } ``` -请保留 `models.mode: "merge"`,这样托管模型仍可作为回退使用。 -对于较慢的本地或远程模型服务器,请使用 `models.providers..timeoutSeconds`,再考虑提高 `agents.defaults.timeoutSeconds`。provider 超时仅适用于模型 HTTP 请求,包括连接、响应头、正文流式传输,以及整个受保护抓取的中止超时。 +保留 `models.mode: "merge"`,这样托管模型仍可作为回退使用。 +对于较慢的本地或远程模型服务器,请优先使用 `models.providers..timeoutSeconds`,再考虑提高 `agents.defaults.timeoutSeconds`。provider 超时仅适用于模型 HTTP 请求,包括连接、响应头、body 流式传输,以及整个受保护获取流程的中止控制。 关于本地 / 代理 `/v1` 后端的行为说明: -- OpenClaw 会将这些视为代理风格的兼容 OpenAI 路由,而不是原生 OpenAI 端点 +- OpenClaw 将这些视为代理风格的兼容 OpenAI 路由,而不是原生 OpenAI 端点 - 仅适用于原生 OpenAI 的请求整形不会在这里生效:没有 `service_tier`,没有 Responses `store`,没有 OpenAI 推理兼容负载整形,也没有提示缓存提示 - 隐藏的 OpenClaw 归因请求头(`originator`、`version`、`User-Agent`)不会注入到这些自定义代理 URL 中 -针对更严格的兼容 OpenAI 后端的兼容性说明: +对更严格的兼容 OpenAI 后端的兼容性说明: -- 某些服务器在 Chat Completions 中只接受字符串形式的 `messages[].content`,不接受结构化的内容片段数组。对于这些端点,请设置 `models.providers..models[].compat.requiresStringContent: true`。 -- 某些本地模型会以文本形式输出独立的方括号工具请求,例如 `[tool_name]`,后跟 JSON,再跟 `[END_TOOL_REQUEST]`。只有当该名称与当前轮次已注册工具完全匹配时,OpenClaw 才会将其提升为真实工具调用;否则该块会被视为不受支持的文本,并从面向用户的回复中隐藏。 -- 某些较小或更严格的本地后端在面对 OpenClaw 完整的智能体运行时提示结构时不稳定,尤其是在包含工具 schema 时。如果该后端可以处理极小的直接 `/v1/chat/completions` 调用,但在正常的 OpenClaw 智能体轮次中失败,请先尝试设置 `agents.defaults.experimental.localModelLean: true`,以移除像 `browser`、`cron` 和 `message` 这类重量级默认工具;这是一个实验性标志,不是稳定的默认模式设置。参见 [Experimental Features](/zh-CN/concepts/experimental-features)。如果这样仍然失败,再尝试 `models.providers..models[].compat.supportsTools: false`。 -- 如果后端仅在较大的 OpenClaw 运行中仍然失败,剩余问题通常是上游模型/服务器容量限制或后端 bug,而不是 OpenClaw 的传输层问题。 +- 某些服务器在 Chat Completions 中只接受字符串类型的 `messages[].content`,不接受结构化的内容片段数组。对于这些端点,请设置 `models.providers..models[].compat.requiresStringContent: true`。 +- 某些本地模型会以文本形式输出独立的方括号工具请求,例如 `[tool_name]`,后接 JSON 和 `[END_TOOL_REQUEST]`。只有当该名称与当前轮次已注册工具完全匹配时,OpenClaw 才会将其提升为真正的工具调用;否则,该块会被视为不受支持的文本,并从用户可见回复中隐藏。 +- 如果某个模型输出看起来像工具调用的 JSON、XML 或 ReAct 风格文本,但 provider 并未输出结构化调用,OpenClaw 会将其保留为文本,并记录一条警告日志,其中包含运行 ID、provider/模型、检测到的模式,以及可用时的工具名称。应将这视为 provider/模型的工具调用不兼容问题,而不是工具已成功运行。 +- 某些更小型或更严格的本地后端在处理 OpenClaw 完整的智能体运行时提示形状时并不稳定,尤其是在包含工具 schema 时。如果后端能够处理很小的直接 `/v1/chat/completions` 调用,但在正常的 OpenClaw 智能体轮次中失败,请先尝试设置 `agents.defaults.experimental.localModelLean: true`,以移除像 `browser`、`cron` 和 `message` 这样的重量级默认工具;这是一个实验性标志,不是稳定的默认模式设置。参见 [Experimental Features](/zh-CN/concepts/experimental-features)。如果这样仍然失败,再尝试 `models.providers..models[].compat.supportsTools: false`。 +- 如果后端仍然只在更大的 OpenClaw 运行中失败,剩余问题通常是上游模型/服务器容量不足或后端 bug,而不是 OpenClaw 的传输层问题。 ## 故障排除 -- Gateway 网关 能连到代理吗?`curl http://127.0.0.1:1234/v1/models` -- LM Studio 模型已卸载?重新加载;冷启动是常见的“卡住”原因。 -- 当检测到的上下文窗口低于 **32k** 时,OpenClaw 会发出警告;低于 **16k** 时会阻止运行。如果你遇到这个预检,请提高服务器/模型的上下文限制,或选择更大的模型。 -- 出现上下文错误?降低 `contextWindow` 或提高你的服务器限制。 +- Gateway 网关能访问代理吗?`curl http://127.0.0.1:1234/v1/models` +- LM Studio 模型未加载?重新加载;冷启动是常见的“卡住”原因。 +- 当检测到的上下文窗口低于 **32k** 时,OpenClaw 会发出警告;低于 **16k** 时会阻止运行。如果你触发了该预检,请提高服务器/模型的上下文限制,或选择更大的模型。 +- 上下文错误?降低 `contextWindow` 或提高你的服务器限制。 - 兼容 OpenAI 的服务器返回 `messages[].content ... expected a string`? - 在该模型条目中添加 `compat.requiresStringContent: true`。 -- 直接的小型 `/v1/chat/completions` 调用可以工作,但 `openclaw infer model run` + 在该模型条目上添加 `compat.requiresStringContent: true`。 +- 直接的小型 `/v1/chat/completions` 调用可用,但 `openclaw infer model run` 在 Gemma 或其他本地模型上失败?先用 - `compat.supportsTools: false` 禁用工具 schema,然后重新测试。如果服务器仍然只在更大的 OpenClaw 提示下崩溃,请将其视为上游服务器/模型限制。 -- 安全性:本地模型会跳过提供商侧过滤;请让智能体范围保持狭窄,并开启压缩,以限制提示注入的影响半径。 + `compat.supportsTools: false` 禁用工具 schema,然后重新测试。如果服务器仍然只在更大的 OpenClaw 提示上崩溃,应将其视为上游服务器/模型的限制。 +- 安全性:本地模型会跳过提供商侧过滤;请保持智能体范围收窄并启用压缩,以限制提示注入的影响范围。 ## 相关内容