OpenClaw 接 Ollama 本地模型配置走通了,虾崽子为什么还是不说话?
小龙虾🦞OpenClaw 个人实践 · B-15
本地模型系列 · 从配置到踩坑全记录 · 信息截至 2026 年 4 月
OpenClaw 接 Ollama 本地模型配置走通了,虾崽子为什么还是不说话?
适合想用本地模型省 API 费的 OpenClaw 用户 · 踩坑三连发,提前打预防针
Ollama 跑得好好的,命令行一输,模型回答流畅。
然后打开 OpenClaw,发条消息,等了十秒——
打字的转圈圈还在转,回复一个字没有。
这不是你配错了。至少,不完全是。
OpenClaw 接 Ollama 本地模型,是 2026 年最常被问到的配置问题之一。表面看起来只是填几个地址,实际上坑连着坑。这篇把配置流程和三个主要的坑都写清楚,希望你能少踩一个。
为什么有人想接本地模型
先说动机。OpenClaw 本身不烧钱,但它调用的模型要烧。用 Claude Sonnet 跑 Agent 任务,一个复杂的工作流下来,几毛到几块人民币很正常。量大了,月底账单不好看。
Ollama 的逻辑是:在本机上运行开源模型,不走任何云端 API,调用成本为零。把它和 OpenClaw 接起来,理论上就能实现一个零 API 成本、数据不出本机的 Agent 工作流。
理论上确实诱人。实际落地的时候,有一些东西需要讲清楚。
📌 关系说清楚:OpenClaw 是 Agent 的执行和编排引擎,负责接消息、跑工具、管理工作流。Ollama 是本地模型服务,负责推理和生成文本。两者的分工是:OpenClaw 决定”做什么”,Ollama 决定”怎么说”。
先看自己的机器能跑什么
在配置之前,先确认硬件,否则后面配了也白配
本地模型的核心瓶颈是显存(VRAM)或统一内存。模型要整个加载进内存才能跑,跑不下就是跑不下,没有弹性。
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
截至 2026 年 4 月,基于 Ollama 官方建议与社区测试数据
关于 Mac 的统一内存:M 系列芯片的内存是 CPU 和 GPU 共享的。一台 16GB 内存的 MacBook,实际可用给 Ollama 的量不是 16GB 全部,要减去系统和其他程序占用的部分,实际能稳定跑 7B 左右。
关于模型选型:如果你纯粹是想省钱、对话质量要求不极致,Qwen3.5 系列是目前对 OpenClaw 工具调用兼容性最好的选择,比 Mistral 或老版 Llama 系列稳定得多。
⚠️ 注意:OpenClaw 做 Agent 任务时,对上下文窗口有硬性要求。模型的上下文窗口至少需要 16k tokens,低于这个值,Agent 会直接拒绝启动。官方文档建议本地模型使用至少 64k 的上下文窗口。3B 的小模型通常上下文窗口较短,这是限制之一。
配置流程:两种路径选一种
路径 A 最省事,推荐新手;路径 B 适合想精细控制的人
路径 A:用 Ollama 一键启动(推荐)
2026 年 3 月之后,Ollama 成为 OpenClaw 的官方集成提供商,推出了一条最简启动命令:
ollama launch openclaw这一条命令会按顺序做完以下所有事:
① 拉取 OpenClaw(如果没装)
② 配置 Ollama 为模型提供商
③ 让你选一个本地模型
④ 安装 Gateway 守护进程
⑤ 自动打开 OpenClaw TUI
如果你想指定模型,可以加参数:
ollama launch openclaw --model qwen3.5:27b💡 历史说明:OpenClaw 早期叫 Clawdbot,命令 ollama launch clawdbot 目前仍可使用,是兼容别名。
路径 B:手动配置 openclaw.json
如果你已经装好了 OpenClaw,想手动接入 Ollama,编辑 ~/.openclaw/openclaw.json,加入以下配置:
{ "models": { "providers": { "ollama": { "api": "ollama", "apiKey": "ollama-local", "baseUrl": "http://127.0.0.1:11434", "models": [ { "id": "qwen3.5:27b", "name": "Qwen3.5 27B", "contextWindow": 131072, "maxOutput": 8192, "reasoning": false, "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 } } ] } } }, "agents": { "defaults": { "model": { "primary": "ollama/qwen3.5:27b" } } } }16GB 显存建议把 contextWindow 改为 32768
配完之后,先验证 Ollama 是不是真的在跑:
# 确认 Ollama 服务在运行 curl http://localhost:11434/api/tags # 确认目标模型已拉取 ollama list两条命令都有正常输出,再去开 OpenClaw。
踩坑预警:三个最常见的沉默失败
用”沉默失败”来形容,是因为这些问题基本没有明显报错,就是不工作
坑一:用了 /v1 端点,工具调用全部哑火
症状:能聊天,但让虾崽子做任何实际操作(搜索、读文件、写代码)都没反应,或者回复一段关于”我将会如何帮你搜索”的说明文字,而不是真的去搜
这是最容易踩的坑,原因在于 Ollama 支持两种 API 格式:
• 原生 Ollama API:http://127.0.0.1:11434
• OpenAI 兼容端点:http://127.0.0.1:11434/v1
很多教程和配置示例写的是 /v1 结尾的地址,因为它是 OpenAI 格式的,看起来更”通用”。但 OpenClaw 的官方文档明确写道:不要对 OpenClaw 使用 /v1 端点。
❌ 为什么 /v1 会让工具调用哑火
OpenClaw 通过工具调用来执行任务。使用 /v1 的 OpenAI 兼容层时,Ollama 对工具调用的处理存在问题:模型会把工具调用的 JSON 作为普通文本输出,而不是真正触发工具执行。表现出来就是虾崽子”说它在搜索”但实际没有搜索。
✅ 正确配置
在 openclaw.json 里,baseUrl 写 不带 /v1 的原生地址,api 字段写 "ollama":
"baseUrl": "http://127.0.0.1:11434", "api": "ollama"
坑二:上下文窗口识别错误,Agent 直接拒绝启动
症状:TUI 里看到 tokens ?/4.1k,发消息收到报错”Model context window too small (4096 tokens). Minimum is 16000″
这是一个已经在 GitHub 记录在案的 Bug(Issue #24068)。具体表现是:你的模型实际上支持 32768 或更大的上下文,但 OpenClaw 识别到的却是 4096,然后直接拒绝启动 Agent。
触发条件是:通过”自定义提供商”方式配置,并且用的是 /v1 端点。Ollama 通过原生 API 暴露的上下文窗口信息,经过 OpenAI 兼容层转换后会丢失,回落到默认的 4096。
✅ 解决方案
在 models 数组里,手动显式写明 contextWindow,别让 OpenClaw 自己去探测:
{ "id": "qwen3.5:27b", "contextWindow": 131072, <-- 显式写,别省略 "maxOutput": 8192 }
16GB 显存建议写 32768;24GB+ 显存可以写 131072(128K)
坑三:流式传输 Bug,连接看起来正常但就是不回复
症状:Ollama CPU 跑到 50%,OpenClaw 打字指示符一直转,等一分钟,超时,没有输出
这是目前已知最难绕开的问题,记录在 OpenClaw GitHub Issue #5769 和 #31577,状态是已知未完全修复的回归问题。
根本原因是:OpenClaw 默认用流式传输(streaming)请求模型,这对云端提供商(Anthropic、OpenAI)是正常的。但 Ollama 在本地流式传输工具调用时,有概率无法正确返回 tool_calls 的增量数据块,结果就是请求卡在那里,啥都出不来。
这个 Bug 的特征是:Ollama 单独跑是正常的,接上 OpenClaw 就挂。
当前社区的缓解方案:
① 在模型配置里加 "reasoning": false,关闭推理链(Qwen 系列开了思维链有时会卡)
② 换 Qwen3.5 系列——它们对 OpenClaw 工具调用格式的兼容性比 Llama/Mistral 系列稳定
③ 保持 Ollama 版本最新,官方正在持续修这个问题
④ 如果 Docker 环境下运行 OpenClaw,确认 Ollama 地址用的是 host.docker.internal:11434,而不是 127.0.0.1(容器里的 127 指向容器本身,不是宿主机)
⚠️ 坦率说一句
这个 Bug 在 2026 年 4 月还没有完全修好。如果你把以上方案全试了还是卡,不是你配错了,是这个问题在上游层面还没彻底解决。下面的”适合/不适合”部分会提到另一种思路。
本地模型适合做什么,不适合做什么
接 Ollama 之后,你会发现聊天是流畅的,但让 Agent 干活(执行工具、联网搜索、操作文件)会明显比云端模型失败率高。这不完全是配置问题——是当前本地模型工具调用能力的真实水位。
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
基于社区测试数据,截至 2026 年 4 月
所以最务实的用法,是混合模式:本地模型处理简单对话和代码阅读,云端模型处理需要工具执行的任务。在 OpenClaw 里可以手动切换:
# TUI 里切换模型 /model ollama/qwen3.5:27b # 切回本地 /model anthropic/claude-sonnet-4-6 # 切云端或者在 openclaw.json 里配置主模型和推理模型分离——平时走本地,遇到复杂任务走云端。一个月下来,API 费用能省 60% 到 70%,但不会省到零。
Docker 部署 OpenClaw 的额外坑
如果你是用 Docker 跑 OpenClaw 的,上面三个坑之外还要再踩这些
Docker 容器有自己的网络命名空间。容器里写的 127.0.0.1 指的是容器自身,不是你的宿主机。Ollama 跑在宿主机上,容器用 127.0.0.1:11434 是访问不到的。
Docker 坑一:127.0.0.1 找不到 Ollama
症状:OpenClaw 容器里报连接被拒绝,但宿主机上 curl localhost:11434 是通的
根据你的系统,解法不一样:
• macOS / Windows(Docker Desktop):把 baseUrl 里的地址换成 host.docker.internal,Docker Desktop 会自动把这个域名解析到宿主机
• Linux:host.docker.internal 默认不可用,需要额外处理(见下方)
# openclaw.json — macOS / Windows Docker Desktop { "models": { "providers": { "ollama": { "api": "ollama", "apiKey": "ollama-local", "baseUrl": "http://host.docker.internal:11434" } } } }注意:不带 /v1,保持原生 Ollama 端点
Docker 坑二:Linux 上 host.docker.internal 不通
症状:macOS 上照方子配好了,搬到 Linux 服务器上又不通了
Linux 版 Docker 不像 Docker Desktop,不会自动创建 host.docker.internal 这个域名。有两种解法:
方案 A:启动容器时手动注入 host-gateway
# docker run 启动时加这个 flag docker run --add-host=host.docker.internal:host-gateway \ your-openclaw-image方案 B:docker-compose.yml 里加 extra_hosts
services: openclaw: image: openclaw/openclaw:latest extra_hosts: - "host.docker.internal:host-gateway" environment: - OLLAMA_API_KEY=ollama-local方案 C:让 OpenClaw 容器直接用宿主机网络(最省事,也有安全权衡)
# 容器直接共享宿主机网络栈,这时 127.0.0.1 就是宿主机 docker run --network=host your-openclaw-image方案 C 最简单,但会让容器共享宿主机所有端口,生产环境酌情使用
Docker 坑三:Ollama 默认只监听 127.0.0.1,容器访问不到
症状:加了 host.docker.internal 配置,还是 Connection refused
容器里能解析到宿主机 IP 了,但 Ollama 服务本身只监听 127.0.0.1,不接受来自容器的连接请求。需要让 Ollama 监听 0.0.0.0(所有接口)。
# 设置环境变量,让 Ollama 监听所有接口 export OLLAMA_HOST=0.0.0.0 # 然后重启 Ollama ollama serve如果是 systemd 服务方式运行的 Ollama,在服务文件里加:
# /etc/systemd/system/ollama.service 的 [Service] 段 [Service] Environment="OLLAMA_HOST=0.0.0.0" # 改完记得 reload sudo systemctl daemon-reload sudo systemctl restart ollama⚠️ 安全提示
把 Ollama 设成 0.0.0.0 意味着同一局域网内的其他设备也能访问你的 Ollama 服务。如果是家里的开发机,通常没有问题。如果是云服务器,需要配合防火墙规则,只对特定 IP 或只对 Docker 网段开放 11434 端口。
Docker 环境下的验证方法
配完之后,进容器里手动 curl 一下,确认连通性,再开 OpenClaw:
# 进入 OpenClaw 容器内 docker exec -it <openclaw容器ID> sh # 从容器内部测试 Ollama 连通性 curl http://host.docker.internal:11434/api/tags # 应该看到模型列表的 JSON,而不是 Connection refused📋 Docker 部署清单(按顺序检查)
① Ollama 已设置 OLLAMA_HOST=0.0.0.0 并重启
② openclaw.json 的 baseUrl 用 host.docker.internal:11434(不带 /v1)
③ Linux 系统已加 extra_hosts: host.docker.internal:host-gateway
④ 容器内 curl 测试通过
⑤ 模型 contextWindow 在 config 里显式写明
成本账单参考
本地模型的”零成本”有几个隐性条件:
• 你需要一台够格的机器。如果为了跑 27B 专门买一块 24GB 显存的 GPU,成本不小。
• 电费不是零。一台机器 7×24 小时挂载推理,一个月电费在 ¥30–100 之间,取决于 TDP 和你的电价。
• 调试时间不是零。这篇文章本身就是证明。
如果你已经有合适的机器、对隐私要求高、或者纯粹出于折腾的乐趣——本地路径值得走。如果你的核心目标是省钱,先算一下:适量 Agent 任务用 DeepSeek V3 或 Gemini Flash,一个月的 API 费用可能不到 ¥30。
云端低价模型参考(截至 2026 年 4 月)
• DeepSeek V3.2:约 ¥2 / 百万 tokens 输入
• Gemini Flash:有免费额度,1500 次请求/天
• Claude Haiku 4.5:约 ¥7 / 百万 tokens 输入
“Ollama 里模型说话,OpenClaw 里模型沉默” 这个问题本质上不是配置问题,是工具调用标准在 Ollama 生态里还没真正稳定落地。
配置流程本身不难,难的是接上之后发现工作流里大半的 Agent 操作不可靠——这需要心理预期管理。
现阶段比较实用的方式:本地模型做对话和代码理解,云端模型做工具执行。不要为了省几十块 API 费,把整个 Agent 工作流踩进一个未完全修好的 Bug 里。
如果你踩到了其他没提到的坑,欢迎在评论区说——这篇文章会更新的。
你目前的 OpenClaw + 本地模型状态是?
A. 还没配,正在研究
B. 配完了,正在踩坑
C. 踩完坑,放弃了
D. 跑起来了,分享一下你的配置
#OpenClaw #Ollama #本地模型 #AI Agent #虾崽子 #LLM本地部署
—— 夜猫子弦月 · MeowClaw Lab ——
白天写代码,晚上写文章,偶尔弹古琴
小龙虾🦞OpenClaw 实践系列 · B-15
夜雨聆风