复制成功
请遵守本站许可
REPORT
Chapter_Post // Field_Report

Post_Ref: RL-如何使用本地模型

2026.04.08

如何使用本地模型连接Openclaw

Echo HaoRan
Echo HaoRan
#技术手册
ANALYSIS

概述#

OpenClaw 是一个开源的个人 AI 助理平台,支持多种模型提供商,包括云端模型(OpenAI、Claude 等)和本地模型(Ollama、vLLM 等)。使用本地模型连接 OpenClaw 可以带来以下优势:

  • 隐私安全:数据不离开本地,适合处理敏感信息
  • 成本控制:无需支付 API 费用,一次性硬件投入
  • 离线可用:无网络依赖,适合内网环境
  • 低延迟:本地推理,响应速度快
  • 可定制:支持自定义模型和微调

本文详细介绍如何配置 OpenClaw 使用本地模型。


本地模型方案对比#

方案优点缺点适用场景
Ollama安装简单,模型丰富,社区活跃性能相对较低快速体验、个人使用
vLLM性能优异,支持高并发配置复杂,需要技术背景生产环境、高并发
Llama.cpp轻量级,支持多平台功能相对简单资源受限环境
LocalAI兼容 OpenAI API,易于集成性能一般需要兼容 OpenAI 的场景
Text-Generation-WebUIWeb 界面友好,功能丰富资源占用高交互式使用

使用 Ollama 连接 OpenClaw#

安装和配置 Ollama#

安装 Ollama#

PRTCL // BASH
Terminal window
# ========== 安装 Ollama ==========
# macOS 使用 Homebrew 包管理器安装
brew install ollama
# Linux 使用官方安装脚本自动安装
curl -fsSL https://ollama.ai/install.sh | sh
# Windows 需要手动下载安装包
# 访问 https://ollama.ai/download 下载安装

启动 Ollama 服务#

PRTCL // BASH
Terminal window
# ========== 启动和验证 Ollama 服务 ==========
# 启动 Ollama 服务(默认监听 11434 端口)
ollama serve
# 验证服务是否正常运行,返回已下载的模型列表
curl http://localhost:11434/api/tags

下载模型#

PRTCL // BASH
Terminal window
# ========== 下载和管理模型 ==========
# 下载 Llama 3.2 3B 模型(轻量级,适合入门)
ollama pull llama3.2:3b
# 下载通义千问 7B 模型(中文能力强)
ollama pull qwen2.5:7b
# 下载 Mistral 7B 模型(开源友好,性能平衡)
ollama pull mistral:7b
# 查看已下载的所有模型列表
ollama list

配置 OpenClaw#

创建配置文件#

OpenClaw 的模型配置文件位于 ~/.openclaw/config/models.yaml

PRTCL // YAML
# ========== OpenClaw 模型配置文件 ==========
# 定义可用的模型提供商
providers:
# Ollama 本地模型配置
- name: "ollama" # 提供商名称
type: "local" # 类型:本地模型
baseUrl: "http://localhost:11434" # Ollama 服务地址
api: "openai-completions" # API 兼容类型
models: # 模型列表
# Llama 3.2 3B 模型配置
- id: "ollama/llama3.2:3b" # 模型唯一标识
name: "Llama 3.2 3B" # 模型显示名称
capabilities: # 模型能力
- "text" # 支持文本生成
- "code" # 支持代码生成
config: # 模型参数配置
temperature: 0.7 # 温度参数(控制随机性)
top_p: 0.9 # 核采样概率
max_tokens: 2048 # 最大生成 token 数
# 通义千问 7B 模型配置
- id: "ollama/qwen2.5:7b" # 模型唯一标识
name: "通义千问 7B" # 模型显示名称
capabilities: # 模型能力
- "text" # 支持文本生成
- "code" # 支持代码生成
- "tool" # 支持工具调用
config: # 模型参数配置
temperature: 0.7 # 温度参数
top_p: 0.9 # 核采样概率
max_tokens: 4096 # 最大生成 token 数
# Mistral 7B 模型配置
- id: "ollama/mistral:7b" # 模型唯一标识
name: "Mistral 7B" # 模型显示名称
capabilities: # 模型能力
- "text" # 支持文本生成
- "code" # 支持代码生成
config: # 模型参数配置
temperature: 0.7 # 温度参数
top_p: 0.9 # 核采样概率
max_tokens: 2048 # 最大生成 token 数
# 默认使用的模型
defaultModel: "ollama/qwen2.5:7b"

