- 你想通过 Ollama 使用云端或本地模型运行 OpenClaw
- 你需要 Ollama 的设置和配置指导
- 你想使用 Ollama 的视觉模型进行图像理解 title: “Ollama”
OpenClaw 通过 Ollama 的原生 API(
/api/chat)进行通信,而不是使用 OpenAI 兼容的
/v1 端点。支持三种模式:
有关使用专用
ollama-cloud provider id 的仅云端设置,请参阅
Ollama Cloud。当你希望云端路由与本地 ollama provider 保持分离时,请使用 ollama-cloud/<model> 引用。
标准配置键是 baseUrl。对于 OpenAI-SDK 风格的示例,也接受 baseURL,但新的配置应使用 baseUrl。
认证规则
本地和局域网主机
本地和局域网主机
回环地址、私有网络、
.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" 的自定义提供方遵循相同规则。例如,指向私有局域网主机的 ollama-remote 提供方可以使用 apiKey: "ollama-local";子代理通过 Ollama 提供方钩子解析该标记,而不是将其视为缺少凭证。memory.search.provider 也可以指向自定义提供方 ID,以便嵌入使用该 Ollama 端点。身份验证配置文件
身份验证配置文件
auth-profiles.json 会为某个 provider id 存储凭证;将端点设置(baseUrl、api、模型、请求头、超时)放在 models.providers.<id> 中。较旧的扁平文件,例如 { "ollama-windows": { "apiKey": "ollama-local" } },不是运行时格式;openclaw doctor --fix 会将它们重写为带备份的规范 ollama-windows:default API 密钥配置文件。该旧文件中的 baseUrl 值只是冗余信息,应移动到提供方配置中。内存嵌入范围
内存嵌入范围
Ollama 内存嵌入的 bearer 认证仅作用于其声明时对应的主机:
- 提供方级密钥仅发送到该提供方的主机。
memory.search.remote.apiKey和每个代理的覆盖设置仅发送到各自的远程嵌入主机。- 纯
OLLAMA_API_KEY环境值会被视为 Ollama Cloud 约定,默认不会发送到本地/自托管主机。
快速开始
- 引导(推荐)
- 手动设置
1
运行引导
/api/show 确认支持工具且上下文窗口至少为 16K 时,
才会自动提供已安装的模型;缺少上下文元数据或上下文窗口较小时,会继续使用手动设置路径。
共享的 CLI/macOS 设置流程仍会通过实际完成请求验证所选路径,然后再保存配置。
此自动检查不会拉取模型;如果没有合适的已安装模型,引导流程会继续进入常规的 Ollama 模型选择器。2
选择模型
Cloud only 会提示输入 OLLAMA_API_KEY 并建议使用托管的云端默认模型。Cloud + Local 和 Local only 会提示输入 Ollama 基础 URL,发现可用模型,并在缺失时自动拉取所选的本地模型。像 gemma4:latest 这样的已安装 :latest 标签只会显示一次,而不会重复显示 gemma4。Cloud + Local 还会检查主机是否已登录以获取云端访问权限。3
验证
--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 发现模型:
models.providers.ollama 并显式提供 models 数组,或者设置了
带有 api: "ollama" 且 baseUrl 不是回环地址的自定义提供方,则会禁用自动发现;
此时模型必须手动定义(见
配置)。指向托管
https://ollama.com 的 models.providers.ollama 条目也会跳过发现,因为 Ollama Cloud 模型由提供方管理。
诸如 http://127.0.0.2:11434 之类的回环自定义提供方仍然被视为本地,并保留自动发现。
你可以直接使用完整引用,例如 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 作业不会都发起失败请求。
实时验证:
/api/embed,可强制启用
OPENCLAW_LIVE_OLLAMA_EMBEDDINGS=1):
节点本地推理
代理可以将一个简短任务委派给配对桌面或服务器节点上的 Ollama 模型。提示词和响应会通过现有的已认证 Gateway/节点连接传输;请求在节点自身的回环 Ollama 端点(http://127.0.0.1:11434)上运行。
1
在节点上启动 Ollama
2
连接节点主机
ollama.models 和 ollama.chat,请再次检查 openclaw nodes pending。3
在代理中使用它
随附的 Ollama 插件提供
node_inference 工具。代理会先调用 action: "discover",然后使用该结果中的节点和模型调用 action: "run"(如果恰好只有一个可用节点已连接,则 run 可以省略节点)。例如:“发现我节点上的 Ollama 模型,然后使用加载速度最快的模型总结这段文本。”/api/tags,检查 /api/show 能力,并在可用时使用 /api/ps 优先对已加载模型排序。它只返回 Ollama 报告为可用于聊天的本地模型(completion 能力)——Ollama Cloud 行和仅支持嵌入的模型会被排除。每次运行都会禁用模型思考,并将输出默认设为 512 个 token(硬上限 8192),除非工具调用请求了不同的 maxTokens;某些模型(例如 GPT-OSS)不支持禁用思考,仍可能输出推理 token。
若要让 Ollama 在节点上持续运行,但不向代理暴露它:
openclaw node restart,或者在前台会话中停止并重新运行 openclaw node run)。节点将停止声明 ollama.models 和 ollama.chat;Ollama 本身以及 Gateway 的 Ollama 提供器不受影响。将该值改回 true 并重启即可重新启用;如果命令面发生变化,重新连接后可能需要再次通过 openclaw nodes pending 批准。
直接验证节点命令,不经过代理轮次:
--invoke-timeout 限制节点执行该命令的最长时间;--timeout 限制 Gateway 调用的总时长,应设置得更大。
节点本地推理始终使用节点自身的回环端点——它不会复用已配置的远程/云端 models.providers.ollama.baseUrl。这些节点命令在 macOS、Linux 和 Windows 节点主机上默认可用,并且仍受常规节点配对/命令策略约束。
视觉与图像描述
捆绑的 Ollama 插件将 Ollama 注册为具备图像能力的 媒体理解提供方,因此 OpenClaw 可以将显式的图像描述 请求以及已配置的图像模型默认值,通过本地或托管的 Ollama 视觉模型进行路由。--model 必须是完整的 <provider/model> 引用;设置后,infer image describe 会优先尝试该模型,而不是在那些已经原生支持视觉的模型上
跳过描述。如果调用失败,OpenClaw 可以继续通过
agents.defaults.imageModel.fallbacks;文件/URL 准备错误会在尝试
回退之前直接失败。将 infer image describe 用于 OpenClaw 的
图像理解流程和已配置的 imageModel;将 infer model run --file 用于带自定义提示词的原始多模态探测。
要让 Ollama 成为入站媒体的默认图像理解提供方:
ollama/<model> 引用。像
qwen2.5vl:7b 这样的裸 imageModel 引用,仅当该精确模型
被列在 models.providers.ollama.models 中并且其
input: ["text", "image"],且没有其他已配置的图像提供方暴露
相同的裸 id 时,才会规范化为 ollama/qwen2.5vl:7b;否则请显式使用
提供方前缀。
较慢的本地视觉模型可能需要比云模型更长的图像理解超时时间,
并且如果 Ollama 尝试分配模型完整标称的视觉上下文,在受限硬件上
可能会崩溃。请设置能力超时并限制 num_ctx:
image 工具。models.providers.ollama.timeoutSeconds 仍然控制
常规模型调用时底层 Ollama HTTP 请求的保护超时。
实时验证:
models.providers.ollama.models,请显式标记视觉模型:
/api/show 的视觉能力。
配置
- 基础(隐式发现)
- 显式(手动模型)
- 自定义 base URL
常见配方
将 model ID 替换为ollama list 或
openclaw models list --provider ollama 中的精确名称。
带自动发现的本地模型
带自动发现的本地模型
与 Gateway 运行在同一台机器上的 Ollama,会自动发现:除非你需要手动模型,否则不要添加
models.providers.ollama 块。局域网中的 Ollama 主机,使用手动模型
局域网中的 Ollama 主机,使用手动模型
contextWindow 是 OpenClaw 的上下文预算;params.num_ctx 会发送给
Ollama。当硬件无法运行模型所宣称的完整上下文时,请保持两者一致。仅 Ollama Cloud
仅 Ollama Cloud
通过已登录的守护进程同时使用云端和本地模型
通过已登录的守护进程同时使用云端和本地模型
多个 Ollama 主机
多个 Ollama 主机
当运行多个 Ollama 服务器时,可使用自定义 provider ID;每个主机都有自己的
host、models、auth 和 timeout。OpenClaw 在调用 Ollama 之前会去掉当前生效的 provider 前缀(若没有则回退为裸
ollama/ 前缀),因此 ollama-large/qwen3.5:27b
传给 Ollama 时会变成 qwen3.5:27b。精简本地模型配置
精简本地模型配置
某些本地模型可以处理简单提示,但在完整的 agent 工具集上表现不佳。请在调整全局运行时设置之前,先限制工具和上下文:仅当模型或服务端在工具 schema 上稳定失败时,才使用
compat.supportsTools: false——它以 agent 能力换取稳定性。
localModelLean 会从直接的 agent 表面移除重量级的浏览器、cron、消息、媒体生成、
语音和 PDF 工具,除非明确需要,否则还会把更大的目录放到 Tool Search 后面。它不会改变 Ollama 的
运行时上下文或 thinking 模式。对于容易循环或将预算花在隐藏推理上的小型 Qwen 风格 thinking 模型,请将它与 params.num_ctx 和
params.thinking: false 配合使用。模型选择
ollama-spark/qwen3:32b,OpenClaw 会在调用 Ollama 之前去掉该前缀,
并将 qwen3:32b 发送给 Ollama。
对于较慢的本地模型,在提升整个
agent 运行时超时之前,优先进行 provider 级别的调优:
timeoutSeconds 覆盖模型的 HTTP 请求:连接建立、headers、
body 流式传输以及整个受保护的 fetch 中止。params.keep_alive 会作为顶层 keep_alive
在原生 /api/chat 请求中转发;当首次加载时间是瓶颈时,请按模型设置它。
快速验证
127.0.0.1 替换为 baseUrl 主机。如果 curl
可以工作但 OpenClaw 不行,请检查 Gateway 是否运行在不同的
机器、容器或服务账号下。
Ollama 网页搜索
OpenClaw 将 Ollama 网页搜索 作为web_search 提供程序捆绑提供。
可在
openclaw onboard 或 openclaw configure --section web 时选择它,或设置:
/api/experimental/web_search
代理,然后回退到同一主机上的托管 /api/web_search 路径;已登录的本地守护进程通常会通过本地代理响应。直接的
https://ollama.com 调用始终使用托管的 /api/web_search 端点。
有关完整设置和行为,请参见 Ollama Web Search。
高级配置
旧版 OpenAI 兼容模式
旧版 OpenAI 兼容模式
对位于 此模式可能不支持流式传输与工具调用同时使用;你可能需要在模型上设置
/v1/chat/completions 后面的代理,显式设置 api: "openai-completions":params: { streaming: false }。OpenClaw 会在此模式下默认注入 options.num_ctx,以免 Ollama 悄悄回退到 4096 token 的上下文。如果你的代理会拒绝未知的 options 字段,请将其禁用:上下文窗口
上下文窗口
对于自动发现的模型,OpenClaw 会使用 每个模型的
/api/show 报告的上下文窗口,包括来自自定义 Modelfiles 的更大 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 也同样可用;如果两者都设置了,则显式的提供方模型条目优先生效。思考控制
思考控制
OpenClaw 会按 Ollama 的预期转发 thinking:顶层 或者设置模型默认值:单个模型的
think,而不是 options.think。自动发现且其 /api/show 报告具有 thinking 能力的模型,会暴露 /think low、/think medium、/think high 和 /think max;不支持 thinking 的模型只会暴露 /think off。params.think/params.thinking 可以为特定模型禁用或强制启用 API thinking。当前运行如果只具有隐式的 off 默认值,OpenClaw 会保留该显式配置;但像 /think medium 这样的非 off 运行时命令仍会覆盖它。对于显式标记为 reasoning: false 的模型,带有真值的 thinking 请求绝不会发送;而 think: false 请求无论如何都会发送。推理模型
推理模型
名为
deepseek-r1、reasoning、reason 或 think 的模型默认会被视为支持 reasoning——无需额外配置:模型成本
模型成本
Ollama 在本地运行且免费,因此自动发现和手动定义的模型的所有成本都为
0。记忆嵌入
记忆嵌入
内置的 Ollama 插件会为 记忆搜索 注册一个记忆嵌入提供方。它使用已配置的 Ollama base URL 和 API key,调用
/api/embed,并在可能时将多个记忆块批量合并为一次 input 请求。当 proxy.enabled=true 时,针对由已配置 baseUrl 派生出的完全主机本地 loopback origin 的嵌入请求,会使用 OpenClaw 受保护的直连路径,而不是托管转发代理。已配置的主机名本身必须是 localhost 或 loopback IP 字面量——仅仅解析到 loopback 的 DNS 名称仍会使用托管代理路径。LAN、tailnet、私有网络和公共 Ollama 主机始终走托管代理路径,重定向到其他主机/端口不会继承信任。proxy.loopbackMode: "proxy" 会让 loopback 流量仍然通过代理路由;proxy.loopbackMode: "block" 会在连接前直接拒绝——参见 托管代理。查询时的 embeddings 会对需要或推荐前缀的模型使用检索前缀:
nomic-embed-text、qwen3-embedding 和 mxbai-embed-large。文档批次保持原始格式,因此现有索引无需格式迁移。嵌入并发和批处理行为由 Ollama
记忆提供方负责。对于远程嵌入主机,请使用受支持的
remote.baseUrl 和 remote.apiKey 字段,以便将身份验证限定在该
主机:流式传输配置
流式传输配置
Ollama 默认使用 原生 API(
/api/chat),它支持流式传输与工具调用同时进行——无需特殊配置。对于原生请求,思考控制会直接转发:/think off
和 openclaw agent --thinking off 会发送顶层 think: false,除非
配置了显式的 params.think/params.thinking;/think low|medium|high 会发送匹配的工作量字符串。经过验证的全工作量
Ollama Cloud 系列(例如 GLM 5.2 和 DeepSeek V4)还会针对 /think max
发送原生的 think: "max";其他模型和本地服务器则保留兼容的
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 虚拟机,systemd 再次重启 Ollama,如此循环往复。证据:WSL2 反复重启/终止,WSL2 启动后 app.slice 或 ollama.service 中 CPU 占用很高,并且是来自 systemd 的 SIGTERM,而不是 Linux OOM killer。当 OpenClaw 检测到 WSL2、已启用 ollama.service 且 Restart=always,并且存在可见的 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 兼容模式,或者模型无法处理工具 schema。优先使用原生模式:如果某个小型本地模型仍然在工具 schema 上失败,请在该模型条目上设置
compat.supportsTools: false 并重新测试。Kimi 或 GLM 返回乱码符号
Kimi 或 GLM 返回乱码符号
对于托管的 Kimi/GLM 返回的较长、非语言性的符号串,会被视为提供方调用失败,而不是成功回复,因此会触发正常的重试/回退/错误处理,而不是将损坏的文本持久写入会话。如果问题反复出现,请捕获模型名称、当前会话文件,以及该次运行是否使用了
Cloud + Local 或 Cloud only,然后尝试新会话和一个回退模型:冷启动本地模型超时
冷启动本地模型超时
大型本地模型首次加载可能需要很长时间。将超时时间限定到 Ollama 提供方,并可选地在轮次之间保持模型加载:如果主机本身接受连接很慢,
timeoutSeconds 也会为该提供方延长受保护的连接超时时间。大上下文模型太慢或内存不足
大上下文模型太慢或内存不足
许多模型声明的上下文比你的硬件能舒适运行的还要大。原生 Ollama 会使用自己的运行时默认值,除非设置了 如果 OpenClaw 发送的提示词过多,请降低
params.num_ctx。为了获得可预测的首 token 延迟,请同时限制 OpenClaw 的预算和 Ollama 的请求上下文:contextWindow。如果 Ollama 的运行时上下文对机器来说太大,请降低 params.num_ctx。如果生成时间过长,请降低 maxTokens。更多帮助: Troubleshooting 和 FAQ。
相关内容
Ollama Cloud
仅云端设置,使用专用的
ollama-cloud 提供方。Model providers
所有提供方、模型引用和故障切换行为的概览。
模型选择
如何选择和配置模型。
Ollama Web Search
基于 Ollama 的网页搜索的完整设置与行为细节。
配置
完整配置参考。