chore(i18n): refresh zh-CN translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-27 22:08:19 +00:00
parent 90e40ee77c
commit fbb5e1815e
3 changed files with 284 additions and 226 deletions

View File

@ -2,36 +2,36 @@
read_when:
- 添加或修改 `openclaw infer` 命令
- 设计稳定的无头能力自动化
summary: 面向提供商支持的模型、图像、音频、TTS、视频、Web 和嵌入工作流的推理优先 CLI
summary: 面向提供商支持的模型、图像、音频、TTS、视频、网页和嵌入工作流的 infer-first CLI
title: 推理 CLI
x-i18n:
generated_at: "2026-04-26T03:26:37Z"
generated_at: "2026-04-27T22:06:15Z"
model: gpt-5.4
provider: openai
source_hash: bf07b306d80535b58d811aa33c0bbe2ecac57b22c3ab27f6f2ae6518ceb21e49
source_hash: 704f9ea60adb1b509f0b4f74ae79ffb70f12915a7e8a45d43ca28f5ac7d70af1
source_path: cli/infer.md
workflow: 15
---
`openclaw infer`面向由提供商支持的推理工作流的规范无头入口。
`openclaw infer` 是提供商支持的推理工作流的规范无头入口。
它有意公开的是能力族,而不是原始 Gateway 网关 RPC 名称,也不是原始智能体工具 id。
它有意暴露的是能力家族,而不是原始的 Gateway 网关 RPC 名称,也不是原始的智能体工具 id。
## 将 infer 变成一个 Skills
把这段内容复制粘贴给一个智能体:
下面这段内容复制粘贴给一个智能体:
```text
Read https://docs.openclaw.ai/cli/infer, then create a skill that routes my common workflows to `openclaw infer`.
Focus on model runs, image generation, video generation, audio transcription, TTS, web search, and embeddings.
```
一个优秀的基于 infer 的 Skills 应该:
一个基于 infer 的优秀 Skills 应该:
- 将常见用户意图映射到正确的 infer 子命令
- 包含其所覆盖工作流的几个规范 infer 示例
- 包含其所覆盖工作流的一些规范 infer 示例
- 在示例和建议中优先使用 `openclaw infer ...`
- 避免在 Skills 正文中重新记录整个 infer 功能面
- 避免在 Skills 正文中重新记录完整的 infer 功能面
典型的 infer 导向 Skills 覆盖范围:
@ -44,17 +44,17 @@ Focus on model runs, image generation, video generation, audio transcription, TT
## 为什么使用 infer
`openclaw infer` 为 OpenClaw 由提供商支持的推理任务提供了一个统一的 CLI。
`openclaw infer` 为 OpenClaw 由提供商支持的推理任务提供了一个统一的 CLI。
优势:
- 使用已在 OpenClaw 中配置的提供商和模型,而不是为每个后端单独接入一次性包装器。
- 将模型、图像、音频转录、TTS、视频、Web 和嵌入工作流统一放在同一棵命令树下。
- 为脚本、自动化和智能体驱动的工作流提供稳定的 `--json` 输出结构。
- 使用 OpenClaw 中配置的提供商和模型,而不是为每个后端单独接入一次性包装器。
- 将模型、图像、音频转录、TTS、视频、网页和嵌入工作流统一放在同一棵命令树下。
- 为脚本、自动化和智能体驱动的工作流使用稳定的 `--json` 输出结构。
- 当任务本质上是“运行推理”时,优先使用 OpenClaw 的第一方入口。
- 对大多数 infer 命令,使用常规本地路径而不需要运行 Gateway 网关。
- 对大多数 infer 命令,使用常规本地路径而无需运行 Gateway 网关。
对于端到端提供商检查,在底层提供商测试通过后,优先使用 `openclaw infer ...`。它会在发起提供商请求之前,覆盖已发布的 CLI、配置加载、默认智能体解析、内置插件激活、运行时依赖修复以及共享能力运行时。
对于端到端提供商检查,在较低层提供商测试已通过后,优先使用 `openclaw infer ...`。它会在发起提供商请求之前,覆盖已发布的 CLI、配置加载、默认智能体解析、内置插件激活、运行时依赖修复以及共享能力运行时。
## 命令树
@ -114,31 +114,32 @@ Focus on model runs, image generation, video generation, audio transcription, TT
| 任务 | 命令 | 说明 |
| ----------------------- | ---------------------------------------------------------------------- | ----------------------------------------------------- |
| 运行文本/模型提示词 | `openclaw infer model run --prompt "..." --json` | 默认使用常规本地路径 |
| 生成图像 | `openclaw infer image generate --prompt "..." --json` | 从现有文件开始时使用 `image edit` |
| 生成图像 | `openclaw infer image generate --prompt "..." --json` | 如果从现有文件开始,使用 `image edit` |
| 描述图像文件 | `openclaw infer image describe --file ./image.png --json` | `--model` 必须是支持图像的 `<provider/model>` |
| 转录音频 | `openclaw infer audio transcribe --file ./memo.m4a --json` | `--model` 必须是 `<provider/model>` |
| 合成语音 | `openclaw infer tts convert --text "..." --output ./speech.mp3 --json` | `tts status` 面向 Gateway 网关 |
| 生成视频 | `openclaw infer video generate --prompt "..." --json` | 支持如 `--resolution` 之类的提供商提示参数 |
| 生成视频 | `openclaw infer video generate --prompt "..." --json` | 支持`--resolution` 之类的提供商提示参数 |
| 描述视频文件 | `openclaw infer video describe --file ./clip.mp4 --json` | `--model` 必须是 `<provider/model>` |
| 搜索 Web | `openclaw infer web search --query "..." --json` | |
| 搜索网页 | `openclaw infer web search --query "..." --json` | |
| 抓取网页 | `openclaw infer web fetch --url https://example.com --json` | |
| 创建嵌入 | `openclaw infer embedding create --text "..." --json` | |
## 行为
- `openclaw infer ...` 是这些工作流的主要 CLI 入口。
- 当输出会被其他命令或脚本消费时,使用 `--json`
- 当输出将被另一个命令或脚本消费时,使用 `--json`
- 当需要特定后端时,使用 `--provider``--model provider/model`
- 对于 `image describe`、`audio transcribe` 和 `video describe``--model` 必须使用 `<provider/model>` 形式。
- 对于 `image describe`,显式传入 `--model` 会直接运行该提供商/模型。该模型必须在模型目录或提供商配置中具备图像能力。`codex/<model>` 会运行一次受限的 Codex app-server 图像理解轮次;`openai-codex/<model>` 则使用 OpenAI Codex OAuth 提供商路径。
- 对于 `image describe`,显式传入 `--model` 会直接运行该提供商/模型。该模型必须在模型目录或提供商配置中具备图像能力。`codex/<model>` 会运行一次受限的 Codex app-server 图像理解回合;`openai-codex/<model>` 使用 OpenAI Codex OAuth provider 路径。
- 无状态执行命令默认走本地。
- 由 Gateway 网关管理状态的命令默认走 gateway。
- 常规本地路径不要求 Gateway 网关处于运行状态。
- `model run` 是一次性执行。通过该命令的智能体运行时打开的 MCP 服务器,在本地和 `--gateway` 执行模式下都会在回复完成后被回收,因此重复的脚本调用不会让 stdio MCP 子进程持续存活。
- 由 Gateway 网关管理状态的命令默认走 Gateway 网关。
- 常规本地路径不要求 Gateway 网关正在运行。
- 本地 `model run` 是精简的一次性提供商补全。它会解析已配置的智能体模型和凭证,但不会启动聊天智能体回合、加载工具,也不会打开内置 MCP 服务器。
- `model run --gateway` 仍然使用 Gateway 网关智能体运行时,因此它可以覆盖与普通 Gateway 网关支持回合同样的路由运行时路径。通过该运行时打开的 MCP 服务器会在回复后被回收,因此重复的脚本调用不会让 stdio MCP 子进程持续存活。
## Model
## 模型
由提供商支持的文本推理,以及模型/提供商检查,使用 `model`
使用 `model` 执行由提供商支持的文本推理,以及模型/提供商检查。
```bash
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
@ -147,15 +148,26 @@ openclaw infer model providers --json
openclaw infer model inspect --name gpt-5.5 --json
```
使用完整的 `<provider/model>` 引用来对特定提供商进行冒烟测试,而无需启动 Gateway 网关或加载完整的智能体工具面:
```bash
openclaw infer model run --local --model anthropic/claude-sonnet-4-6 --prompt "Reply with exactly: pong" --json
openclaw infer model run --local --model cerebras/zai-glm-4.7 --prompt "Reply with exactly: pong" --json
openclaw infer model run --local --model google/gemini-2.5-flash --prompt "Reply with exactly: pong" --json
openclaw infer model run --local --model groq/llama-3.1-8b-instant --prompt "Reply with exactly: pong" --json
openclaw infer model run --local --model mistral/mistral-small-latest --prompt "Reply with exactly: pong" --json
openclaw infer model run --local --model openai/gpt-4.1 --prompt "Reply with exactly: pong" --json
```
说明:
- `model run` 会复用智能体运行时,因此提供商/模型覆盖的行为与常规智能体执行一致。
- 因为 `model run` 面向无头自动化,所以命令结束后不会保留该次会话的内置 MCP 运行时。
- `model auth login`、`model auth logout` 和 `model auth status` 用于管理已保存的提供商认证状态。
- 本地 `model run` 是最窄的 CLI 冒烟检查方式,可用于验证提供商/模型/凭证健康状态,因为它只会把提供的提示词发送给所选模型
- 当你需要测试 Gateway 网关路由、智能体运行时设置或 Gateway 网关管理的提供商状态,而不是精简的本地补全路径时,使用 `model run --gateway`
- `model auth login`、`model auth logout` 和 `model auth status` 用于管理已保存的提供商证状态。
## Image
## 图像
对生成、编辑和描述图像,使用 `image`
使用 `image` 执行生成、编辑和描述
```bash
openclaw infer image generate --prompt "friendly lobster illustration" --json
@ -172,10 +184,10 @@ openclaw infer image describe --file ./photo.jpg --model ollama/qwen2.5vl:7b --j
说明:
- 从现有输入文件开始时,使用 `image edit`
- 对于支持参考图像编辑时提供几何提示的提供商/模型,`image edit` 中使用 `--size`、`--aspect-ratio` 或 `--resolution`
- 对于带透明背景的 OpenAI PNG 输出,使用 `--model openai/gpt-image-1.5` 配合 `--output-format png --background transparent``--openai-background` 仍可作为 OpenAI 专用别名使用。未声明支持背景控制的提供商会将该提示报告为被忽略的覆盖项。
- 使用 `image providers --json` 可验证哪些内置图像提供商可被发现、已配置、已选中,以及每个提供商公开了哪些生成/编辑能力。
- 使用 `image generate --model <provider/model> --json` 作为图像生成变更的最小化在线 CLI 冒烟检查。例:
- 对于支持参考图像编辑几何提示的提供商/模型,在 `image edit` 中使用 `--size`、`--aspect-ratio` 或 `--resolution`
- 对于透明背景的 OpenAI PNG 输出,结合 `--model openai/gpt-image-1.5` 使用 `--output-format png --background transparent``--openai-background` 仍可作为 OpenAI 专用别名使用。未声明支持背景参数的提供商会将该提示报告为已忽略的覆盖项。
- 使用 `image providers --json` 来验证哪些内置图像提供商可被发现、已配置、已选中,以及每个提供商暴露了哪些生成/编辑能力。
- 使用 `image generate --model <provider/model> --json` 作为图像生成变更最窄的在线 CLI 冒烟检查。例
```bash
openclaw infer image providers --json
@ -186,14 +198,14 @@ openclaw infer image describe --file ./photo.jpg --model ollama/qwen2.5vl:7b --j
--json
```
JSON 响应会报告 `ok`、`provider`、`model`、`attempts` 和已写入的输出路径。设置 `--output` 时,最终扩展名可能会跟随提供商返回的 MIME type
JSON 响应会报告 `ok`、`provider`、`model`、`attempts` 以及写出的输出路径。设置 `--output` 时,最终扩展名可能会遵循提供商返回的 MIME 类型
- 对于 `image describe``--model` 必须是支持图像的 `<provider/model>`
- 对于本地 Ollama 视觉模型,先拉取模型,并将 `OLLAMA_API_KEY` 设为任意占位值,例如 `ollama-local`。参见 [Ollama](/zh-CN/providers/ollama#vision-and-image-description)。
- 对于本地 Ollama 视觉模型,先拉取模型,并将 `OLLAMA_API_KEY` 设为任意占位值,例如 `ollama-local`。参见 [Ollama](/zh-CN/providers/ollama#vision-and-image-description)。
## Audio
## 音频
对文件转录,使用 `audio`
使用 `audio` 执行文件转录
```bash
openclaw infer audio transcribe --file ./memo.m4a --json
@ -208,7 +220,7 @@ openclaw infer audio transcribe --file ./memo.m4a --model openai/whisper-1 --jso
## TTS
对语音合成和 TTS 提供商状态,使用 `tts`
使用 `tts` 执行语音合成和 TTS 提供商状态管理
```bash
openclaw infer tts convert --text "hello from openclaw" --output ./hello.mp3 --json
@ -219,12 +231,12 @@ openclaw infer tts status --json
说明:
- `tts status` 默认走 gateway,因为它反映的是由 Gateway 网关管理的 TTS 状态。
- `tts status` 默认走 Gateway 网关,因为它反映的是由 Gateway 网关管理的 TTS 状态。
- 使用 `tts providers`、`tts voices` 和 `tts set-provider` 来检查和配置 TTS 行为。
## Video
## 视频
对视频生成和描述,使用 `video`
使用 `video` 执行生成和描述
```bash
openclaw infer video generate --prompt "cinematic sunset over the ocean" --json
@ -235,12 +247,12 @@ openclaw infer video describe --file ./clip.mp4 --model openai/gpt-4.1-mini --js
说明:
- `video generate` 接受 `--size`、`--aspect-ratio`、`--resolution`、`--duration`、`--audio`、`--watermark` 和 `--timeout-ms`,并将转发给视频生成运行时。
- `video generate` 接受 `--size`、`--aspect-ratio`、`--resolution`、`--duration`、`--audio`、`--watermark` 和 `--timeout-ms`,并将它们转发给视频生成运行时。
- 对于 `video describe``--model` 必须是 `<provider/model>`
## Web
## 网页
对搜索和抓取工作流,使用 `web`
使用 `web` 执行搜索和抓取工作流
```bash
openclaw infer web search --query "OpenClaw docs" --json
@ -253,9 +265,9 @@ openclaw infer web providers --json
- 使用 `web providers` 来检查可用、已配置和已选中的提供商。
## Embedding
## 嵌入
对向量创建和嵌入提供商检查,使用 `embedding`
使用 `embedding` 进行向量创建和嵌入提供商检查
```bash
openclaw infer embedding create --text "friendly lobster" --json
@ -265,7 +277,7 @@ openclaw infer embedding providers --json
## JSON 输出
Infer 命令会在统一封装下标准化 JSON 输出:
Infer 命令会在共享封装下规范化 JSON 输出:
```json
{
@ -290,7 +302,7 @@ Infer 命令会在统一封装下标准化 JSON 输出:
- `outputs`
- `error`
对于生成媒体的命令,`outputs` 包含由 OpenClaw 写入的文件。对于自动化,请使用该数组中的 `path`、`mimeType`、`size` 以及任何媒体特定尺寸信息,而不是解析人类可读的 stdout。
对于生成媒体的命令,`outputs` 包含由 OpenClaw 写入的文件。对于自动化,请使用该数组中的 `path`、`mimeType`、`size` 以及任何媒体特定的尺寸信息,而不要解析面向人类可读的 stdout。
## 常见陷阱

View File

@ -1,30 +1,30 @@
---
read_when:
- 你想从自己的 GPU 机提供模型服务
- 你想从自己的 GPU 机提供模型服务
- 你正在接入 LM Studio 或兼容 OpenAI 的代理
- 你需要最安全的本地模型使用指南
summary: 在本地 LLM 上运行 OpenClawLM Studio、vLLM、LiteLLM、自定义 OpenAI 端点)
title: 本地模型
x-i18n:
generated_at: "2026-04-27T12:52:12Z"
generated_at: "2026-04-27T22:06:17Z"
model: gpt-5.4
provider: openai
source_hash: 5b98d2d4b7e6162ca681f5d184ee6e075ea09e5e4b4544e6733c5e6b8ca4cc30
source_hash: a6d16948f66e8ad5b11c82939f711ad7db9edeea565c77b293227612f7ab43b6
source_path: gateway/local-models.md
workflow: 15
---
本地部署是可行的,但 OpenClaw 需要大上下文窗口以及强有力的提示注入防护。小显存卡会截断上下文并削弱安全性。目标应尽量高:**至少 2 台满配 Mac Studio 或同等级 GPU 机器(约 3 万美元以上)**。单张 **24 GB** GPU 只适用于较轻的提示,并且延迟更高。使用**你能运行的最大 / 全尺寸模型变体**;激进量化或“小型”检查点会提高提示注入风险(参见 [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 本地服务器的偏好型指南。
<Warning>
**WSL2 + Ollama + NVIDIA/CUDA 用户:** 官方 Ollama Linux 安装器会启用一个带 `Restart=always` 的 systemd 服务。在 WSL2 GPU 环境中,自动启动可能会在开机时重新加载上一次模型,并锁定宿主机内存。如果你在启用 Ollama 后发现 WSL2 虚拟机反复重启,请参见 [WSL2 crash loop](/zh-CN/providers/ollama#wsl2-crash-loop-repeated-reboots)。
**WSL2 + Ollama + NVIDIA/CUDA 用户:** 官方 Ollama Linux 安装器会启用一个带 `Restart=always` 的 systemd 服务。在 WSL2 GPU 配置中,自动启动可能会在系统启动时重新加载上次使用的模型,并占用宿主机内存。如果你在启用 Ollama 后遇到 WSL2 虚拟机反复重启,请参见 [WSL2 崩溃循环](/zh-CN/providers/ollama#wsl2-crash-loop-repeated-reboots)。
</Warning>
## 推荐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
{
@ -61,18 +61,18 @@ x-i18n:
}
```
**设置清单**
**设置检查清单**
- 安装 LM Studio[https://lmstudio.ai](https://lmstudio.ai)
- 在 LM Studio 中,下载**可用的最大模型构建**(避免使用“小型” / 重度量化变体),启动服务器,并确认 `http://127.0.0.1:1234/v1/models` 中列出了该模型。
- 安装 LM Studio [https://lmstudio.ai](https://lmstudio.ai)
- 在 LM Studio 中,下载**可用的最大模型构建**(避免 “small”/重度量化变体),启动服务器,并确认 `http://127.0.0.1:1234/v1/models` 能列出该模型。
- 将 `my-local-model` 替换为 LM Studio 中显示的实际模型 ID。
- 保持模型处于已加载状态;冷启动加载会增加启动延迟。
- 如果你的 LM Studio 构建不同,请调整 `contextWindow` / `maxTokens`
- 对于 WhatsApp坚持使用 Responses API这样只会发送最终文本。
- 如果你的 LM Studio 构建不同,请调整 `contextWindow`/`maxTokens`。
- 对于 WhatsApp坚持使用 Responses API这样只会发送最终文本。
即使在本地运行,也保留托管模型配置;使用 `models.mode: "merge"`,这样回退模型仍然可用。
即使在本地运行,也建议保留托管模型配置;使用 `models.mode: "merge"`,这样回退模型仍然可用。
### 混合配置:托管模型为主,本地模型为回退
### 混合配置:托管模型,本地回退
```json5
{
@ -115,16 +115,16 @@ x-i18n:
### 本地优先,托管兜底
交换主模型与回退模型的顺序;保留相同的 provider 配置块和 `models.mode: "merge"`,这样当本地机不可用时,你仍可回退到 Sonnet 或 Opus。
交换主模型和回退模型的顺序;保留相同的 providers 块和 `models.mode: "merge"`,这样当本地机不可用时,你仍可回退到 Sonnet 或 Opus。
### 区域托管 / 数据路由
- 托管版的 MiniMax / Kimi / GLM 变体在 OpenRouter 上也有带区域固定端点的版本(例如托管在美国)。你可以在那里选择区域版本,把流量限制在你选定的司法辖区内,同时仍通过 `models.mode: "merge"` 使用 Anthropic / OpenAI 回退
- 纯本地仍然是隐私性最强的方案;当你需要提供商功能但又希望控制数据流向时,区域托管路由是折中方案。
- 托管的 MiniMax/Kimi/GLM 变体也可通过 OpenRouter 获取,并提供区域固定端点(例如托管在美国)。你可以在那边选择区域变体,把流量限制在所选司法辖区内,同时继续使用 `models.mode: "merge"` 以保留 Anthropic/OpenAI 回退能力
- 纯本地仍然是隐私性最强的路径;当你需要提供商功能但又想控制数据流向时,托管的区域路由是折中方案。
## 其他兼容 OpenAI 的本地代理
如果 MLX`mlx_lm.server`、vLLM、SGLang、LiteLLM、OAI-proxy 或自定义 Gateway 网关暴露的是兼容 OpenAI 风格的 `/v1/chat/completions` 端点,就可以使用。除非后端明确记录支持 `/v1/responses`,否则请使用 Chat Completions 适配器。将上面的 provider 配置块替换为你的端点和模型 ID
MLX`mlx_lm.server`、vLLM、SGLang、LiteLLM、OAI-proxy 或自定义 Gateway 网关都可以使用,只要它们暴露兼容 OpenAI 风格的 `/v1/chat/completions` 端点。除非后端明确文档说明支持 `/v1/responses`,否则请使用 Chat Completions 适配器。将上面的 provider 块替换为你的端点和模型 ID
```json5
{
@ -158,31 +158,32 @@ x-i18n:
}
```
如果在带 `baseUrl` 的自定义 provider 上省略 `api`OpenClaw 默认使用 `openai-completions`。像 `127.0.0.1` 这样的 loopback 端点会被自动信任LAN、tailnet 和私有 DNS 端点仍需要设置 `request.allowPrivateNetwork: true`
如果在带`baseUrl` 的自定义提供商上省略 `api`OpenClaw 默认使用 `openai-completions`。像 `127.0.0.1` 这样的 loopback 端点会被自动信任;LAN、tailnet 和私有 DNS 端点仍需要设置 `request.allowPrivateNetwork: true`
`models.providers.<id>.models[].id` 的值是 provider 本地值。不要在其中包含 provider 前缀。例如,用 `mlx_lm.server --model mlx-community/Qwen3-30B-A3B-6bit` 启动的 MLX 服务器应使用以下目录 ID 和模型引用:
`models.providers.<id>.models[].id` 的值是提供商本地值。不要在这里包含提供商前缀。例如,使用 `mlx_lm.server --model mlx-community/Qwen3-30B-A3B-6bit` 启动的 MLX 服务器,应使用以下 catalog id 和模型引用:
- `models.providers.mlx.models[].id: "mlx-community/Qwen3-30B-A3B-6bit"`
- `agents.defaults.model.primary: "mlx/mlx-community/Qwen3-30B-A3B-6bit"`
保留 `models.mode: "merge"`,这样托管模型仍可作为回退使用。对于慢速的本地或远程模型服务器,请优先使用 `models.providers.<id>.timeoutSeconds`,再考虑提高 `agents.defaults.timeoutSeconds`。provider 超时仅适用于模型 HTTP 请求,包括连接、响应头、流式响应体以及整个 guarded-fetch 的中止。
保留 `models.mode: "merge"`,这样托管模型仍可作为回退使用。
对于较慢的本地或远程模型服务器,应优先使用 `models.providers.<id>.timeoutSeconds`,再考虑提高 `agents.defaults.timeoutSeconds`。provider 超时仅适用于模型 HTTP 请求,包括连接、响应头、流式响应体,以及整个 guarded-fetch 的中止控制。
<Note>
对于自定义兼容 OpenAI 的提供商,当 `baseUrl` 解析到 loopback、私有 LAN、`.local` 或裸主机名时,可以持久化一个非敏感的本地标记,例如 `apiKey: "ollama-local"`。OpenClaw 会将其视为有效的本地凭证,而不会报告缺少 key。对于接受公网主机名的提供商,请使用真实值。
对于自定义兼容 OpenAI 的提供商,当 `baseUrl` 解析到 loopback、私有 LAN、`.local` 或裸主机名时,持久化一个非机密的本地标记(例如 `apiKey: "ollama-local"`是允许的。OpenClaw 会将其视为有效的本地凭证,而不是报告缺失 key。对于接受公共主机名的任何提供商,请使用真实值。
</Note>
关于本地 / 代理 `/v1` 后端的行为说明:
- OpenClaw 将这些视为代理风格的兼容 OpenAI 路由,而不是原生 OpenAI 端点
- 仅适用于原生 OpenAI 的请求整形在这里不生效:没有 `service_tier`、没有 Responses `store`、没有 OpenAI 推理兼容载荷整形,也没有提示缓存提示
- 在这些自定义代理 URL 上,不会注入隐藏的 OpenClaw 归因请求头`originator`、`version`、`User-Agent`
- OpenClaw 将这些视为代理风格的兼容 OpenAI 路由,而不是原生 OpenAI 端点
- 原生 OpenAI 专用的请求整形在这里不适用:没有 `service_tier`、没有 Responses `store`、没有 OpenAI reasoning-compat payload shaping也没有 prompt-cache 提示
- 在这些自定义代理 URL 上,不会注入隐藏的 OpenClaw attribution headers`originator`、`version`、`User-Agent`
对于更严格的兼容 OpenAI 后端,兼容性注意事项如下:
对于更严格的兼容 OpenAI 后端,兼容性说明如下:
- 些服务器在 Chat Completions 中只接受字符串形式的 `messages[].content`,不接受结构化内容片段数组。对于这些端点,设置 `models.providers.<provider>.models[].compat.requiresStringContent: true`
- 些本地模型会以文本形式输出独立的方括号工具请求,例如 `[tool_name]` 后跟 JSON 和 `[END_TOOL_REQUEST]`。只有当该名称与本轮已注册工具完全匹配时OpenClaw 才会将其提升为真实工具调用;否则,这个块会被视为不受支持的文本,并从用户可见回复中隐藏。
- 如果模型输出看起来像工具调用的 JSON、XML 或 ReAct 风格文本,但 provider 并未发出结构化调用OpenClaw 会将其保留为文本,并记录一条警告,其中包含运行 id、provider / model、检测到的模式以及可用时的工具名称。请将这视为 provider / model 的工具调用不兼容,而不是已完成的工具运行。
- 如果工具以 assistant 文本形式出现而不是被执行,例如原始 JSON、XML、ReAct 语法,或 provider 响应中出现空的 `tool_calls` 数组,请先确认服务器使用的是支持工具调用的 chat template / parser。对于只有在强制使用工具时其 parser 才能正常工作的兼容 OpenAI Chat Completions 后端,请设置每模型请求覆盖,而不要依赖文本解析:
- 些服务器在 Chat Completions 中只接受字符串形式的 `messages[].content`,不接受结构化内容片段数组。对于这些端点,设置 `models.providers.<provider>.models[].compat.requiresStringContent: true`
- 些本地模型会以文本形式输出独立的方括号工具请求,例如 `[tool_name]`,后接 JSON再接 `[END_TOOL_REQUEST]`。只有当该名称与当前轮次已注册工具中的某个工具**完全匹配**时OpenClaw 才会将其提升为真实工具调用;否则,该块会被视为不受支持的文本,并从面向用户的回复中隐藏。
- 如果模型输出看起来像工具调用的 JSON、XML 或 ReAct 风格文本,但 provider 并未发出结构化调用OpenClaw 会将其保留为文本,并在日志中记录警告,其中包含运行 id、provider/model、检测到的模式以及可用时的工具名称。应将这视为 provider/model 的工具调用不兼容,而不是已完成的工具运行。
- 如果工具以 assistant 文本形式出现而没有真正运行,例如原始 JSON、XML、ReAct 语法,或 provider 响应中出现空的 `tool_calls` 数组,请先确认服务器使用的是支持工具调用的 chat template/parser。对于那些只有在强制启用工具使用时其 parser 才能正常工作的兼容 OpenAI Chat Completions 后端,应设置按模型粒度的请求覆盖,而不是依赖文本解析:
```json5
{
@ -202,26 +203,48 @@ x-i18n:
}
```
仅在每个正常轮次都应调用工具的模型 / 会话中使用此设置。它会覆盖 OpenClaw 默认的代理值 `tool_choice: "auto"`。将 `local/my-local-model` 替换为 `openclaw models list` 显示的精确 provider / model 引用。
仅在每个普通轮次都应调用工具的模型 / 会话中使用此设置。
它会覆盖 OpenClaw 默认的代理值 `tool_choice: "auto"`
`local/my-local-model` 替换为
`openclaw models list` 显示的精确 provider/model 引用。
```bash
openclaw config set agents.defaults.models '{"local/my-local-model":{"params":{"extra_body":{"tool_choice":"required"}}}}' --strict-json --merge
```
- 某些较小或更严格的本地后端在面对 OpenClaw 完整的智能体运行时提示结构时不稳定,尤其是包含工具 schema 时。如果后端对于很小的直接 `/v1/chat/completions` 调用是正常的,但在正常 OpenClaw 智能体轮次中失败,请先尝试 `agents.defaults.experimental.localModelLean: true`,以去掉像 `browser`、`cron` 和 `message` 这样的重量级默认工具;这是实验性标志,不是稳定的默认模式设置。参见 [Experimental Features](/zh-CN/concepts/experimental-features)。如果仍然失败,再尝试 `models.providers.<provider>.models[].compat.supportsTools: false`
- 如果后端仍然只在较大的 OpenClaw 运行中失败,剩余问题通常是上游模型 / 服务器容量不足,或后端 bug而不是 OpenClaw 的传输层问题。
- 某些较小或更严格的本地后端在面对 OpenClaw 完整的智能体运行时提示结构时会不稳定,尤其是在包含工具 schema 时。请先使用精简的本地探针验证 provider 路径:
```bash
openclaw infer model run --local --model <provider/model> --prompt "Reply with exactly: pong" --json
```
如果这一步成功,但正常的 OpenClaw 智能体轮次失败,先尝试
`agents.defaults.experimental.localModelLean: true`,以移除像 `browser`、`cron` 和 `message` 这样的重量级默认工具;这是一个实验性标志,不是稳定的默认模式设置。参见
[Experimental Features](/zh-CN/concepts/experimental-features)。如果仍然失败,再尝试
`models.providers.<provider>.models[].compat.supportsTools: false`
- 如果后端仅在更大型的 OpenClaw 运行中仍然失败,剩余问题通常是上游模型 / 服务器容量不足或后端 bug而不是 OpenClaw 的传输层问题。
## 故障排除
- Gateway 网关能访问代理吗?`curl http://127.0.0.1:1234/v1/models`
- LM Studio 模型未加载?重新加载;冷启动是常见的“卡住”原因。
- 本地服务器显示 `terminated`、`ECONNRESET`或在轮次中途关闭流OpenClaw 会在诊断中记录低基数的 `model.call.error.failureKind`,以及 OpenClaw 进程的 RSS / heap 快照。对于 LM Studio / Ollama 的内存压力问题,可将该时间戳与服务器日志或 macOS 崩溃 / jetsam 日志对照,以确认模型服务器是否被系统杀掉。
- 当检测到上下文窗口低于 **32k**OpenClaw 会发出警告;低于 **16k** 时会阻止运行。如果你触发了该 preflight请提高服务器 / 模型的上下文限制,或选择更大的模型。
- Gateway 网关能连到代理吗?`curl http://127.0.0.1:1234/v1/models`。
- LM Studio 模型被卸载了?重新加载;冷启动是常见的“卡住”原因。
- 本地服务器显示 `terminated`、`ECONNRESET`,或者在轮次进行中途关闭流?
OpenClaw 会在诊断信息中记录低基数的 `model.call.error.failureKind`,以及
OpenClaw 进程的 RSS/heap 快照。对于 LM Studio/Ollama 的内存压力问题,
将该时间戳与服务器日志或 macOS 崩溃 / jetsam 日志对照,以确认模型服务器是否被系统杀掉。
- 当检测到的上下文窗口低于 **32k**OpenClaw 会发出警告;低于 **16k** 时会直接阻止运行。如果你触发了这个预检,请提高服务器 / 模型的上下文限制,或选择更大的模型。
- 上下文错误?降低 `contextWindow` 或提高你的服务器限制。
- 兼容 OpenAI 的服务器返回 `messages[].content ... expected a string`?在该模型条目上添加 `compat.requiresStringContent: true`
- 直接的小型 `/v1/chat/completions` 调用可以正常工作,但 `openclaw infer model run` 在 Gemma 或其他本地模型上失败?先用 `compat.supportsTools: false` 禁用工具 schema然后重新测试。如果服务器仍然只在较大的 OpenClaw 提示下崩溃,请将其视为上游服务器 / 模型的限制。
- 工具调用显示为原始 JSON / XML / ReAct 文本,或者 provider 返回空的 `tool_calls` 数组?不要添加一个盲目把 assistant 文本转换为工具执行的代理。先修复服务器的 chat template / parser。如果该模型只有在强制使用工具时才能工作请添加上面的每模型 `params.extra_body.tool_choice: "required"` 覆盖,并且只在预计每轮都需要工具调用的会话中使用该模型条目。
- 安全性:本地模型会跳过提供商侧过滤;请保持智能体范围狭窄,并开启压缩,以限制提示注入的影响范围。
- 兼容 OpenAI 的服务器返回 `messages[].content ... expected a string`
在该模型条目上添加 `compat.requiresStringContent: true`
- 直接调用微型 `/v1/chat/completions` 可以工作,但 `openclaw infer model run --local`
在 Gemma 或其他本地模型上失败?先检查 provider URL、模型引用、认证标记和服务器日志本地 `model run` 不包含智能体工具。
如果本地 `model run` 成功,但更大的智能体轮次失败,请使用 `localModelLean``compat.supportsTools: false` 来缩减智能体工具暴露面。
- 工具调用以原始 JSON/XML/ReAct 文本形式出现,或者 provider 返回空的 `tool_calls` 数组?
不要添加一个盲目把 assistant 文本转换为工具执行的代理。先修复服务器的 chat template/parser。
如果模型只有在强制启用工具使用时才能正常工作,请添加上面的按模型粒度覆盖
`params.extra_body.tool_choice: "required"`,并且仅在每轮都预期会调用工具的会话中使用该模型条目。
- 安全性:本地模型会跳过提供商侧过滤;请保持智能体能力边界尽量收窄,并开启 compaction以限制提示注入的影响范围。
## 相关内容

View File

@ -6,51 +6,51 @@ read_when:
summary: 使用 Ollama 运行 OpenClaw云端和本地模型
title: Ollama
x-i18n:
generated_at: "2026-04-27T12:55:46Z"
generated_at: "2026-04-27T22:06:17Z"
model: gpt-5.4
provider: openai
source_hash: a281eb9b7cf85705e749921f4fec7a998ea8bd186e7a95804cb307e41cd739cf
source_hash: 965248027c46010cdd524d11afcfaeb7ccfb0dc326873bf5d9f3cd54569a4bfa
source_path: providers/ollama.md
workflow: 15
---
OpenClaw 集成了 Ollama 的原生 API`/api/chat`),可用于托管云模型以及本地/自托管的 Ollama 服务器。你可以通过三种模式使用 Ollama通过可访问的 Ollama 主机使用 `Cloud + Local`通过 `https://ollama.com` 使用 `Cloud only`,或通过可访问的 Ollama 主机使用 `Local only`
OpenClaw 通过 Ollama 的原生 API`/api/chat`)集成托管云模型和本地/自托管 Ollama 服务器。你可以通过三种模式使用 Ollama通过可访问的 Ollama 主机使用 `Cloud + Local`对接 `https://ollama.com``Cloud only`,或对接可访问 Ollama 主机的 `Local only`
<Warning>
**远程 Ollama 用户**:不要在 OpenClaw 中使用 `/v1` OpenAI 兼容 URL`http://host:11434/v1`)。这会破坏工具调用,模型还可能将原始工具 JSON 作为纯文本输出。请改用原生 Ollama API URL`baseUrl: "http://host:11434"`(不要带 `/v1`)。
</Warning>
Ollama 提供商配置使用 `baseUrl` 作为规范键名。出于与 OpenAI SDK 风格示例兼容的考虑,OpenClaw 也接受 `baseURL`,但新配置应优先使用 `baseUrl`
Ollama provider 配置使用 `baseUrl` 作为规范键名。OpenClaw 也接受 `baseURL` 以兼容 OpenAI SDK 风格的示例,但新配置应优先使用 `baseUrl`
## 证规则
## 证规则
<AccordionGroup>
<Accordion title="本地和局域网主机">
本地和局域网中的 Ollama 主机不需要真实的 bearer token。对于 loopback、私有网络、`.local` 和裸主机名 Ollama base URLOpenClaw 仅使用本地 `ollama-local` 标记
本地和局域网 Ollama 主机不需要真实的 bearer token。OpenClaw 仅将本地 `ollama-local` 标记用于 loopback、私有网络、`.local` 和裸主机名 Ollama base URL。
</Accordion>
<Accordion title="远程和 Ollama Cloud 主机">
远程公网主机和 Ollama Cloud`https://ollama.com`)需要通过 `OLLAMA_API_KEY`认证配置文件或提供商`apiKey` 提供真实凭证。
远程公网主机和 Ollama Cloud`https://ollama.com`)需要通过 `OLLAMA_API_KEY`auth profile 或 provider `apiKey` 提供真实凭证。
</Accordion>
<Accordion title="自定义提供商 id">
`api: "ollama"` 作为配置的自定义提供商 id 遵循相同规则。例如,指向私有局域网 Ollama 主机的 `ollama-remote` 提供商可以使用 `apiKey: "ollama-local"`,子智能体会通过 Ollama 提供商钩子解析该标记,而不会将其视为缺失凭证。
<Accordion title="自定义 provider id">
`api: "ollama"` 设为自定义 provider id 时,也遵循相同规则。例如,指向私有局域网 Ollama 主机的 `ollama-remote` provider 可以使用 `apiKey: "ollama-local"`,子智能体会通过 Ollama provider hook 解析该标记,而不是将其视为缺失的凭证。
</Accordion>
<Accordion title="Memory 嵌入作用域">
当 Ollama 用于 memory 嵌入时bearer 认证会被限制在声明它的主机范围内:
当 Ollama 用于 Memory 嵌入时bearer 凭证会限定在声明它的主机作用域内:
- 提供商级别的密钥仅会发送到该提供商自己的 Ollama 主机。
- `agents.*.memorySearch.remote.apiKey` 会发送到它自己的远程嵌入主机。
- `OLLAMA_API_KEY` 环境变量值会被视为 Ollama Cloud 约定,默认不会发送到本地或自托管主机。
- provider 级别的密钥只会发送到该 provider 的 Ollama 主机。
- `agents.*.memorySearch.remote.apiKey` 会发送到它自己的远程嵌入主机。
- 单独的 `OLLAMA_API_KEY` 环境变量值会被视为 Ollama Cloud 约定,默认不会发送到本地或自托管主机。
</Accordion>
</AccordionGroup>
## 入门指南
请选择你偏好的设置方式和模式。
选择你偏好的设置方法和模式。
<Tabs>
<Tab title="新手引导(推荐)">
**最适合:** 以最快方式完成可用的 Ollama 云端或本地设置。
**最适合:** 以最快路径完成可用的 Ollama 云端或本地设置。
<Steps>
<Step title="运行新手引导">
@ -58,15 +58,15 @@ Ollama 提供商配置使用 `baseUrl` 作为规范键名。出于与 OpenAI SDK
openclaw onboard
```
在提供商列表中选择 **Ollama**
从 provider 列表中选择 **Ollama**
</Step>
<Step title="选择你的模式">
- **Cloud + Local** — 本地 Ollama 主机,加上通过该主机路由的云模型
- **Cloud only** — 通过 `https://ollama.com` 使用托管 Ollama 模型
- **Cloud only** — 通过 `https://ollama.com` 使用托管 Ollama 模型
- **Local only** — 仅使用本地模型
</Step>
<Step title="选择一个模型">
`Cloud only` 会提示输入 `OLLAMA_API_KEY`,并推荐托管云默认模型。`Cloud + Local` 和 `Local only` 会要求提供 Ollama base URL发现可用模型并在所选本地模型尚不可用时自动拉取该模型。当 Ollama 报告已安装的 `:latest` 标签,例如 `gemma4:latest` 时,设置界面会仅显示该已安装模型一次,而不会同时显示 `gemma4``gemma4:latest`,也不会再次拉取裸别名。`Cloud + Local` 还会检查该 Ollama 主机是否已登录以访问云服务
<Step title="选择模型">
`Cloud only` 会提示输入 `OLLAMA_API_KEY`,并推荐托管云默认模型。`Cloud + Local` 和 `Local only` 会要求提供一个 Ollama base URL发现可用模型并在所选本地模型尚不可用时自动拉取。当 Ollama 报告已安装的 `:latest` 标签(例如 `gemma4:latest`)时,设置界面只显示这一个已安装模型,而不会同时显示 `gemma4``gemma4:latest`,也不会再次拉取不带标签的别名。`Cloud + Local` 还会检查该 Ollama 主机是否已登录并启用云访问
</Step>
<Step title="验证模型可用">
```bash
@ -83,7 +83,7 @@ Ollama 提供商配置使用 `baseUrl` 作为规范键名。出于与 OpenAI SDK
--accept-risk
```
也可以选择指定自定义 base URL 或模型:
也可以选择指定自定义 base URL 或模型:
```bash
openclaw onboard --non-interactive \
@ -127,7 +127,7 @@ Ollama 提供商配置使用 `baseUrl` 作为规范键名。出于与 OpenAI SDK
openclaw config set models.providers.ollama.apiKey "OLLAMA_API_KEY"
```
</Step>
<Step title="并设置你的模型">
<Step title="查并设置你的模型">
```bash
openclaw models list
openclaw models set ollama/gemma4
@ -154,76 +154,99 @@ Ollama 提供商配置使用 `baseUrl` 作为规范键名。出于与 OpenAI SDK
<Tabs>
<Tab title="Cloud + Local">
`Cloud + Local` 使用一个可访问的 Ollama 主机,作为本地和云模型的统一控制点。这是 Ollama 推荐的混合流程
`Cloud + Local` 使用一个可访问的 Ollama 主机作为本地模型和云模型的统一控制点。这是 Ollama 首选的混合工作流
在设置期间使用 **Cloud + Local**。OpenClaw 会提示输入 Ollama base URL从该主机发现本地模型并检查该主机是否已通过 `ollama signin` 登录以访问云服务。当主机已登录时OpenClaw 还会推荐托管云默认模型,例如 `kimi-k2.5:cloud`、`minimax-m2.7:cloud` 和 `glm-5.1:cloud`
在设置期间使用 **Cloud + Local**。OpenClaw 会提示输入 Ollama base URL从该主机发现本地模型并检查该主机是否已通过 `ollama signin` 登录以启用云访问。当主机已登录时OpenClaw 还会推荐托管云默认模型,例如 `kimi-k2.5:cloud`、`minimax-m2.7:cloud` 和 `glm-5.1:cloud`
如果该主机尚未登录OpenClaw 会将设置保持为仅本地模式,直到你运行 `ollama signin`
如果该主机尚未登录OpenClaw 会保持仅本地设置,直到你运行 `ollama signin`
</Tab>
<Tab title="Cloud only">
`Cloud only` 通过 `https://ollama.com` 上的 Ollama 托管 API 运行
`Cloud only` 对接 Ollama 的托管 API`https://ollama.com`
在设置期间使用 **Cloud only**。OpenClaw 会提示输入 `OLLAMA_API_KEY`,设置 `baseUrl: "https://ollama.com"`,并初始化托管云模型列表。此路径**不需要**本地 Ollama 服务器或 `ollama signin`
在设置期间使用 **Cloud only**。OpenClaw 会提示输入 `OLLAMA_API_KEY`,设置 `baseUrl: "https://ollama.com"`,并初始化托管云模型列表。此路径**不**需要本地 Ollama 服务器或 `ollama signin`
`openclaw onboard` 期间显示的云模型列表会通过 `https://ollama.com/api/tags` 实时填充,最多 500 条,因此选择器反映的是当前托管目录,而不是静态种子。如果设置时 `ollama.com` 不可达或未返回模型OpenClaw 会回退到之前的硬编码建议,以便新手引导仍能完成。
`openclaw onboard` 期间显示的云模型列表会`https://ollama.com/api/tags` 实时填充,最多 500 项,因此选择器反映的是当前托管目录,而不是静态种子列表。如果设置时 `ollama.com` 无法访问或未返回任何模型OpenClaw 会回退到之前硬编码的推荐项,以便新手引导仍可完成。
</Tab>
<Tab title="Local only">
在仅本地模式下OpenClaw 会从已配置的 Ollama 实例发现模型。此路径适用于本地或自托管 Ollama 服务器。
在仅本地模式下OpenClaw 会从已配置的 Ollama 实例发现模型。此路径适用于本地或自托管 Ollama 服务器。
OpenClaw 当前推荐 `gemma4` 作为本地默认模型。
</Tab>
</Tabs>
## 模型发现(隐式提供商
## 模型发现(隐式 provider
当你设置`OLLAMA_API_KEY`(或认证配置文件),并且**没有**定义 `models.providers.ollama` 或其他使用 `api: "ollama"` 的自定义远程提供商时OpenClaw 会从本地 `http://127.0.0.1:11434` 上的 Ollama 实例发现模型。
当你设置 `OLLAMA_API_KEY`(或 auth profile并且**没有**定义 `models.providers.ollama` 或其他设置了 `api: "ollama"` 的自定义远程 provider 时OpenClaw 会从 `http://127.0.0.1:11434` 上的本地 Ollama 实例发现模型。
| 行为 | 详情 |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 目录查询 | 查询 `/api/tags` |
| 能力检测 | 使用尽力而为的 `/api/show` 查询读取 `contextWindow`、展开的 `num_ctx` Modelfile 参数,以及包括 vision/tools 在内的能力 |
| 视觉模型 | `/api/show` 报告具备 `vision` 能力的模型会被标记为支持图像(`input: ["text", "image"]`),因此 OpenClaw 会自动将图片注入提示中 |
| 能力检测 | 使用尽力而为的 `/api/show` 查询读取 `contextWindow`、展开的 `num_ctx` Modelfile 参数,以及包括 vision/tools 在内的能力 |
| 视觉模型 | 对于 `/api/show` 报告具有 `vision` 能力的模型,会标记为支持图像(`input: ["text", "image"]`),因此 OpenClaw 会自动将图像注入提示词 |
| 推理检测 | 使用模型名称启发式(`r1`、`reasoning`、`think`)标记 `reasoning` |
| Token 限制 | 将 `maxTokens`为 OpenClaw 使用的默认 Ollama 最大 token 上限 |
| 成本 | 将所有成本设`0` |
| Token 限制 | 将 `maxTokens` 设为 OpenClaw 使用的默认 Ollama 最大 token 上限 |
| 成本 | 将所有成本设为 `0` |
这样可以避免手动填写模型条目,同时使目录与本地 Ollama 实例保持一致
这样可以避免手动录入模型,同时使模型目录与本地 Ollama 实例保持一致。你可以在本地 `infer model run` 中使用完整引用,例如 `ollama/<pulled-model>:latest`OpenClaw 会从 Ollama 的实时目录中解析该已安装模型,而无需手写 `models.json` 条目
```bash
# 查看有哪些模型可用
# 查看有哪些可用模型
ollama list
openclaw models list
```
要添加新模型,只需用 Ollama 拉取它:
对于避免加载完整智能体工具面的窄范围文本生成冒烟测试,
请在本地 `infer model run` 中使用完整的 Ollama 模型引用:
```bash
OLLAMA_API_KEY=ollama-local \
openclaw infer model run \
--local \
--model ollama/llama3.2:latest \
--prompt "Reply with exactly: pong" \
--json
```
这一路径仍然使用 OpenClaw 已配置的 provider、auth 和原生 Ollama
传输,但不会启动聊天智能体轮次,也不会加载 MCP/工具上下文。如果
这里成功而普通智能体回复失败,请接下来排查模型的智能体提示词/工具能力。
通过以下命令,你可以对接本地 Ollama实时验证本地文本路径、原生流式路径和嵌入
```bash
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA=1 OPENCLAW_LIVE_OLLAMA_WEB_SEARCH=0 \
pnpm test:live -- extensions/ollama/ollama.live.test.ts
```
要添加新模型,只需使用 Ollama 拉取它:
```bash
ollama pull mistral
```
新模型会被自动发现,并可直接使用。
新模型会被自动发现并可立即使用。
<Note>
如果你显式设置了 `models.providers.ollama`,或配置了像 `models.providers.ollama-cloud` 这样的自定义远程提供商并设置 `api: "ollama"`,则会跳过自动发现,你必须手动定义模型。像 `http://127.0.0.2:11434` 这样的 loopback 自定义提供商仍会被视为本地。请参见下方的显式配置部分。
如果你显式设置了 `models.providers.ollama`,或配置了像 `models.providers.ollama-cloud` 这样带有 `api: "ollama"` 的自定义远程 provider,则会跳过自动发现,你必须手动定义模型。像 `http://127.0.0.2:11434` 这样的 loopback 自定义 provider 仍会被视为本地。请参阅下面的显式配置部分。
</Note>
## 视觉与图像描述
## 视觉图像描述
内置的 Ollama 插件将 Ollama 注册为支持图像的媒体理解提供商。这使得 OpenClaw 能够将显式图像描述请求以及已配置的默认图像模型,路由到本地或托管的 Ollama 视觉模型。
内置的 Ollama 插件将 Ollama 注册为支持图像的媒体理解 provider。这使 OpenClaw 可以通过本地或托管的 Ollama 视觉模型,路由显式图像描述请求以及已配置的默认图像模型。
对于本地视觉,请拉取一个支持图像的模型:
对于本地视觉支持,请拉取一个支持图像的模型:
```bash
ollama pull qwen2.5vl:7b
export OLLAMA_API_KEY="ollama-local"
```
然后用 infer CLI 验证:
然后使用 infer CLI 验证:
```bash
openclaw infer image describe \
@ -232,9 +255,9 @@ openclaw infer image describe \
--json
```
`--model` 必须是完整的 `<provider/model>` 引用。设置后,`openclaw infer image describe` 会直接运行该模型,而不会因为模型支持原生视觉跳过描述。
`--model` 必须是完整的 `<provider/model>` 引用。设置后,`openclaw infer image describe` 会直接运行该模型,而不会因为模型支持原生视觉能力而跳过描述。
要让 Ollama 成为入站媒体的默认图像理解模型,请配置 `agents.defaults.imageModel`
如果你想将 Ollama 设为入站媒体的默认图像理解模型,请配置 `agents.defaults.imageModel`
```json5
{
@ -248,7 +271,7 @@ openclaw infer image describe \
}
```
较慢的本地视觉模型通常比云模型需要更长的图像理解超时时间。它们还可能在硬件受限时,因为 Ollama 尝试分配完整宣告的视觉上下文而崩溃或停止。请设置能力超时,并在模型条目上限制 `num_ctx`,如果你只需要普通的图像描述轮次:
较慢的本地视觉模型可能需要比云模型更长的图像理解超时时间。它们在硬件受限时,也可能会在 Ollama 尝试分配完整宣称的视觉上下文时崩溃或停止。请设置能力超时,并在模型条目上限制 `num_ctx`,如果你只需要普通的图像描述轮次:
```json5
{
@ -277,16 +300,16 @@ openclaw infer image describe \
}
```
这个超时同时适用于入站图像理解,以及智能体在轮次中可调用的显式 `image` 工具。提供商级别的 `models.providers.ollama.timeoutSeconds` 仍然控制普通模型调用所使用的底层 Ollama HTTP 请求保护时间
此超时同时适用于入站图像理解,以及智能体在一次轮次中可以调用的显式 `image` 工具。provider 级别的 `models.providers.ollama.timeoutSeconds` 仍然控制普通模型调用时底层 Ollama HTTP 请求的保护超时
你可以通过以下方式,对本地 Ollama 的显式图像工具进行实时验证
通过以下命令,你可以对接本地 Ollama实时验证显式图像工具
```bash
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA_IMAGE=1 \
pnpm test:live -- src/agents/tools/image-tool.ollama.live.test.ts
```
如果你手动定义`models.providers.ollama.models`,请为视觉模型标记图像输入支持
如果你手动定义 `models.providers.ollama.models`,请将视觉模型标记为支持图像输入
```json5
{
@ -298,7 +321,7 @@ OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA_IMAGE=1 \
}
```
对于未标记为支持图像的模型OpenClaw 会拒绝图像描述请求。使用隐式发现时,如果 `/api/show` 报告了视觉能力OpenClaw 会从 Ollama 读取这一点
OpenClaw 会拒绝未标记为支持图像能力的模型的图像描述请求。在隐式发现模式下,当 `/api/show` 报告 vision 能力时OpenClaw 会从 Ollama 读取此信息
## 配置
@ -311,13 +334,13 @@ OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA_IMAGE=1 \
```
<Tip>
如果设置了 `OLLAMA_API_KEY`,你可以在提供商条目中省略 `apiKey`OpenClaw 会在可用性检查时自动补全它
如果已设置 `OLLAMA_API_KEY`,你可以在 provider 条目中省略 `apiKey`OpenClaw 会自动填充它以进行可用性检查
</Tip>
</Tab>
<Tab title="显式(手动模型)">
当你想使用托管云端设置、Ollama 运行在其他主机/端口、想强制指定特定上下文窗口或模型列表,或想完全手动定义模型,请使用显式配置。
<Tab title="显式配置(手动模型)">
如果你想使用托管云设置、Ollama 运行在其他主机/端口、想强制指定特定上下文窗口或模型列表,或想完全手动定义模型,请使用显式配置。
```json5
{
@ -347,7 +370,7 @@ OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA_IMAGE=1 \
</Tab>
<Tab title="自定义 base URL">
如果 Ollama 运行在其他主机或端口上(显式配置会禁用自动发现,因此需要手动定义模型):
如果 Ollama 运行在不同的主机或端口上(显式配置会禁用自动发现,因此需要手动定义模型):
```json5
{
@ -355,9 +378,9 @@ OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA_IMAGE=1 \
providers: {
ollama: {
apiKey: "ollama-local",
baseUrl: "http://ollama-host:11434", // 不要加 /v1 - 使用原生 Ollama API URL
baseUrl: "http://ollama-host:11434", // 不要加 /v1 —— 请使用原生 Ollama API URL
api: "ollama", // 显式设置以确保原生工具调用行为
timeoutSeconds: 300, // 可选:给冷启动的本地模型更长的连接和流式传输时间
timeoutSeconds: 300, // 可选:为冷启动的本地模型提供更长的连接和流式传输时间
models: [
{
id: "qwen3:32b",
@ -374,19 +397,19 @@ OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA_IMAGE=1 \
```
<Warning>
不要在 URL 中添加 `/v1`。`/v1` 路径使用 OpenAI 兼容模式,模式下工具调用并不可靠。请使用不带路径后缀的基础 Ollama URL。
不要在 URL 中添加 `/v1`。`/v1` 路径使用 OpenAI 兼容模式,在该模式下工具调用并不可靠。请使用不带路径后缀的 Ollama 基础 URL。
</Warning>
</Tab>
</Tabs>
## 常见
## 常见方
请将这些作为起点,并将模型 id 替换为 `ollama list``openclaw models list --provider ollama` 中显示的精确名称
你可以将这些作为起点,然后用 `ollama list``openclaw models list --provider ollama` 中显示的准确模型名称替换模型 ID
<AccordionGroup>
<Accordion title="自动发现的本地模型">
当 Ollama 与 Gateway 网关 运行在同一台机器上,并且你希望 OpenClaw 自动发现已安装模型时,请使用此方
<Accordion title="使用自动发现的本地模型">
当 Ollama 与 Gateway 网关 运行在同一台机器上,并且你希望 OpenClaw 自动发现已安装模型时,请使用此方
```bash
ollama serve
@ -396,12 +419,12 @@ OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA_IMAGE=1 \
openclaw models set ollama/gemma4
```
这种方式能保持配置最简。除非你想手动定义模型,否则不要添加 `models.providers.ollama` 块。
该路径可保持配置最简。除非你想手动定义模型,否则不要添加 `models.providers.ollama` 配置块。
</Accordion>
<Accordion title="带手动模型的局域网 Ollama 主机">
局域网主机请使用原生 Ollama URL。不要添加 `/v1`
对局域网主机请使用原生 Ollama URL。不要添加 `/v1`
```json5
{
@ -438,12 +461,12 @@ OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA_IMAGE=1 \
}
```
`contextWindow` 是 OpenClaw 侧的上下文预算。`params.num_ctx` 会随请求发送 Ollama。当你的硬件无法运行模型宣称的完整上下文时请保持两者一致。
`contextWindow` 是 OpenClaw 侧的上下文预算。`params.num_ctx` 会随请求发送 Ollama。当你的硬件无法运行模型宣称的完整上下文时请保持两者一致。
</Accordion>
<Accordion title="仅 Ollama Cloud">
当你不运行本地守护进程,而想直接使用托管的 Ollama 模型时,请使用此方式
当你不运行本地守护进程,并且想直接使用托管 Ollama 模型时,请使用此方案
```bash
export OLLAMA_API_KEY="your-ollama-api-key"
@ -481,7 +504,7 @@ OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA_IMAGE=1 \
</Accordion>
<Accordion title="通过已登录守护进程同时使用云端和本地">
当本地或局域网 Ollama 守护进程已通过 `ollama signin` 登录,并且应同时提供本地模型和 `:cloud` 模型时,请使用此方
当本地或局域网 Ollama 守护进程已通过 `ollama signin` 登录,并且应同时提供本地模型和 `:cloud` 模型时,请使用此方
```bash
ollama signin
@ -518,7 +541,7 @@ OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA_IMAGE=1 \
</Accordion>
<Accordion title="多个 Ollama 主机">
当你有多个 Ollama 服务器时,请使用自定义提供商 id。每个提供商都有各自的主机、模型、认证、超时和模型引用。
当你有多个 Ollama 服务器时,请使用自定义 provider ID。每个 provider 都有自己的主机、模型、凭证、超时和模型引用。
```json5
{
@ -553,12 +576,12 @@ OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA_IMAGE=1 \
}
```
当 OpenClaw 发送请求时,活动提供商前缀会被去掉,因此 `ollama-large/qwen3.5:27b` 到达 Ollama 时会变成 `qwen3.5:27b`
当 OpenClaw 发送请求时,活动 provider 前缀会被去掉,因此 `ollama-large/qwen3.5:27b` 到达 Ollama 时会变成 `qwen3.5:27b`
</Accordion>
<Accordion title="精简的本地模型配置">
一些本地模型可以回答简单提示,但难以处理完整的智能体工具接口。在修改全局运行时设置之前,请先从限制工具和上下文开始
某些本地模型可以回答简单提示,但难以应对完整的智能体工具面。开始时,先限制工具和上下文,再考虑更改全局运行时设置
```json5
{
@ -592,8 +615,8 @@ OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA_IMAGE=1 \
}
```
仅当模型或服务器在工具 schema 上稳定失败时,才使用 `compat.supportsTools: false`它是用智能体能力换取稳定性。
`localModelLean` 会从智能体接口中移除浏览器、cron 和消息工具,但不会改变 Ollama 的运行时上下文或 thinking 模式。对于会循环或回复预算耗费在隐藏推理上的小型 Qwen 风格 thinking 模型,请将它与显式的 `params.num_ctx``params.thinking: false` 搭配使用。
仅当模型或服务器在工具 schema 上稳定失败时,才使用 `compat.supportsTools: false`这会以牺牲智能体能力换取稳定性。
`localModelLean` 会从智能体中移除浏览器、cron 和消息工具,但不会改变 Ollama 的运行时上下文或 thinking 模式。对于会循环或回复预算耗费在隐藏推理上的小型 Qwen 风格 thinking 模型,请将它与显式的 `params.num_ctx``params.thinking: false` 搭配使用。
</Accordion>
</AccordionGroup>
@ -615,12 +638,12 @@ OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA_IMAGE=1 \
}
```
也支持自定义 Ollama 提供商 id。当模型引用使用活动中的
提供商前缀,例如 `ollama-spark/qwen3:32b`OpenClaw 只会去掉该
前缀,然后再调用 Ollama因此服务器接收到的是 `qwen3:32b`
也支持自定义 Ollama provider ID。当模型引用使用活动
provider 前缀时,例如 `ollama-spark/qwen3:32b`OpenClaw 在调用 Ollama 前只会去掉该
前缀,因此服务器接收到的是 `qwen3:32b`
对于较慢的本地模型,优先考虑对提供商范围的请求进行调优,而不是提高
整个智能体运行时超时:
对于较慢的本地模型,优先考虑使用 provider 作用域的请求调优,而不是提升整个
智能体运行时超时:
```json5
{
@ -642,17 +665,17 @@ OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA_IMAGE=1 \
```
`timeoutSeconds` 适用于模型 HTTP 请求,包括连接建立、
请求头、正文流式传输以及总的 guarded-fetch 中止。`params.keep_alive`
在原生 `/api/chat` 请求中作为顶层 `keep_alive` 转发给 Ollama
headers、正文流式传输以及整个受保护获取请求的中止。`params.keep_alive`
会作为顶层 `keep_alive` 转发给 Ollama 的原生 `/api/chat` 请求
当首轮加载时间是瓶颈时,请按模型设置它。
### 快速验证
```bash
# 当前机器可见的 Ollama 守护进程
# 机器可见的 Ollama 守护进程
curl http://127.0.0.1:11434/api/tags
# OpenClaw 目录和已选模型
# OpenClaw 目录和已选模型
openclaw models list --provider ollama
openclaw models status
@ -662,19 +685,19 @@ openclaw infer model run \
--prompt "Reply with exactly: ok"
```
对于远程主机,请将 `127.0.0.1` 替换为 `baseUrl` 中使用的主机。如果 `curl` 能工作但 OpenClaw 不行,请检查 Gateway 网关 是否运行在不同的机器、容器或服务账户中
对于远程主机,请将 `127.0.0.1` 替换为 `baseUrl` 中使用的主机。如果 `curl` 可用但 OpenClaw 不可用,请检查 Gateway 网关 是否运行在不同的机器、容器或服务账户下
## Ollama Web 搜索
OpenClaw 支持 **Ollama Web 搜索**,作为内置 `web_search` 提供商
OpenClaw 支持**Ollama Web 搜索** 作为内置 `web_search` provider
| 属性 | 详情 |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 主机 | 使用你配置的 Ollama 主机(设置了 `models.providers.ollama.baseUrl` 时使用,否则使用 `http://127.0.0.1:11434``https://ollama.com` 直接使用托管 API |
| 证 | 对已登录的本地 Ollama 主机无需密钥;对直接 `https://ollama.com` 搜索或受保护主机,使用 `OLLAMA_API_KEY` 或已配置的提供商认证 |
| 要求 | 本地/自托管主机必须正在运行并已通过 `ollama signin` 登录;直接的托管搜索需要 `baseUrl: "https://ollama.com"` 并提供真实的 Ollama API 密钥 |
| 主机 | 使用你配置的 Ollama 主机(设置了 `models.providers.ollama.baseUrl` 时使用该值,否则使用 `http://127.0.0.1:11434``https://ollama.com` 直接使用托管 API |
| 证 | 对已登录的本地 Ollama 主机无需密钥;对直接 `https://ollama.com` 搜索或受保护主机,使用 `OLLAMA_API_KEY` 或已配置的 provider 凭证 |
| 要求 | 本地/自托管主机必须正在运行并已通过 `ollama signin` 登录;直接使用托管搜索则需要 `baseUrl: "https://ollama.com"` 加上真实的 Ollama API 密钥 |
`openclaw onboard``openclaw configure --section web` 期间选择 **Ollama Web 搜索**,或设置:
`openclaw onboard``openclaw configure --section web` 期间选择 **Ollama Web 搜索**,或设置:
```json5
{
@ -688,7 +711,7 @@ OpenClaw 支持 **Ollama Web 搜索**,作为内置 `web_search` 提供商。
}
```
如需通过 Ollama Cloud 直接进行托管搜索:
若要通过 Ollama Cloud 直接使用托管搜索:
```json5
{
@ -713,7 +736,7 @@ OpenClaw 支持 **Ollama Web 搜索**,作为内置 `web_search` 提供商。
对于已登录的本地守护进程OpenClaw 会使用该守护进程的 `/api/experimental/web_search` 代理。对于 `https://ollama.com`,它会直接调用托管的 `/api/web_search` 端点。
<Note>
完整的设置和行为细节请参见 [Ollama Web 搜索](/zh-CN/tools/ollama-search)。
有关完整的设置和行为细节,请参阅 [Ollama Web 搜索](/zh-CN/tools/ollama-search)。
</Note>
## 高级配置
@ -721,10 +744,10 @@ OpenClaw 支持 **Ollama Web 搜索**,作为内置 `web_search` 提供商。
<AccordionGroup>
<Accordion title="旧版 OpenAI 兼容模式">
<Warning>
**在 OpenAI 兼容模式下,工具调用并不可靠。** 仅当你需要为某个代理使用 OpenAI 格式,并且不依赖原生工具调用行为时,才使用此模式。
**在 OpenAI 兼容模式下,工具调用并不可靠。** 仅当你需要为代理使用 OpenAI 格式,并且不依赖原生工具调用行为时,才使用此模式。
</Warning>
如果你确实需要改用 OpenAI 兼容端点(例如,在仅支持 OpenAI 格式的代理后面),请显式设置 `api: "openai-completions"`
如果你确实需要改用 OpenAI 兼容端点(例如位于仅支持 OpenAI 格式的代理后面),请显式设置 `api: "openai-completions"`
```json5
{
@ -742,9 +765,9 @@ OpenClaw 支持 **Ollama Web 搜索**,作为内置 `web_search` 提供商。
}
```
在此模式下,可能无法同时支持流式传输和工具调用。你可能需要在模型配置中使用 `params: { streaming: false }` 禁用流式传输。
该模式可能不支持同时进行流式传输和工具调用。你可能需要在模型配置中使用 `params: { streaming: false }` 禁用流式传输。
Ollama 使用 `api: "openai-completions"`OpenClaw 默认会注入 `options.num_ctx`,这样 Ollama 就不会悄悄回退到 4096 的上下文窗口。如果你的代理/上游拒绝未知的 `options` 字段,请禁用此行为:
`api: "openai-completions"` 与 Ollama 一起使用OpenClaw 默认会注入 `options.num_ctx`,这样 Ollama 就不会悄悄回退到 4096 的上下文窗口。如果你的代理/上游拒绝未知的 `options` 字段,请禁用此行为:
```json5
{
@ -765,11 +788,11 @@ OpenClaw 支持 **Ollama Web 搜索**,作为内置 `web_search` 提供商。
</Accordion>
<Accordion title="上下文窗口">
对于自动发现的模型OpenClaw 会在可用时使用 Ollama 报告的上下文窗口,包括来自自定义 Modelfile 的更大 `PARAMETER num_ctx` 值。否则,它会回退到 OpenClaw 使用的默认 Ollama 上下文窗口。
对于自动发现的模型OpenClaw 会在可用时使用 Ollama 报告的上下文窗口,包括来自自定义 Modelfiles 的更大 `PARAMETER num_ctx` 值。否则,它会回退到 OpenClaw 使用的默认 Ollama 上下文窗口。
你可以为该 Ollama 提供商下的每个模型设置提供商级别的 `contextWindow`、`contextTokens` 和 `maxTokens` 默认值,然后在需要时按模型覆盖。`contextWindow` 是 OpenClaw 的提示和压缩摘要预算。原生 Ollama 请求默认不会设置 `options.num_ctx`,除非你显式配置 `params.num_ctx`,这样 Ollama 就可以应用自己的模型、`OLLAMA_CONTEXT_LENGTH` 或基于 VRAM 的默认值。要在不重建 Modelfile 的情况下限制或强制 Ollama 的逐请求运行时上下文,请设置 `params.num_ctx`无效、零、负数和非有限值会被忽略。OpenAI 兼容的 Ollama 适配器仍会默认配置的 `params.num_ctx``contextWindow` 注入 `options.num_ctx`;如果你的上游拒绝 `options`,请使用 `injectNumCtxForOpenAICompat: false` 禁用此行为
你可以为该 Ollama provider 下的每个模型设置 provider 级别的 `contextWindow`、`contextTokens` 和 `maxTokens` 默认值,然后在需要时按模型覆盖。`contextWindow` 是 OpenClaw 的提示和压缩预算。原生 Ollama 请求不会设置 `options.num_ctx`,除非你显式配置 `params.num_ctx`,这样 Ollama 就可以应用自己的模型、`OLLAMA_CONTEXT_LENGTH` 或基于 VRAM 的默认值。要在不重建 Modelfile 的情况下限制或强制 Ollama 每次请求的运行时上下文,请设置 `params.num_ctx`无效、零、负数和非有限值会被忽略。OpenAI 兼容的 Ollama 适配器仍会默认根据已配置的 `params.num_ctx``contextWindow` 注入 `options.num_ctx`;如果你的上游拒绝 `options`,请使用 `injectNumCtxForOpenAICompat: false` 禁用
原生 Ollama 模型条目还接受 `params`常见 Ollama 运行时选项,包括 `temperature`、`top_p`、`top_k`、`min_p`、`num_predict`、`stop`、`repeat_penalty`、`num_batch`、`num_thread` 和 `use_mmap`。OpenClaw 只会转发 Ollama 请求键,因此像 `streaming` 这样的 OpenClaw 运行时参数不会泄漏到 Ollama。使用 `params.think``params.thinking` 发送顶层 Ollama `think`;对于 Qwen 风格的 thinking 模型,`false` 会禁用 API 级别的 thinking。
原生 Ollama 模型条目还接受 `params` 下常见 Ollama 运行时选项,包括 `temperature`、`top_p`、`top_k`、`min_p`、`num_predict`、`stop`、`repeat_penalty`、`num_batch`、`num_thread` 和 `use_mmap`。OpenClaw 只会转发 Ollama 请求键,因此像 `streaming` 这样的 OpenClaw 运行时参数不会泄露给 Ollama。使用 `params.think``params.thinking` 发送顶层 Ollama `think`;对于 Qwen 风格的 thinking 模型,`false` 会禁用 API 级 thinking。
```json5
{
@ -796,12 +819,12 @@ OpenClaw 支持 **Ollama Web 搜索**,作为内置 `web_search` 提供商。
}
```
按模型置的 `agents.defaults.models["ollama/<model>"].params.num_ctx` 也同样有效。如果两者都已配置,则显式的提供商模型条目优先于智能体默认值
按模型置的 `agents.defaults.models["ollama/<model>"].params.num_ctx` 也同样有效。如果两者都已配置,则显式的 provider 模型条目优先生效
</Accordion>
<Accordion title="Thinking 控制">
对于原生 Ollama 模型OpenClaw 会按 Ollama 期望的方式转发 thinking 控制:使用顶层 `think`,而不是 `options.think`
对于原生 Ollama 模型OpenClaw 会按 Ollama 期转发 thinking 控制:使用顶层 `think`,而不是 `options.think`
```bash
openclaw agent --model ollama/gemma4 --thinking off
@ -824,39 +847,39 @@ OpenClaw 支持 **Ollama Web 搜索**,作为内置 `web_search` 提供商。
}
```
按模型配置的 `params.think``params.thinking` 可以为特定已配置模型禁用或强制启用 Ollama API 的 thinking。像 `/think off` 这样的运行时命令仍然适用于当前运行。
按模型设置的 `params.think``params.thinking` 可以为特定配置模型禁用或强制启用 Ollama API thinking。运行时命令`/think off`)仍会应用于当前运行。
</Accordion>
<Accordion title="推理模型">
OpenClaw 默认会将名称中带有 `deepseek-r1`、`reasoning` 或 `think` 的模型视为支持推理的模型。
OpenClaw 默认将名称中包含 `deepseek-r1`、`reasoning` 或 `think` 的模型视为支持推理的模型。
```bash
ollama pull deepseek-r1:32b
```
无需额外配置。OpenClaw 会自动标记它们。
不需要额外配置。OpenClaw 会自动标记它们。
</Accordion>
<Accordion title="模型成本">
Ollama 是免费的,并且在本地运行,因此所有模型成本都设置为 $0。这同时适用于自动发现和手动定义的模型。
Ollama 可免费使用并在本地运行,因此所有模型成本都设为 $0。这同时适用于自动发现和手动定义的模型。
</Accordion>
<Accordion title="Memory 嵌入">
内置的 Ollama 插件为
[memory 搜索](/zh-CN/concepts/memory) 注册了一个 memory 嵌入提供商。它使用已配置的 Ollama base URL
[memory search](/zh-CN/concepts/memory) 注册了一个 Memory 嵌入 provider。它使用已配置的 Ollama base URL
和 API 密钥,调用 Ollama 当前的 `/api/embed` 端点,并在可能时
将多个 memory 分块批量合并到一个 `input` 请求中。
将多个 Memory 块批量合并到一个 `input` 请求中。
| 属性 | 值 |
| ------------- | ------------------- |
| 默认模型 | `nomic-embed-text` |
| 自动拉取 | 是 — 如果嵌入模型在本地不存在,会自动拉取 |
| 自动拉取 | 是 — 如果本地不存在,该嵌入模型自动拉取 |
查询时嵌入会为需要或建议此做法的模型使用检索前缀,包括 `nomic-embed-text`、`qwen3-embedding` 和 `mxbai-embed-large`。Memory 文档批次保持原始格式,因此现有索引不需要执行格式迁移。
查询时嵌入会对那些需要或建议此前缀的模型使用检索前缀,包括 `nomic-embed-text`、`qwen3-embedding` 和 `mxbai-embed-large`。Memory 文档批次保持原始形式,因此现有索引不需要做格式迁移。
要将 Ollama 选为 memory 搜索嵌入提供商
若要将 Ollama 选为 memory search 的嵌入 provider
```json5
{
@ -868,7 +891,7 @@ OpenClaw 支持 **Ollama Web 搜索**,作为内置 `web_search` 提供商。
}
```
对于远程嵌入主机,请将认证限制在该主机范围内:
对于远程嵌入主机,请将凭证限定在该主机作用域内:
```json5
{
@ -890,12 +913,12 @@ OpenClaw 支持 **Ollama Web 搜索**,作为内置 `web_search` 提供商。
</Accordion>
<Accordion title="流式传输配置">
OpenClaw 的 Ollama 集成默认使用**原生 Ollama API**`/api/chat`),它完全支持同时进行流式传输和工具调用。无需任何特殊配置。
OpenClaw 的 Ollama 集成默认使用**原生 Ollama API**`/api/chat`),它完全支持同时进行流式传输和工具调用。不需要额外配置。
对于原生 `/api/chat` 请求OpenClaw 还会直接将 thinking 控制转发给 Ollama`/think off` 和 `openclaw agent --thinking off` 会发送顶层 `think: false`,而 `/think low|medium|high` 会发送匹配的顶层 `think` effort 字符串。`/think max` 会映射到 Ollama 的最高原生 effort,即 `think: "high"`
对于原生 `/api/chat` 请求OpenClaw 还会将 thinking 控制直接转发给 Ollama`/think off` 和 `openclaw agent --thinking off` 会发送顶层 `think: false`,而 `/think low|medium|high` 会发送对应的顶层 `think` 强度字符串。`/think max` 会映射到 Ollama 原生支持的最高强度,即 `think: "high"`
<Tip>
如果你需要使用 OpenAI 兼容端点,请参见上方“旧版 OpenAI 兼容模式”一节。在那种模式下,流式传输和工具调用可能无法同时工作。
如果你需要使用 OpenAI 兼容端点,请参阅上面的“旧版 OpenAI 兼容模式”部分。在该模式下,流式传输和工具调用可能无法同时工作。
</Tip>
</Accordion>
@ -905,15 +928,15 @@ OpenClaw 支持 **Ollama Web 搜索**,作为内置 `web_search` 提供商。
<AccordionGroup>
<Accordion title="WSL2 崩溃循环(重复重启)">
在使用 NVIDIA/CUDA 的 WSL2 上,官方 Ollama Linux 安装器会创建一个 `ollama.service` systemd 单元,并设置 `Restart=always`。如果该服务在 WSL2 启动时自动启动,并加载一个 GPU 支持的模型Ollama 可能会在模型加载期间占用主机内存。Hyper-V 内存回收并不总能回收这些被固定的页面,因此 Windows 可能终止 WSL2 VM随后 systemd 再次启动 Ollama于是循环反复发生。
在使用 NVIDIA/CUDA 的 WSL2 上,官方 Ollama Linux 安装器会创建一个 `ollama.service` systemd 单元,并设置 `Restart=always`。如果该服务在 WSL2 启动期间自动启动,并加载一个 GPU 支持的模型Ollama 可能会在模型加载时锁定主机内存。Hyper-V 的内存回收机制并不总能回收这些被锁定的页面,因此 Windows 可能会终止 WSL2 VMsystemd 又会重新启动 Ollama于是循环反复发生。
常见证据:
- Windows 侧重复出现 WSL2 重启或终止
- WSL2 启动后不久,`app.slice` 或 `ollama.service` 的 CPU 使用率很高
- systemd 发出 SIGTERM而不是 Linux OOM-killer 事件
- WSL2 从 Windows 侧反复重启或被终止
- WSL2 启动后不久,`app.slice` 或 `ollama.service` 的 CPU 占用很高
- 来自 systemd 的 SIGTERM而不是 Linux OOM-killer 事件
当 OpenClaw 检测到 WSL2、已启用且带有 `Restart=always``ollama.service`,以及可见的 CUDA 标记时,会记录一条启动警告。
当 OpenClaw 检测到 WSL2、启用了 `Restart=always``ollama.service`,以及可见的 CUDA 标记时,会记录一条启动警告。
缓解方法:
@ -921,7 +944,7 @@ OpenClaw 支持 **Ollama Web 搜索**,作为内置 `web_search` 提供商。
sudo systemctl disable ollama
```
在 Windows 侧将以下内容添加到 `%USERPROFILE%\.wslconfig`,然后运行 `wsl --shutdown`
在 Windows 侧将以下内容添加到 `%USERPROFILE%\.wslconfig`,然后运行 `wsl --shutdown`
```ini
[experimental]
@ -935,12 +958,12 @@ OpenClaw 支持 **Ollama Web 搜索**,作为内置 `web_search` 提供商。
ollama serve
```
请参 [ollama/ollama#11317](https://github.com/ollama/ollama/issues/11317)。
请参 [ollama/ollama#11317](https://github.com/ollama/ollama/issues/11317)。
</Accordion>
<Accordion title="未检测到 Ollama">
请确保 Ollama 正在运行,并且你已设置 `OLLAMA_API_KEY`(或认证配置文件),同时你**没有**定义显式的 `models.providers.ollama` 条目:
请确保 Ollama 正在运行,并且你已设置 `OLLAMA_API_KEY`(或 auth profile同时**没有**定义显式的 `models.providers.ollama` 条目:
```bash
ollama serve
@ -955,7 +978,7 @@ OpenClaw 支持 **Ollama Web 搜索**,作为内置 `web_search` 提供商。
</Accordion>
<Accordion title="没有可用模型">
如果你的模型未列出,请在本地拉取该模型,或在 `models.providers.ollama` 中显式定义它。
如果列表中没有你的模型,请在本地拉取该模型,或`models.providers.ollama` 中显式定义它。
```bash
ollama list # 查看已安装内容
@ -967,7 +990,7 @@ OpenClaw 支持 **Ollama Web 搜索**,作为内置 `web_search` 提供商。
</Accordion>
<Accordion title="连接被拒绝">
检查 Ollama 是否运行在正确端口:
检查 Ollama 是否运行在正确端口
```bash
# 检查 Ollama 是否正在运行
@ -980,7 +1003,7 @@ OpenClaw 支持 **Ollama Web 搜索**,作为内置 `web_search` 提供商。
</Accordion>
<Accordion title="远程主机用 curl 可用,但 OpenClaw 不可用">
请从运行 Gateway 网关 的同一台机器和运行时环境中进行验证:
请从运行 Gateway 网关 的同一台机器和运行时环境中验证:
```bash
openclaw gateway status --deep
@ -989,15 +1012,15 @@ OpenClaw 支持 **Ollama Web 搜索**,作为内置 `web_search` 提供商。
常见原因:
- `baseUrl` 指向 `localhost`,但 Gateway 网关 运行在 Docker 或其他主机中
- URL 使用了 `/v1`,这会选择 OpenAI 兼容行为,而不是原生 Ollama。
- 远程主机在 Ollama 需要调整防火墙或局域网绑定设置。
- 模型存在于你笔记本的守护进程中,但不存在于远程守护进程中。
- `baseUrl` 指向 `localhost`,但 Gateway 网关 运行在 Docker 中或另一台主机上
- URL 使用了 `/v1`,这会选择 OpenAI 兼容行为,而不是原生 Ollama。
- 远程主机在 Ollama 需要调整防火墙或局域网绑定设置。
- 模型存在于你笔记本电脑上的守护进程中,但不存在于远程守护进程中。
</Accordion>
<Accordion title="模型将工具 JSON 作为文本输出">
这通常意味着提供商正在使用 OpenAI 兼容模式,或该模型无法处理工具 schema。
这通常意味着 provider 正在使用 OpenAI 兼容模式,或模型无法处理工具 schema。
优先使用原生 Ollama 模式:
@ -1019,7 +1042,7 @@ OpenClaw 支持 **Ollama Web 搜索**,作为内置 `web_search` 提供商。
</Accordion>
<Accordion title="冷启动的本地模型超时">
大型本地模型在开始流式传输前,首次加载可能需要很长时间。请将超时限制在 Ollama 提供商范围内,并可选择要求 Ollama 在轮次之间保持模型已加载:
大型本地模型在开始流式传输前,首次加载可能需要较长时间。请将超时限制在 Ollama provider 作用域内,并可选择要求 Ollama 在轮次之间保持模型已加载:
```json5
{
@ -1040,12 +1063,12 @@ OpenClaw 支持 **Ollama Web 搜索**,作为内置 `web_search` 提供商。
}
```
如果主机本身接受连接的速度较慢,`timeoutSeconds` 也会为该提供商延长受保护的 Undici 连接超时。
如果主机本身接受连接的速度很慢,`timeoutSeconds` 也会延长该 provider 的受保护 Undici 连接超时。
</Accordion>
<Accordion title="大上下文模型太慢或内存耗尽">
许多 Ollama 模型宣称的上下文大小都超过了你的硬件能够轻松运行的范围。原生 Ollama 会使用 Ollama 自己的运行时上下文默认值,除非你设置 `params.num_ctx`。当你希望获得可预测的首 token 延迟时,请同时限制 OpenClaw 的预算和 Ollama 的请求上下文:
<Accordion title="大上下文模型太慢或内存不足">
许多 Ollama 模型宣称的上下文大小,实际上超过了你的硬件能够舒适运行的范围。原生 Ollama 使用 Ollama 自己的运行时上下文默认值,除非你设置 `params.num_ctx`。当你需要可预测的首 token 延迟时,请同时限制 OpenClaw 的预算和 Ollama 的请求上下文:
```json5
{
@ -1067,28 +1090,28 @@ OpenClaw 支持 **Ollama Web 搜索**,作为内置 `web_search` 提供商。
}
```
如果是 OpenClaw 发送了过多提示,请先降低 `contextWindow`。如果是 Ollama 正在加载对机器来说过大的运行时上下文,请降低 `params.num_ctx`。如果生成耗时过长,请降低 `maxTokens`
如果 OpenClaw 发送的提示词过多,请先降低 `contextWindow`。如果 Ollama 加载的运行时上下文对当前机器来说过大,请降低 `params.num_ctx`。如果生成耗时过长,请降低 `maxTokens`
</Accordion>
</AccordionGroup>
<Note>
更多帮助:[故障排除](/zh-CN/help/troubleshooting) 和 [常见问题](/zh-CN/help/faq)。
更多帮助:请参阅 [故障排除](/zh-CN/help/troubleshooting) 和 [常见问题](/zh-CN/help/faq)。
</Note>
## 相关
## 相关内容
<CardGroup cols={2}>
<Card title="模型提供商" href="/zh-CN/concepts/model-providers" icon="layers">
所有提供商、模型引用和故障转移行为概览。
所有提供商、模型引用和故障切换行为的概览。
</Card>
<Card title="模型选择" href="/zh-CN/concepts/models" icon="brain">
如何选择和配置模型。
</Card>
<Card title="Ollama Web 搜索" href="/zh-CN/tools/ollama-search" icon="magnifying-glass">
关于由 Ollama 驱动的网页搜索的完整设置和行为细节。
由 Ollama 驱动的 web search 的完整设置和行为细节。
</Card>
<Card title="配置" href="/zh-CN/gateway/configuration" icon="gear">
完整配置参考。
完整配置参考。
</Card>
</CardGroup>