使用环境变量#

如果需要动态配置,可以使用环境变量:

PRTCL // YAML
# ========== 使用环境变量的动态配置 ==========
providers:
- name: "ollama" # 提供商名称
type: "local" # 类型:本地模型
# 使用环境变量 OLLAMA_BASE_URL,默认值为 localhost:11434
baseUrl: "${OLLAMA_BASE_URL:http://localhost:11434}" # 动态配置服务地址
api: "openai-completions" # API 兼容类型
models: # 模型列表
# 使用环境变量 DEFAULT_MODEL,默认值为 llama3.2:3b
- id: "ollama/${DEFAULT_MODEL:llama3.2:3b}" # 动态配置模型 ID
name: "默认模型" # 模型显示名称
capabilities: # 模型能力
- "text" # 支持文本生成
- "code" # 支持代码生成

测试连接#

PRTCL // BASH
Terminal window
# ========== 测试连接 ==========
# 测试 Ollama 服务是否正常运行(返回模型列表)
curl http://localhost:11434/api/tags
# 测试 OpenClaw 与 Ollama 的连接状态
openclaw model test ollama/llama3.2:3b
# 测试模型推理功能(发送"你好"并获取回复)
openclaw model chat ollama/llama3.2:3b "你好"

Docker 部署#

如果 OpenClaw 使用 Docker 部署,需要确保容器能够访问宿主机的 Ollama 服务:

PRTCL // YAML
# ========== Docker Compose 配置文件 ==========
# 定义 Docker Compose 版本
version: '3.8'
# 定义服务列表
services:
# OpenClaw 服务配置
openclaw:
image: openclaw/openclaw:latest # 使用最新版本的 OpenClaw 镜像
container_name: openclaw # 容器名称
restart: unless-stopped # 重启策略:除非手动停止
ports: # 端口映射
- "3000:3000" # 将容器 3000 端口映射到宿主机 3000 端口
volumes: # 挂载卷配置
- ./workspace:/home/node/.openclaw/workspace # 工作空间
- ./config:/home/node/.openclaw/config # 配置文件
environment: # 环境变量
- NODE_ENV=production # 运行环境:生产环境
extra_hosts: # 额外的主机配置
- "host.docker.internal:host-gateway" # 允许容器访问宿主机
networks: # 网络配置
- openclaw-net # 使用 openclaw-net 网络
# Ollama 服务配置
ollama:
image: ollama/ollama:latest # 使用最新版本的 Ollama 镜像
container_name: ollama # 容器名称
restart: unless-stopped # 重启策略:除非手动停止
ports: # 端口映射
- "11434:11434" # 将容器 11434 端口映射到宿主机 11434 端口
volumes: # 挂载卷配置
- ollama_data:/root/.ollama # 模型数据持久化存储
environment: # 环境变量
- OLLAMA_HOST=0.0.0.0 # 监听所有网络接口
networks: # 网络配置
- openclaw-net # 使用 openclaw-net 网络
# 定义网络
networks:
openclaw-net: # 网络名称
driver: bridge # 使用桥接网络驱动
# 定义数据卷
volumes:
ollama_data: # Ollama 数据卷名称

OpenClaw 配置文件需要使用 Docker 网络中的服务名:

