[AI实战]OpenClaw调用本地模型
[AI实战]OpenClaw部署与调用本地私有模型
一.核心实现效果
二.在Ollama中部署本地模型
2.1.获取模型文件
推荐使用Qwen3.5-0.8B-Q4_K_M.gguf版本,其量化后体积约为500MB,在性能与资源占用间取得了良好平衡。最简部署方式是直接执行ollama run qwen3.5:0.8b命令完成自动拉取与安装。若需加速下载或应对不稳定网络环境,可先行通过下载工具获取该.gguf模型文件。
2.2.创建Modelfile配置文件
首先,将下载的Qwen3.5-0.8B-Q4_K_M.gguf文件置于指定目录,例如/home/openclaw。
随后,在该目录下创建名为Modelfile的关键配置文件。此文件定义了模型加载与对话格式,其内容模板如下:
FROM /home/openclaw/Qwen3.5-0.8B-Q4_K_M.gguf
TEMPLATE """{{- $lastUserIdx := -1 -}}{{- range $idx, $msg := .Messages -}}{{- if eq $msg.Role "user" }}{{ $lastUserIdx = $idx }}{{ end -}}{{- end }}{{- if or .System .Tools }}<|im_start|>system{{ if .System }}{{ .System }}{{- end }}{{- if .Tools }} # Tools You may call one or more functions to assist with the user query. You are provided with function signatures within XML tags:{{- range .Tools }}{"type": "function", "function": {{ .Function }}}{{- end }} For each function call, return a json object with function name and arguments within XML tags:{"name": , "arguments": } { {- end -}}<|im_end|>{{ end }}{{- range $i, $_ := .Messages }}{{- $last := eq (len (slice $.Messages $i)) 1 -}}{{- if eq .Role "user" }}<|im_start|>user{{ .Content }}{{- if and $.IsThinkSet (eq $i $lastUserIdx) }} {{- if $.Think -}}{{- " "}}/think {{- -->- else -}}{{- " "}}/no_think {{- end -}}{{- end }}<|im_end|>{{ else if eq .Role "assistant" }}<|im_start|>assistant{{ if (and $.IsThinkSet (and .Thinking (or $last (gt $i $lastUserIdx)))) -}}{ { .Thinking }} {{ end -}}{{ if .Content }}{{ .Content }}{{- else if .ToolCalls }}{ { range .ToolCalls }}{"name": "{{ .Function.Name }}", "arguments": {{ .Function.Arguments }}}{{ end }} {{ - end }}{{ if not $last }}<|im_end|>{{ end }}{{- else if eq .Role "tool" }}<|im_start|>user{{ .Content }} <|im_end|>{{ end }}{ {- if and (ne .Role "assistant") $last }}<|im_start|>assistant{{ if and $.IsThinkSet (not $.Think) -}} {{ end -}}{{ end }}{{- end }}"""
PARAMETER repeat_penalty 1
PARAMETER stop <|im_start|>
PARAMETER stop <|im_end|>
PARAMETER temperature 0.6
PARAMETER top_k 20
PARAMETER top_p 0.95
2.3.基于Modelfile创建Ollama模型
配置文件就绪后,在终端执行以下命令以创建模型实例。建议启用日志输出,便于实时监控创建过程与排查潜在问题。
#带日志
ollama create Qwen3.5-0.8B -f Modelfile 2>&1 | tee create.log
三.在OpenClaw中配置对接本地Ollama模型
3.1. 通过隐式发现机制对接
为OpenClaw配置使用刚创建的本地模型。最便捷的场景是Ollama与OpenClaw运行于同一主机。此时,正确设置环境变量后,OpenClaw可自动发现Ollama中的模型,无需在配置文件中显式定义models.providers.ollama。本实例对接Qwen3.5-0.8B模型。
-
设置必需的环境变量。此API_KEY值仅为占位符,本地Ollama不验证其内容,但变量必须存在:
export OLLAMA_API_KEY="ollama-local" echo 'export OLLAMA_API_KEY="ollama-local"' >> ~/.bashrc建议将上述命令添加至
~/.bashrc末尾以实现永久生效。 -
在OpenClaw配置文件的
agents部分设定默认模型。编辑~/.openclaw/openclaw.json,在agents对象的defaults配置中,将主模型指向Ollama本地模型:"agents": { "defaults": { // ... 其他默认配置 "model": { "primary": "ollama/Qwen3.5-0.8B" } } }注意模型ID必须遵循
ollama/<你在Ollama中的模型名>格式。随后,在OpenClaw配置文件的末尾添加完整的模型提供者配置。**关键点:**请严格参照以下示例格式,勿添加任何多余字段。
,"models": { "providers": { "ollama": { "baseUrl": "http://localhost:11434", "apiKey": "ollama-local", "api": "ollama", "models": [{ "id": "Qwen3.5-0.8B", "name": "Qwen 3.5 0.8B", "reasoning": false, "input": ["text"], "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }, "contextWindow": 32768, "maxTokens": 32000 }] } } }配置完成后,重启网关服务使更改生效:
openclaw gateway restart -
执行验证命令检查配置状态:
openclaw models list若配置正确,列表中将显示
Qwen3.5-0.8B模型,且其后**不应**出现“missing”标签。出现该标签则表明配置环节存在异常。
3.2. 通过Web界面调用
后台配置验证无误后,即可通过OpenClaw的Web界面进行交互。操作体验与调用云端模型无异,可直接与本地部署的Qwen模型进行对话。
模型选择与硬件考量
模型选型最终取决于本地硬件资源,尤其是GPU显存容量。对于显存有限的设备,优先选用轻量化模型以确保部署流畅度和响应速度。
附录:关键运维命令速查
为便于日常操作与问题排查,汇总核心命令如下:
# Ollama
ollama list # 查看本地模型
ollama create -f Modelfile # 创建模型
ollama rm # 删除模型
ollama --version # 查看版本
# OpenClaw
openclaw gateway restart # 重启网关
openclaw models list # 列出可用模型
openclaw logs # 查看日志





