/api/chat),而不是兼容 OpenAI 的
/v1 端点。支持三种模式:
| 模式 | 使用内容 |
|---|---|
| 云 + 本地 | 可访问的 Ollama 主机,用于提供本地模型以及(如果已登录):cloud 模型 |
| 仅云 | 直接使用 https://ollama.com,不需要本地守护进程 |
| 仅本地 | 可访问的 Ollama 主机,仅使用本地模型 |
ollama-cloud 提供商 ID 进行仅云设置,请参见
Ollama Cloud。当你希望云路由与本地 ollama 提供商分开时,请使用 ollama-cloud/<model> 引用。
规范配置键是 baseUrl。baseURL 也会被接受,以兼容 OpenAI SDK 风格示例,但新配置应使用 baseUrl。
凭证规则
本地和 LAN 主机
本地和 LAN 主机
Loopback、专用网络、
.local 和裸主机名 Ollama URL 不需要真实 bearer token。OpenClaw 会为这些地址使用 ollama-local 标记。远程和 Ollama Cloud 主机
远程和 Ollama Cloud 主机
公共远程主机和
https://ollama.com 需要真实凭证:OLLAMA_API_KEY、凭证配置文件或提供商的 apiKey。对于直接托管使用,优先使用 ollama-cloud 提供商。自定义提供商 ID
自定义提供商 ID
带有
api: "ollama" 的自定义提供商遵循相同规则。例如,指向专用 LAN 主机的 ollama-remote 提供商可以使用 apiKey: "ollama-local";子智能体会通过 Ollama 提供商钩子解析该标记,而不是把它当作缺失凭证处理。agents.defaults.memorySearch.provider 也可以指向自定义提供商 ID,让嵌入使用该 Ollama 端点。凭证配置文件
凭证配置文件
auth-profiles.json 存储某个提供商 ID 的凭证;将端点设置(baseUrl、api、模型、headers、timeouts)放在 models.providers.<id> 中。较旧的扁平文件,例如 { "ollama-windows": { "apiKey": "ollama-local" } },不是运行时格式;openclaw doctor --fix 会将它们重写为规范的 ollama-windows:default API key 配置文件并创建备份。该旧文件中的 baseUrl 值是噪声,应移到提供商配置中。记忆嵌入范围
记忆嵌入范围
Ollama 记忆嵌入的 bearer 凭证仅限用于声明它的主机:
- 提供商级密钥只会发送到该提供商的主机。
agents.*.memorySearch.remote.apiKey只会发送到其远程嵌入主机。- 纯
OLLAMA_API_KEY环境变量值会被视为 Ollama Cloud 约定,默认不会发送到本地/自托管主机。
入门指南
- 新手引导(推荐)
- 手动设置
选择模型
Cloud only 会提示输入 OLLAMA_API_KEY 并建议托管云默认值。Cloud + Local 和 Local only 会提示输入 Ollama 基础 URL,发现可用模型,并在缺少所选本地模型时自动拉取。已安装的 :latest 标签(例如 gemma4:latest)只显示一次,而不会重复显示 gemma4。Cloud + Local 还会检查该主机是否已登录以访问云模型。--custom-base-url 和 --custom-model-id 是可选的;省略它们会使用本地默认主机和建议的 gemma4 模型。通过本地主机使用云模型
Cloud + Local 会通过一个可访问的 Ollama 主机路由本地模型和 :cloud 模型,这是 Ollama 的混合流程,也是你希望同时使用两者时应在设置期间选择的模式。
OpenClaw 会提示输入基础 URL,发现本地模型,并检查 ollama signin 状态。登录后,它会建议托管默认值(kimi-k2.5:cloud、minimax-m2.7:cloud、glm-5.1:cloud、glm-5.2:cloud)。如果未登录,设置会保持仅本地,直到你运行 ollama signin。
对于不使用本地守护进程的仅云访问,请使用 openclaw onboard --auth-choice ollama-cloud,并参见 Ollama Cloud;该路径不需要 ollama signin 或正在运行的服务器:
openclaw onboard 期间显示的云模型列表会从 https://ollama.com/api/tags 实时填充,上限为 500 条,因此选择器会反映当前托管目录。如果 ollama.com 无法访问或在设置时未返回模型,OpenClaw 会回退到其硬编码建议列表,以便新手引导仍能完成。
模型发现(隐式提供商)
当已设置OLLAMA_API_KEY(或凭证配置文件),且既未定义 models.providers.ollama,也未定义另一个带有 api: "ollama" 的自定义提供商时,OpenClaw 会从 http://127.0.0.1:11434 发现模型:
| 行为 | 详细信息 |
|---|---|
| 目录查询 | /api/tags |
| 能力检测 | 尽力通过 /api/show 读取 contextWindow、num_ctx Modelfile 参数和能力(vision/tools/thinking) |
| 视觉模型 | 来自 /api/show 的 vision 能力会将模型标记为支持图像(input: ["text", "image"]) |
| 推理检测 | 可用时使用来自 /api/show 的 thinking 能力;当 Ollama 省略能力时,回退到名称启发式规则(r1、reason、reasoning、think)。无论报告的能力如何,glm-5.2:cloud 和 deepseek-v4-flash|pro:cloud 始终会被视为推理模型。 |
| Token 限制 | maxTokens 默认使用 OpenClaw 的 Ollama 最大 token 上限 |
| 成本 | 所有成本均为 0 |
models 数组设置 models.providers.ollama,或使用带有 api: "ollama" 和非 loopback baseUrl 的自定义提供商,会禁用自动发现;随后必须手动定义模型(参见配置)。指向托管 https://ollama.com 的 models.providers.ollama 条目也会跳过发现,因为 Ollama Cloud 模型由提供商管理。像 http://127.0.0.2:11434 这样的 loopback 自定义提供商仍会计为本地,并保留自动发现。
你可以使用完整引用,例如 ollama/<pulled-model>:latest,而无需手写 models.json 条目;OpenClaw 会实时解析它。对于已登录主机,选择未列出的 ollama/<model>:cloud 引用会使用 /api/show 验证该精确模型,并且只有在 Ollama 确认元数据后才会将其添加到运行时目录;拼写错误仍会作为未知模型失败。
冒烟测试
对于跳过完整智能体工具表面的窄文本探测:--file(接受 PNG/JPEG/WebP;非图像文件会在调用 Ollama 前被拒绝,请使用 openclaw infer audio transcribe 处理音频):
/model ollama/<model> 选择模型是精确的用户选择:如果配置的 baseUrl 无法访问,下一次回复会因提供商错误而失败,而不是静默回退到另一个已配置模型。
隔离的 cron 作业会在启动智能体轮次前添加一项本地安全检查:如果所选模型解析到本地/专用网络/.local Ollama 提供商,并且 /api/tags 无法访问,OpenClaw 会将该运行记录为 skipped,并在错误文本中包含该模型。此端点检查会按主机缓存 5 分钟,因此针对已停止守护进程的重复 cron 作业不会全部启动失败请求。
实时验证:
OPENCLAW_LIVE_OLLAMA_EMBEDDINGS=1,因为
cloud key 可能未授权 /api/embed):
节点本地推理
智能体可以将一个短任务委托给已配对桌面或服务器节点上的 Ollama 模型。prompt 和响应会通过现有已认证的 Gateway 网关/节点连接传递;请求在节点自己的 loopback Ollama 端点(http://127.0.0.1:11434)上运行。
连接节点主机
ollama.models 和 ollama.chat,请再次检查 openclaw nodes pending。/api/tags,检查 /api/show 能力,并在可用时使用
/api/ps 优先排序已加载的模型。它只返回 Ollama 报告为支持聊天(completion 能力)的本地模型 — Ollama Cloud 行和仅 embedding 模型会被排除。每次运行都会禁用模型 thinking,并默认将输出设为 512 个 token(硬上限 8192),除非工具调用请求不同的 maxTokens;某些模型(例如 GPT-OSS)不支持禁用 thinking,可能仍会输出推理 token。
要让 Ollama 在节点上保持运行但不暴露给智能体:
openclaw node restart,或者对于前台会话,停止并重新运行 openclaw node run)。该节点会停止通告 ollama.models 和
ollama.chat;Ollama 本身以及 Gateway 网关的 Ollama provider 不受影响。将该值改回 true 并重启即可重新启用;变更后的命令面可能需要在重新连接后再次通过 openclaw nodes pending 审批。
不经过智能体轮次,直接验证节点命令:
--invoke-timeout 限制节点运行命令的时长;
--timeout 限制整体 Gateway 网关调用,并且应设置得更大。
节点本地推理始终使用节点自己的 loopback 端点 — 它不会复用已配置的远程/cloud models.providers.ollama.baseUrl。节点命令默认可用于 macOS、Linux 和 Windows 节点主机,并且仍受常规节点配对/命令策略约束。
视觉和图像描述
内置 Ollama 插件会将 Ollama 注册为支持图像的媒体理解提供商,因此 OpenClaw 可以通过本地或托管的 Ollama 视觉模型路由显式的图像描述请求和已配置的图像模型默认值。--model 必须是完整的 <provider/model> ref;设置后,infer image describe 会先尝试该模型,而不是对已经支持原生视觉的模型跳过描述。如果调用失败,OpenClaw 可以继续通过 agents.defaults.imageModel.fallbacks;文件/URL 准备错误会在尝试 fallback 之前失败。将 infer image describe 用于 OpenClaw 的图像理解流程和已配置的 imageModel;将 infer model run --file 用于带自定义 prompt 的原始多模态探测。
要让 Ollama 成为入站媒体的默认图像理解提供商:
ollama/<model> ref。裸 imageModel ref,例如
qwen2.5vl:7b,只有当该精确模型列在 models.providers.ollama.models 下且具有
input: ["text", "image"],并且没有其他已配置的图像提供商暴露相同裸 id 时,才会规范化为 ollama/qwen2.5vl:7b;否则请显式使用提供商前缀。
较慢的本地视觉模型可能需要比 cloud 模型更长的图像理解超时,并且如果 Ollama 尝试分配模型完整通告的视觉上下文,可能会在受限硬件上崩溃。请设置能力超时并限制 num_ctx:
image 工具。models.providers.ollama.timeoutSeconds 仍控制正常模型调用的底层 Ollama HTTP 请求保护。
实时验证:
models.providers.ollama.models,请显式标记视觉模型:
/api/show 的视觉能力。
配置
- 基础(隐式发现)
- 显式(手动模型)
- 自定义 base URL
常见配方
将模型 ID 替换为ollama list 或
openclaw models list --provider ollama 中的精确名称。
使用自动发现的本地模型
使用自动发现的本地模型
与 Gateway 网关位于同一台机器上的 Ollama,会自动发现:除非你需要手动模型,否则不要添加
models.providers.ollama 块。带手动模型的 LAN Ollama 主机
带手动模型的 LAN Ollama 主机
contextWindow 是 OpenClaw 的上下文预算;params.num_ctx 会发送给
Ollama。当硬件无法运行模型完整通告的上下文时,请保持二者一致。仅 Ollama Cloud
仅 Ollama Cloud
通过已登录守护进程同时使用 cloud 和本地
通过已登录守护进程同时使用 cloud 和本地
Multiple Ollama hosts
Multiple Ollama hosts
运行多个 Ollama 服务器时使用自定义提供商 ID;每个提供商都有自己的主机、模型、认证和超时设置。OpenClaw 会在调用 Ollama 前移除当前提供商前缀(并回退到裸
ollama/ 前缀),因此 ollama-large/qwen3.5:27b 会以 qwen3.5:27b 到达 Ollama。Lean local model profile
Lean local model profile
一些本地模型可以处理简单提示词,但难以承载完整的智能体工具表面。请先限制工具和上下文,再触碰全局运行时设置:仅当模型或服务器在工具 schema 上会可靠失败时,才使用
compat.supportsTools: false,它会用智能体能力换取稳定性。除非明确需要,localModelLean 会从直接智能体表面移除重量级浏览器、cron、消息、媒体生成、语音和 PDF 工具,并把更大的目录放到工具搜索后面。它不会更改 Ollama 的运行时上下文或思考模式。对于会循环或把预算花在隐藏推理上的小型 Qwen 风格思考模型,请搭配 params.num_ctx 和 params.thinking: false 使用。模型选择
ollama-spark/qwen3:32b,OpenClaw 会在调用 Ollama 前移除该前缀,并发送 qwen3:32b。
对于较慢的本地模型,优先使用提供商作用域的调优,而不是提高整个智能体运行时超时:
timeoutSeconds 覆盖模型 HTTP 请求:连接建立、标头、正文流式传输,以及受保护 fetch 的总中止时间。params.keep_alive 会在原生 /api/chat 请求中作为顶层 keep_alive 转发;当首轮加载时间是瓶颈时,请按模型设置它。
快速验证
127.0.0.1 替换为 baseUrl 主机。如果 curl 可用但 OpenClaw 不可用,请检查 Gateway 网关是否运行在不同的机器、容器或服务账号下。
Ollama Web 搜索
OpenClaw 将 Ollama Web 搜索 内置为web_search 提供商。
| 属性 | 详情 |
|---|---|
| 主机 | 设置时使用 models.providers.ollama.baseUrl,否则使用 http://127.0.0.1:11434;https://ollama.com 直接使用托管 API |
| 认证 | 对已登录的本地主机无需密钥;对于直接 https://ollama.com 搜索或受认证保护的主机,使用 OLLAMA_API_KEY 或已配置的提供商认证 |
| 要求 | 本地/自托管主机必须正在运行并已通过 ollama signin 登录;直接托管搜索需要 baseUrl: "https://ollama.com" 加真实 API 密钥 |
openclaw onboard 或 openclaw configure --section web 期间选择它,或设置:
/api/experimental/web_search 代理,然后回退到同一主机上的托管 /api/web_search 路径;已登录的本地守护进程通常会通过本地代理响应。直接 https://ollama.com 调用始终使用托管的 /api/web_search 端点。
完整设置和行为请参阅 Ollama Web 搜索。
高级配置
Legacy OpenAI-compatible mode
Legacy OpenAI-compatible mode
对 此模式可能不支持同时进行流式传输和工具调用;你可能需要在模型上设置
/v1/chat/completions 后面的代理显式设置 api: "openai-completions":params: { streaming: false }。OpenClaw 在此模式下默认注入 options.num_ctx,这样 Ollama 不会静默回退到 4096 token 上下文。如果你的代理拒绝未知的 options 字段,请禁用它:Context windows
Context windows
对于自动发现的模型,OpenClaw 会使用 按模型设置的
/api/show 报告的上下文窗口,包括来自自定义 Modelfile 的更大 PARAMETER num_ctx 值;否则会回退到 OpenClaw 的默认 Ollama 上下文窗口。提供商级别的 contextWindow、contextTokens 和 maxTokens 会为该提供商下的每个模型设置默认值,并且可以按模型覆盖。contextWindow 是 OpenClaw 自己的提示词/压缩预算。原生 /api/chat 请求会保持 options.num_ctx 未设置,除非你显式设置 params.num_ctx,因此 Ollama 会应用自己的模型、OLLAMA_CONTEXT_LENGTH 或基于 VRAM 的默认值;无效、零、负数或非有限的 params.num_ctx 值会被忽略。如果旧配置只使用 contextWindow/maxTokens 来强制原生请求上下文,请运行 openclaw doctor --fix 将它们复制到 params.num_ctx。OpenAI 兼容适配器仍会默认从已配置的 params.num_ctx 或 contextWindow 注入 options.num_ctx;如果上游拒绝 options,请使用 injectNumCtxForOpenAICompat: false 禁用。原生模型条目还接受 params 下的常见 Ollama 运行时选项,并作为原生 /api/chat options 转发:num_keep、seed、num_predict、top_k、top_p、min_p、typical_p、repeat_last_n、temperature、repeat_penalty、presence_penalty、frequency_penalty、stop、num_batch、num_gpu、main_gpu、use_mmap 和 num_thread。少数键(format、keep_alive、truncate、shift)会作为顶层请求字段转发,而不是嵌套在 options 中。OpenClaw 只会转发这些 Ollama 请求键,因此仅运行时参数(如 streaming)永远不会发送给 Ollama。使用 params.think(或 params.thinking)设置顶层 think;false 会为 Qwen 风格思考模型禁用 API 级思考。agents.defaults.models["ollama/<model>"].params.num_ctx 也可用;如果两者都设置,显式的提供商模型条目优先。Thinking control
Thinking control
OpenClaw 会按 Ollama 预期转发思考:顶层 或设置模型默认值:每个模型的
think,而不是 options.think。如果自动发现的模型在 /api/show 中报告 thinking 能力,则会暴露 /think low、/think medium、/think high 和 /think max;非思考模型只暴露 /think off。params.think/params.thinking 可以为特定模型禁用或强制启用 API
thinking。当活动运行只有隐式的 off 默认值时,OpenClaw 会保留该显式配置;
非 off 的运行时命令(例如 /think medium)仍会覆盖它。truthy
thinking 请求绝不会发送到显式标记为 reasoning: false 的模型;think: false
请求则始终会发送。推理模型
推理模型
名为
deepseek-r1、reasoning、reason 或 think 的模型默认会被视为
具备推理能力,无需额外配置:模型成本
模型成本
Ollama 在本地运行且免费,因此自动发现和手动定义的所有模型成本都是
0。记忆嵌入
记忆嵌入
内置 Ollama 插件会为记忆搜索注册一个记忆嵌入提供商。
它使用已配置的 Ollama 基础 URL 和 API key,调用
查询时嵌入会为要求或推荐检索前缀的模型使用检索前缀:对于远程嵌入主机,请将身份验证限定到该主机:
/api/embed,并在可能时将多个记忆分块批处理为一个
input 请求。当 proxy.enabled=true 时,发送到从已配置 baseUrl 推导出的精确主机本地
local loopback 源的嵌入请求,会使用 OpenClaw 的受保护直连路径,而不是托管转发代理。
已配置的主机名本身必须是 localhost 或 loopback IP 字面量;仅解析到 loopback 的 DNS 名称仍会使用托管代理路径。
LAN、tailnet、私有网络和公共 Ollama 主机始终保留在托管代理路径上,重定向到其他主机/端口也不会继承信任。
proxy.loopbackMode: "proxy" 仍会通过代理路由 loopback 流量;proxy.loopbackMode: "block"
会在连接前拒绝它。请参阅托管代理。| 属性 | 值 |
|---|---|
| 默认模型 | nomic-embed-text |
| 自动拉取 | 是,如果本地不存在 |
| 默认内联并发 | 1(其他提供商默认更高;如果主机可以承受,可用 nonBatchConcurrency 提高) |
nomic-embed-text、qwen3-embedding 和
mxbai-embed-large。文档批次保持原始格式,因此现有索引无需格式迁移。流式传输配置
流式传输配置
Ollama 默认使用原生 API(
/api/chat),它同时支持流式传输和工具调用,无需特殊配置。对于原生请求,thinking 控制会直接转发:/think off 和 openclaw agent --thinking off
会发送顶层 think: false,除非显式配置了 params.think/params.thinking;/think low|medium|high 会发送匹配的 effort 字符串;/think max 会映射到 Ollama 的最高 effort,
即 think: "high"。故障排查
WSL2 崩溃循环(反复重启)
WSL2 崩溃循环(反复重启)
在配备 NVIDIA/CUDA 的 WSL2 上,官方 Ollama Linux 安装程序会创建一个带有
在 Windows 侧,将以下内容添加到 或缩短 keep-alive / 仅在需要时手动启动 Ollama:请参阅 ollama/ollama#11317。
Restart=always 的 ollama.service systemd 单元。如果该服务自动启动,并在 WSL2 启动期间加载 GPU 支持的模型,
Ollama 可能会在加载时占住主机内存;Hyper-V 内存回收并不总能回收这些页面,因此 Windows 可能会终止 WSL2 VM,
systemd 随后重启 Ollama,循环就会重复。证据:WSL2 反复重启/终止、WSL2 启动后 app.slice 或 ollama.service 中 CPU 占用很高,
以及来自 systemd 的 SIGTERM,而不是 Linux OOM killer。当 OpenClaw 检测到 WSL2、启用了带 Restart=always 的 ollama.service,并且存在可见 CUDA 标记时,
会记录启动警告。缓解措施:%USERPROFILE%\.wslconfig,然后运行
wsl --shutdown:未检测到 Ollama
未检测到 Ollama
确认 Ollama 正在运行,已设置
OLLAMA_API_KEY(或身份验证配置档),并且未显式定义
models.providers.ollama:没有可用模型
没有可用模型
在本地拉取模型,或在
models.providers.ollama 中显式定义它:连接被拒绝
连接被拒绝
远程主机可通过 curl 使用,但 OpenClaw 不可用
远程主机可通过 curl 使用,但 OpenClaw 不可用
从运行 Gateway 网关的同一台机器和运行时验证:常见原因:
baseUrl指向localhost,但 Gateway 网关在 Docker 中或另一台主机上运行。- URL 使用
/v1,选择了 OpenAI 兼容行为,而不是原生 Ollama。 - 远程主机需要更改防火墙或 LAN 绑定。
- 模型位于你的笔记本电脑守护进程中,但不在远程守护进程中。
模型将工具 JSON 作为文本输出
模型将工具 JSON 作为文本输出
通常是提供商处于 OpenAI 兼容模式,或模型无法处理工具架构。优先使用原生模式:如果小型本地模型仍然在工具架构上失败,请在该模型条目上设置
compat.supportsTools: false,然后重新测试。Kimi 或 GLM 返回乱码符号
Kimi 或 GLM 返回乱码符号
Hosted Kimi/GLM 响应如果是很长的非语言符号串,会被视为失败的提供商调用,而不是成功回复,
因此会接管正常的重试/回退/错误处理,而不会将损坏文本持久化到会话中。如果问题复现,请捕获模型名称、当前会话文件,以及本次运行使用的是
Cloud + Local 还是 Cloud only,
然后尝试新的会话和一个回退模型:冷启动本地模型超时
冷启动本地模型超时
大型本地模型可能需要较长的首次加载时间。将超时限定到 Ollama 提供商,并可选择在轮次之间保持模型已加载:如果主机本身接受连接较慢,
timeoutSeconds 也会延长该提供商的受保护连接超时。大上下文模型太慢或内存不足
大上下文模型太慢或内存不足
许多模型声明的上下文大于你的硬件可以舒适运行的范围。原生 Ollama 会使用自己的运行时默认值,除非设置了
如果 OpenClaw 发送的 prompt 过多,请降低
params.num_ctx。同时限制 OpenClaw 的预算和 Ollama 的请求上下文,以获得可预测的首个 token 延迟:contextWindow。如果 Ollama 的运行时上下文对该机器过大,
请降低 params.num_ctx。如果生成运行时间过长,请降低 maxTokens。相关内容
Ollama Cloud
使用专用
ollama-cloud 提供商进行仅云端设置。模型提供商
所有提供商、模型引用和故障转移行为的概览。
模型选择
如何选择和配置模型。
Ollama Web 搜索
Ollama 驱动的 Web 搜索的完整设置和行为详情。
配置
完整配置参考。