PRTCL // YAML
# ========== Docker 网络中的 OpenClaw 配置 ==========
providers:
- name: "ollama" # 提供商名称
type: "local" # 类型:本地模型
# 使用 Docker 网络中的服务名作为地址
baseUrl: "http://ollama:11434" # Ollama 服务地址(Docker 网络中)
api: "openai-completions" # API 兼容类型
models: # 模型列表
- id: "ollama/llama3.2:3b" # 模型唯一标识
name: "Llama 3.2 3B" # 模型显示名称
capabilities: # 模型能力
- "text" # 支持文本生成
- "code" # 支持代码生成

使用 vLLM 连接 OpenClaw#

安装 vLLM#

PRTCL // BASH
Terminal window
# ========== 安装 vLLM ==========
# 使用 pip 安装 Python 包
pip install vllm
# 或使用 Docker 拉取预构建镜像
docker pull vllm/vllm-openai:latest

启动 vLLM 服务#

本地安装#

PRTCL // BASH
Terminal window
# ========== 启动 vLLM 服务器(本地安装) ==========
# 使用 Python 模块方式启动 vLLM OpenAI 兼容 API 服务器
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Llama-3.2-3B-Instruct \ # 指定模型路径或名称
--host 0.0.0.0 \ # 监听所有网络接口
--port 8000 \ # 监听端口
--dtype auto \ # 自动选择数据类型
--max-model-len 4096 # 最大模型长度(上下文窗口)

Docker 部署#

PRTCL // BASH
Terminal window
# ========== 使用 Docker 部署 vLLM ==========
# 运行 vLLM 容器
docker run --gpus all \ # 使用所有 GPU
-p 8000:8000 \ # 端口映射:宿主机 8000 -> 容器 8000
--name vllm \ # 容器名称
vllm/vllm-openai:latest \ # 镜像名称
--model meta-llama/Llama-3.2-3B-Instruct \ # 模型路径或名称
--host 0.0.0.0 \ # 监听所有网络接口
--port 8000 # 容器内监听端口

配置 OpenClaw#

PRTCL // YAML
# ========== OpenClaw 配置 vLLM ==========
providers:
- name: "vllm" # 提供商名称
type: "openai" # 类型:OpenAI 兼容
baseUrl: "http://localhost:8000/v1" # vLLM 服务地址
apiKey: "dummy-key" # API 密钥(vLLM 不需要真实密钥)
models: # 模型列表
- id: "vllm/Llama-3.2-3B-Instruct" # 模型唯一标识
name: "Llama 3.2 3B (vLLM)" # 模型显示名称
capabilities: # 模型能力
- "text" # 支持文本生成
- "code" # 支持代码生成
config: # 模型参数配置
temperature: 0.7 # 温度参数
top_p: 0.9 # 核采样概率
max_tokens: 2048 # 最大生成 token 数

性能优化#

PRTCL // BASH
Terminal window
# ========== vLLM 性能优化 ==========
# 启用张量并行(多 GPU 场景)
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Llama-3.2-70B-Instruct \ # 使用 70B 大模型
--tensor-parallel-size 2 \ # 张量并行大小(使用 2 个 GPU)
--gpu-memory-utilization 0.9 # GPU 内存利用率(90%)
# 启用量化(降低内存占用,提升速度)
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Llama-3.2-3B-Instruct \ # 模型路径
--quantization awq # 使用 AWQ 量化方法
# 调整批处理大小(提升吞吐量)
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Llama-3.2-3B-Instruct \ # 模型路径
--max-num-batched-tokens 4096 # 最大批处理 token 数

使用 LocalAI 连接 OpenClaw#

安装 LocalAI#

PRTCL // BASH
Terminal window
# ========== 使用 Docker 安装 LocalAI ==========
# 运行 LocalAI 容器
docker run -d \ # 后台运行
--gpus all \ # 使用所有 GPU
-p 8080:8080 \ # 端口映射:宿主机 8080 -> 容器 8080
-v $PWD/models:/models \ # 挂载模型目录
--name localai \ # 容器名称
localai/localai:latest # 镜像名称

