必须执行端到端推理验证链路:先运行ollama list确认模型存在,再ollama run qwen2:7b输入“你好”获响应;确保ollama serve后台运行,openclaw配置base_url为http://localhost:11434且model_name与列表一致;最后用openclaw test或python脚本调用/api/chat接口,返回非空内容即成功。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

OpenClaw接入Ollama后需验证模型调用链路是否真正打通,不能仅凭日志显示“connected”就认为成功,必须执行一次端到端推理并捕获实际响应内容。
启动Ollama服务并确认模型已加载
在终端中运行 ollama list,检查目标模型(如 qwen2:7b 或 deepseek-r1:14b)是否出现在输出列表中。若为空或报错 no models found,说明模型未拉取或路径异常。
执行 ollama run qwen2:7b(替换为你实际使用的模型名),输入一句简单提问如“你好”,观察是否返回合理文本。这一步失败,后续所有测试都无意义。
【关键前提】 Ollama 必须以服务模式运行:ollama serve,而非仅前台交互式运行;OpenClaw 默认连接 http://localhost:11434,若端口被占或服务未启,将直接超时。
配置OpenClaw指向本地Ollama
打开 OpenClaw 项目根目录下的 config.yaml 或 .env 文件,定位到 LLM 配置段。
确保 llm_provider: ollama,且 base_url: http://localhost:11434 —— 注意不要写成 https 或带尾部斜杠,否则请求会 404。
填写 model_name: qwen2:7b(必须与 ollama list 中显示的名称完全一致,包括版本标签)。
执行最小化测试命令
方法一:使用内置 CLI 测试
运行 openclaw test --model qwen2:7b --prompt "输出JSON格式:{"status":"ok"}"。该命令绕过 UI 和 Agent 循环,直连 Ollama 接口发送单次请求。
若返回含 "status":"ok" 的 JSON 响应,且耗时在 2~8 秒内(取决于模型大小和硬件),说明基础链路通畅。
抓取并分析 OpenClaw JSONL 会话日志,重建并回填代理记忆文件。适用于:(1) 模型切换后记忆不完整,(2) 验证记忆覆盖度,(3) 重建丢失记忆,(4) 通过 cron/heartbeat 自动同步每日记忆。支持简单提取及基于 LLM 的叙事摘要,并自动清理敏感信息。
方法二:Python 脚本手动验证
新建 test_ollama.py,内容如下:
import requests<br>res = requests.post("http://localhost:11434/api/chat", json={<br> "model": "qwen2:7b",<br> "messages": [{"role": "user", "content": "请用中文回答:你叫什么?"}]<br>})<br>print(res.json().get("message", {}).get("content", "空响应"))
执行 python test_ollama.py。出现非空中文回复即通过;若报 ConnectionError,检查 ollama serve 是否后台运行;若报 404,确认 URL 路径是 /api/chat 而非 /chat。
观察沙盒容器内日志输出
第一步:启动 OpenClaw 主服务,例如 docker-compose up -d 或 npm start。
第二步:触发一次任务(如上传一个 .py 文件并要求修复 bug)。
第三步:立即执行 docker logs openclaw-worker-1 2>&1 | grep -i "ollama\|error\|timeout"(容器名依实际部署调整)。
成功标志是日志中出现类似 ollama request sent → response received in 3.2s → parsed message: "已定位问题..." 的连续三段式记录。若只看到 sending to ollama... 后无下文,大概率是网络隔离或 DNS 解析失败——特别是 Docker 容器内访问 localhost 实际指向容器自身,而非宿主机。
【易错点】 在 Docker 环境中,OpenClaw 容器必须能访问宿主机的 11434 端口,需添加 --add-host host.docker.internal:host-gateway 或改用 host.docker.internal:11434 作为 base_url。