下载模型#

PRTCL // BASH
Terminal window
# ========== 下载模型文件 ==========
# 进入模型目录
cd models
# 从 Hugging Face 下载模型文件(使用 wget)
wget https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF/resolve/main/llama-2-7b-chat.Q4_K_M.gguf

配置 OpenClaw#

PRTCL // YAML
# ========== OpenClaw 配置 LocalAI ==========
providers:
- name: "localai" # 提供商名称
type: "openai" # 类型:OpenAI 兼容
baseUrl: "http://localhost:8080/v1" # LocalAI 服务地址
apiKey: "dummy-key" # API 密钥(LocalAI 不需要真实密钥)
models: # 模型列表
- id: "localai/llama-2-7b-chat" # 模型唯一标识
name: "Llama 2 7B (LocalAI)" # 模型显示名称
capabilities: # 模型能力
- "text" # 支持文本生成
- "code" # 支持代码生成

模型路由配置#

OpenClaw 支持根据任务类型自动选择模型:

基于任务类型的路由#

PRTCL // YAML
~/.openclaw/config/router.yaml
# ========== 基于任务类型的路由配置 ==========
router:
enabled: true # 启用路由功能
strategy: "task-type" # 路由策略:基于任务类型
rules: # 路由规则列表
# 编码任务规则
- condition: "task.type == 'coding'" # 条件:任务类型为编码
model: "ollama/codellama:7b" # 使用 Code Llama 7B
priority: 10 # 优先级(数字越大优先级越高)
# 写作任务规则
- condition: "task.type == 'writing'" # 条件:任务类型为写作
model: "ollama/llama3.2:3b" # 使用 Llama 3.2 3B
priority: 9 # 优先级
# 分析任务规则
- condition: "task.type == 'analysis'" # 条件:任务类型为分析
model: "ollama/qwen2.5:7b" # 使用通义千问 7B
priority: 8 # 优先级
# 默认规则(当其他规则都不匹配时使用)
- default: "ollama/llama3.2:3b" # 默认使用 Llama 3.2 3B

基于复杂度的路由#

PRTCL // YAML
# ========== 基于任务复杂度的路由配置 ==========
router:
enabled: true # 启用路由功能
strategy: "complexity" # 路由策略:基于任务复杂度
rules: # 路由规则列表
# 低复杂度任务(复杂度 < 3)
- condition: "task.complexity < 3" # 条件:复杂度小于 3
model: "ollama/llama3.2:3b" # 使用 Llama 3.2 3B(轻量级)
priority: 10 # 优先级
# 中等复杂度任务(3 <= 复杂度 < 7)
- condition: "task.complexity >= 3 and task.complexity < 7" # 条件:复杂度在 3-7 之间
model: "ollama/qwen2.5:7b" # 使用通义千问 7B(平衡)
priority: 8 # 优先级
# 高复杂度任务(复杂度 >= 7)
- condition: "task.complexity >= 7" # 条件:复杂度大于等于 7
model: "ollama/llama3.2:70b" # 使用 Llama 3.2 70B(高性能)
priority: 6 # 优先级
# 默认规则
- default: "ollama/llama3.2:3b" # 默认使用 Llama 3.2 3B

混合模式(本地 + 云端)#

PRTCL // YAML
# ========== 混合模式配置(本地模型 + 云端模型) ==========
providers:
# ========== 本地模型配置 ==========
- name: "ollama" # 提供商名称
type: "local" # 类型:本地模型
baseUrl: "http://localhost:11434" # Ollama 服务地址
api: "openai-completions" # API 兼容类型
models: # 模型列表
- id: "ollama/llama3.2:3b" # 模型唯一标识
name: "Llama 3.2 3B" # 模型显示名称
capabilities: # 模型能力
- "text" # 支持文本生成
- "code" # 支持代码生成
# ========== 云端模型配置(用于复杂任务) ==========
- name: "openai" # 提供商名称
type: "openai" # 类型:OpenAI API
baseUrl: "https://api.openai.com/v1" # OpenAI API 地址
apiKey: "${OPENAI_API_KEY}" # API 密钥(从环境变量读取)
models: # 模型列表
- id: "gpt-4o" # 模型唯一标识
name: "GPT-4o" # 模型显示名称
capabilities: # 模型能力
- "text" # 支持文本生成
- "image" # 支持图像处理
- "tool" # 支持工具调用
# ========== 路由配置 ==========
router:
enabled: true # 启用路由功能
rules: # 路由规则列表
# 低复杂度任务使用本地模型
- condition: "task.complexity < 5" # 条件:复杂度小于 5
model: "ollama/llama3.2:3b" # 使用本地 Llama 3.2 3B
priority: 10 # 优先级(高)
# 高复杂度任务使用云端模型
- condition: "task.complexity >= 5" # 条件:复杂度大于等于 5
model: "gpt-4o" # 使用云端 GPT-4o
priority: 8 # 优先级
# 包含图像的任务使用云端模型
- condition: "task.has_image" # 条件:任务包含图像
model: "gpt-4o" # 使用云端 GPT-4o
priority: 10 # 优先级(高)
# 默认使用本地模型
- default: "ollama/llama3.2:3b" # 默认使用本地 Llama 3.2 3B

性能优化#

模型选择策略#

任务类型推荐模型原因
简单对话3B 模型快速响应,资源占用低
代码生成Code Llama专门优化代码能力
中文理解Qwen 2.5中文能力强
长文本Llama 3.2 70B上下文长,能力强
生产环境vLLM性能优异,高并发

并发优化#

PRTCL // YAML
# ========== 并发优化配置 ==========
# Ollama 配置(环境变量)
environment:
- OLLAMA_NUM_PARALLEL=4 # 并发请求数(同时处理的请求数量)
- OLLAMA_MAX_LOADED_MODELS=3 # 最大加载模型数(内存中保持的模型数量)

缓存优化#

PRTCL // YAML
# ========== 缓存优化配置 ==========
# 启用模型保活(避免频繁加载 / 卸载模型)
environment:
- OLLAMA_KEEP_ALIVE=30m # 模型保活时间(30 分钟)
# 启用 KV Cache(减少重复计算,提升性能)
environment:
- OLLAMA_KV_CACHE_TYPE=q8_0 # KV Cache 类型(使用 8-bit 量化)

GPU 加速#

PRTCL // BASH
Terminal window
# ========== GPU 加速配置 ==========
# 检查 GPU 使用情况
nvidia-smi
# 多 GPU 配置(使用 GPU 0 和 1)
docker run --gpus '"device=0,1"' ...
# GPU 分配(指定使用特定 GPU)
docker run --gpus all \
--gpus '"device=0"' \
--shm-size=16g \
...

监控与调试#

监控资源使用#

PRTCL // BASH
Terminal window
# ========== 监控资源使用 ==========
# Ollama 资源监控
nvidia-smi # 查看 GPU 使用情况
top # 查看 CPU 和内存使用情况
# vLLM 资源监控
nvidia-smi # 查看 GPU 使用情况
curl http://localhost:8000/metrics # 查看 vLLM 性能指标

查看日志#

PRTCL // BASH
Terminal window
# ========== 查看服务日志 ==========
# Ollama 日志(实时查看)
tail -f ~/.ollama/logs/server.log
# vLLM 日志(Docker 部署)
docker logs -f vllm
# OpenClaw 日志
openclaw logs -f

性能测试#

PRTCL // PYTHON
# ========== 性能测试脚本 ==========
import time
import requests
def test_latency(model, prompt="你好"):
"""
测试模型响应延迟
Args:
model: 模型名称
prompt: 测试提示词
Returns:
( 延迟时间, 响应结果 )
"""
start = time.time() # 记录开始时间
response = requests.post( # 发送 POST 请求
"http://localhost:11434/api/generate", # API 端点
json={
"model": model, # 模型名称
"prompt": prompt, # 提示词
"stream": False # 非流式输出
}
)
end = time.time() # 记录结束时间
return end - start, response.json() # 返回延迟和响应
# 测试多个模型的性能
models = ["llama3.2:3b", "qwen2.5:7b", "mistral:7b"]
for model in models:
latency, result = test_latency(model) # 测试延迟
print(f"{model}: {latency:.2f}s") # 输出结果

故障排查#

连接失败#

症状:OpenClaw 无法连接到本地模型

解决方案

PRTCL // BASH
Terminal window
# ========== 排查连接失败问题 ==========
# 检查服务状态(验证 Ollama 是否正常运行)
curl http://localhost:11434/api/tags
# 检查防火墙设置(开放 11434 端口)
sudo ufw allow 11434
# 检查配置文件(确认配置正确)
cat ~/.openclaw/config/models.yaml
# 测试连接(验证 OpenClaw 与 Ollama 的连接)
openclaw model test ollama/llama3.2:3b

性能问题#

症状:响应速度慢

解决方案

PRTCL // BASH
Terminal window
# ========== 解决性能问题 ==========
# 检查 GPU 使用情况(确认 GPU 是否被正确使用)
nvidia-smi
# 使用量化模型(降低内存占用,提升速度)
ollama pull llama3.2:3b-q4_K_M
# 减少并发数(降低系统负载)
export OLLAMA_NUM_PARALLEL=1
# 使用 vLLM 替代 Ollama(vLLM 性能更优)

内存不足#

症状:程序崩溃

解决方案

PRTCL // BASH
Terminal window
# ========== 解决内存不足问题 ==========
# 使用更小的模型(减少内存占用)
ollama pull llama3.2:3b
# 使用量化模型(进一步降低内存占用)
ollama pull llama3.2:3b-q4_K_M
# 增加 swap 空间(使用磁盘作为虚拟内存)
sudo fallocate -l 4G /swapfile # 创建 4GB swap 文件
sudo chmod 600 /swapfile # 设置权限
sudo mkswap /swapfile # 格式化为 swap
sudo swapon /swapfile # 启用 swap

最佳实践#

  • 选择合适的模型:根据任务复杂度选择模型大小
  • 使用量化模型:在精度和性能之间找到平衡
  • 配置模型路由:根据任务类型自动选择模型
  • 启用 GPU 加速:大幅提升推理速度
  • 监控资源使用:及时发现问题
  • 定期备份数据:防止数据丢失
  • 使用混合模式:简单任务用本地,复杂任务用云端
  • 优化并发配置:根据硬件调整并发数
  • 启用缓存:减少重复计算
  • 定期更新:获取最新功能和修复

相关资源#


最后更新: 2026-03-24 作者: EchoHaoRan

关于我#

项目内容
编辑echowang
来源echospace
邮箱echohaoran@gmail.com
简介AI 爱好者,专注于大语言模型应用与智能体开发,分享技术与实践心得
社交欢迎交流讨论,共同成长
R P
Rhine Lab Pioneer Division
Auth_Verified: 2026.04.08
// END OF POST

订阅

通过 RSS 订阅本站,新文章发布时第一时间收到通知。

Follow
Classified
Chapter_06
Protocol_Ref: CC-BY-NC-SA-4.0

如何使用本地模型连接Openclaw

Author: CHONGXIReleased: 2026.04.08

Licensed under CC BY-NC-SA 4.0

评论

© 2025-2026 EchoSpace
Powered by Astro & echohaoran Non-Collaborative_Entity // Protocol_V.4.21