乐于分享
好东西不私藏

〖OpenClaw系列〗接入本地模型:Ollama/LM Studio

〖OpenClaw系列〗接入本地模型:Ollama/LM Studio

上篇回顾

第12篇〖OpenClaw系列〗模型故障切换与多模型策略我们建立了完整的 Fallback 机制:当云端模型故障时,自动切换到备用模型。但 Fallback 链的最后一环——本地模型——才是真正实现完全自主可控的关键。

本文将解决:

  1. 如何在本地运行开源大模型
  2. 如何让 OpenClaw 无缝接入本地模型
  3. 如何构建「云端+本地」混合架构

为什么需要本地模型

三大核心场景

场景
痛点
本地模型解决方案
数据隐私
敏感数据不能上云
完全本地推理,数据不出境
成本控制
API 调用费用累积
一次性硬件投入,零后续成本
离线环境
网络不稳定/无网络
纯离线可用,无依赖

把表格里的痛点与方案画出来,对比更直观:

性能对比(参考值)

模型
云端延迟
本地延迟(Mac M3)
本地延迟(RTX 4090)
llama3.1 8B
500-800ms
200-400ms
50-100ms
qwen2.5 14B
600-1000ms
500-800ms
150-250ms
deepseek-r1 32B
1-2s
2-4s
500ms-1s

结论:本地小模型(<14B)延迟可媲美甚至超越云端。


Ollama 安装与配置

什么是 Ollama

Ollama 是本地运行大模型的最简单方案:

  • 一行命令安装
  • 一键下载模型
  • 提供 OpenAI 兼容 API
  • 支持 macOS/Linux/Windows

Ollama 在本地的运行架构

在动手装之前,先把 Ollama 是怎么跑起来的看一遍——这样后面的命令你才知道对应到哪一块:

Ollama 把”模型管理 + 推理服务”封装成一个本地 daemon,对外暴露一个 OpenAI 兼容端口(默认 11434),OpenClaw 通过这个端口像调用云端模型一样调用本地模型——这就是为什么后面只需要把 baseURL 指向 http://localhost:11434 就能接进来。

安装 Ollama

# macOS
brew install ollama

# Linux
curl -fsSL https://ollama.com/install.sh | sh

# Windows
# 下载安装包: https://ollama.com/download/windows

验证安装:

ollama --version
# 输出: ollama version 0.4.x

下载模型

# 下载 Llama 3.1 (8B,适合入门)
ollama pull llama3.1

# 下载 Qwen 2.5 (14B,中文友好)
ollama pull qwen2.5:14b

# 下载 DeepSeek R1 (推理模型)
ollama pull deepseek-r1:14b

# 查看已安装模型
ollama list

启动 Ollama 服务

# 前台启动(调试时使用)
ollama serve

# 验证服务状态
curl http://localhost:11434/api/tags

预期输出:

{
"models": [
    {
"name""llama3.1:latest",
"model""llama3.1:latest",
"size"4661224676,
"digest""sha256:..."
    }
  ]
}

OpenClaw 配置 Ollama

基础配置

{
  models: {
    providers: {
      ollama: {
        baseUrl: "http://127.0.0.1:11434",
        // Ollama 默认无需 API Key,如需可配置:
        // apiKey: "${OLLAMA_API_KEY}"
      }
    }
  },
  agents: {
    defaults: {
      model: {
        primary: "anthropic/claude-sonnet-4-6",
        fallbacks: [
          "openai/gpt-5.2",
          "ollama/llama3.1"   // 本地模型兜底
        ]
      },
      // 允许使用本地模型
      models: {
        "anthropic/claude-sonnet-4-6": {},
        "openai/gpt-5.2": {},
        "ollama/llama3.1": {
          alias: "local"
        }
      }
    }
  }
}

远程 Ollama(局域网/服务器)

{
  models: {
    providers: {
      ollama: {
        // 远程 Ollama 服务器
        baseUrl: "http://192.168.1.100:11434"
      }
    }
  }
}

注意:远程 Ollama 需设置环境变量允许跨域:

export OLLAMA_ORIGINS="*"
export OLLAMA_HOST="0.0.0.0:11434"
ollama serve

配置验证

# 验证配置语法
openclaw config validate

# 查看模型目录(应包含 Ollama 模型)
openclaw models list

# 测试本地模型连接
openclaw doctor

LM Studio 集成方案

什么是 LM Studio

LM Studio 是带图形界面的本地模型管理工具:

  • 可视化模型下载/管理
  • 一键启动本地推理服务器
  • 支持 GGUF 格式模型
  • 内置 Chat 界面测试

Ollama 与 LM Studio 的”卖点”对照如下:

安装与配置

  1. 下载安装

    # macOS
    brew install --cask lm-studio

    # 或官网下载: https://lmstudio.ai
  2. 下载模型

    • 打开 LM Studio
    • 进入 “Discover” 标签
    • 搜索并下载模型(如 Qwen/Qwen2.5-7B-Instruct-GGUF
  3. 启动本地服务器

    • 切换到 “Local Server” 标签
    • 选择模型
    • 点击 “Start Server”
    • 默认地址:http://localhost:1234

OpenClaw 配置 LM Studio

LM Studio 提供 OpenAI 兼容 API:

{
  models: {
    providers: {
      // 将 LM Studio 配置为 openai 兼容 provider
      lmstudio: {
        baseUrl: "http://localhost:1234/v1",
        apiKey: "lm-studio",  // 任意值,LM Studio 不验证
        api: "openai-completions"
      }
    }
  },
  agents: {
    defaults: {
      model: {
        primary: "anthropic/claude-sonnet-4-6",
        fallbacks: [
          "lmstudio/qwen2.5-7b"  // LM Studio 模型
        ]
      },
      models: {
        "lmstudio/qwen2.5-7b": {
          alias: "local-lm"
        }
      }
    }
  }
}

本地模型性能优化

硬件要求参考

模型规模
显存需求
推荐硬件
适用场景
7B-8B
6-8 GB
RTX 3060 / M1 Pro
日常对话
13B-14B
12-16 GB
RTX 4070 / M2 Max
复杂任务
32B+
24GB+
RTX 4090 / A100
高质量推理

把这张表立起来看,就是一道由低到高的硬件阶梯:

Ollama 优化参数

# 设置环境变量优化性能

# 使用 GPU 加速(默认自动检测)
export OLLAMA_GPU_LAYERS=999

# 限制并发请求数
export OLLAMA_NUM_PARALLEL=1

# 设置上下文长度
export OLLAMA_CONTEXT_LENGTH=8192

# 启动服务
ollama serve

模型量化选择

量化降低显存占用,但会损失精度:

量化等级
显存节省
质量损失
推荐场景
Q4_0
75%
明显
资源极度受限
Q5_K_M
65%
轻微
平衡选择
Q6_K
55%
极小
质量优先
Q8_0
45%
几乎无
性能充足

显存占用与精度损失的权衡,画出来一目了然:

# 下载特定量化版本
ollama pull qwen2.5:14b-q5_k_m

纯离线环境部署

场景:完全隔离的内网环境

┌─────────────────────────────────────────────────────────┐
│                    离线服务器/内网                         │
│  ┌──────────────┐      ┌──────────────┐                  │
│  │   OpenClaw   │◄────►│    Ollama    │                  │
│  │   Gateway    │      │   Server     │                  │
│  └──────────────┘      └──────┬───────┘                  │
│                               │                         │
│                      ┌────────┴────────┐                 │
│                      │  本地模型文件    │                 │
│                      │  (预下载)       │                 │
│                      └─────────────────┘                 │
└─────────────────────────────────────────────────────────┘

离线部署步骤

  1. 联网机器准备模型

    # 下载模型
    ollama pull llama3.1
    ollama pull nomic-embed-text

    # 查看模型文件位置
    # macOS: ~/.ollama/models
    # Linux: /usr/share/ollama/.ollama/models
    # Windows: C:\Users\<user>\.ollama\models
  2. 复制模型文件到离线机器

    # 打包模型
    tar -czf ollama-models.tar.gz ~/.ollama/models

    # 传输到离线机器并解压
  3. 离线机器配置

    # 安装 Ollama(离线安装包)
    # 复制模型文件到对应目录

    # 启动服务
    ollama serve
  4. OpenClaw 离线配置

    {
      // 完全离线配置,无云端依赖
      models: {
        providers: {
          ollama: {
            baseUrl: "http://localhost:11434"
          }
        }
      },
      agents: {
        defaults: {
          model: "ollama/llama3.1",
          models: {
            "ollama/llama3.1": {},
            "ollama/qwen2.5:14b": {}
          }
        }
      }
    }

高级配置

按 Agent 配置本地模型

{
  agents: {
    list: [
      {
        id: "offline-assistant",
        name: "离线助手",
        // 完全使用本地模型
        model: "ollama/qwen2.5:14b",
        workspace: "./workspace-offline"
      },
      {
        id: "coding",
        name: "编程助手",
        // 云端优先,本地兜底
        model: {
          primary: "anthropic/claude-opus-4-6",
          fallbacks: ["ollama/deepseek-coder-v2"]
        }
      }
    ]
  }
}

本地 Embedding 模型

Ollama 也支持 Embedding 模型,用于记忆搜索:

{
  agents: {
    defaults: {
      // 本地 Embedding 模型
      imageModel: {
        primary: "ollama/nomic-embed-text"
      },
      memorySearch: {
        embedding: {
          provider: "ollama",
          model: "nomic-embed-text"
        }
      }
    }
  }
}

模型自动发现

OpenClaw 启动时会自动探测 Ollama 服务:

[INFO] 发现 Ollama 服务: http://localhost:11434
[INFO] 可用本地模型:
       - llama3.1 (8B, context: 128k)
       - qwen2.5:14b (14B, context: 128k)
       - deepseek-r1:14b (14B, context: 64k)

踩坑

坑1:Ollama 连接失败

现象openclaw doctor 显示 Ollama 不可达

排查

# 1. 检查 Ollama 服务状态
curl http://localhost:11434/api/tags

# 2. 检查配置中的 baseUrl
openclaw config get models.providers.ollama.baseUrl

# 3. 检查防火墙(远程连接时)
telnet 192.168.1.100 11434

常见原因

  • Ollama 服务未启动
  • baseUrl 配置了 /v1 后缀(Ollama 原生 API 不需要)
  • 远程连接时未设置 OLLAMA_HOST

坑2:模型响应质量差

现象:本地模型回答明显比云端差

解决

# 1. 确认模型正确加载
ollama ps

# 2. 尝试更大参数版本
ollama pull qwen2.5:32b  # 替代 7b/14b

# 3. 调整 temperature(通过 OpenClaw 配置)
{
  agents: {
    defaults: {
      models: {
"ollama/llama3.1": {
          params: {
            temperature: 0.7
          }
        }
      }
    }
  }
}

坑3:显存不足导致崩溃

现象:Ollama 进程被杀或响应极慢

排查

# 查看显存使用
nvidia-smi  # NVIDIA
gputop      # Apple Silicon

# 查看系统内存
free -h

解决

# 使用量化版本
ollama pull llama3.1:8b-q4_0  # 更低显存占用

# 或切换到 CPU 推理
export OLLAMA_GPU_LAYERS=0
ollama serve

坑4:Fallback 到本地模型时上下文丢失

现象:云端模型故障后切换到本地模型,对话上下文被重置

原因:不同模型的上下文窗口大小不同,OpenClaw 可能触发裁剪

缓解

{
  agents: {
    defaults: {
      models: {
        "ollama/llama3.1": {
          // 确保本地模型上下文足够大
          params: {
            max_tokens: 8192
          }
        }
      }
    }
  }
}

FAQ

Q1: Ollama 和 LM Studio 应该选哪个?

维度
Ollama
LM Studio
易用性
⭐⭐⭐ 命令行
⭐⭐⭐⭐⭐ 图形界面
模型来源
Ollama 官方库
HuggingFace 任意 GGUF
API 稳定性
⭐⭐⭐⭐⭐
⭐⭐⭐⭐
生产部署
推荐
适合开发测试
资源占用
较高

建议:生产环境用 Ollama,探索/测试用 LM Studio。

Q2: 本地模型能完全替代云端吗?

取决于场景:

场景
本地可行性
推荐方案
日常对话
✅ 完全可以
7B-14B 本地模型
代码生成
⚠️ 部分可以
32B+ 或云端
复杂推理
❌ 困难
云端大模型
长文档处理
⚠️ 受限于显存
云端或量化模型

Q3: 如何监控本地模型性能?

# Ollama 内置统计
curl http://localhost:11434/api/ps

# 查看 GPU 利用率
watch -n 1 nvidia-smi

# OpenClaw 日志查看响应时间
openclaw logs -f | grep "model.*response"

Q4: 可以在同一台机器运行多个本地模型吗?

可以,但受限于显存。Ollama 会自动管理:

# Ollama 会自动卸载不活跃的模型
# 调整超时时间
export OLLAMA_KEEP_ALIVE="5m"# 5分钟后卸载

完整配置示例

混合部署生产配置

{
  // 模型提供商配置
  models: {
    providers: {
      anthropic: {
        baseUrl: "https://api.anthropic.com",
        apiKey: "${ANTHROPIC_API_KEY}"
      },
      openai: {
        baseUrl: "https://api.openai.com",
        apiKey: "${OPENAI_API_KEY}"
      },
      ollama: {
        baseUrl: "http://localhost:11434"
      }
    }
  },

  // Agent 配置
  agents: {
    defaults: {
      // 主模型 + 完整 Fallback 链
      model: {
        primary: "anthropic/claude-sonnet-4-6",
        fallbacks: [
          "anthropic/claude-haiku-4-5",
          "openai/gpt-5.2",
          "ollama/qwen2.5:14b"   // 本地兜底
        ]
      },
      // 允许使用的模型白名单
      models: {
        "anthropic/claude-opus-4-6": { alias: "smart" },
        "anthropic/claude-sonnet-4-6": { alias: "balanced" },
        "anthropic/claude-haiku-4-5": { alias: "fast" },
        "openai/gpt-5.2": { alias: "backup" },
        "ollama/qwen2.5:14b": { alias: "local" }
      },
      // 本地 Embedding
      memorySearch: {
        embedding: {
          provider: "ollama",
          model: "nomic-embed-text"
        }
      }
    },
    list: [
      {
        id: "offline",
        name: "离线模式",
        model: "ollama/llama3.1",
        workspace: "./workspace-offline"
      }
    ]
  }
}

总结

本文深入讲解了 OpenClaw 接入本地模型的完整方案:

能力
要点
Ollama 集成 baseUrl: http://localhost:11434

,自动发现模型
LM Studio 集成
OpenAI 兼容 API,baseUrl: http://localhost:1234/v1
性能优化
量化选择、GPU 层数、上下文长度调整
离线部署
预下载模型、内网传输、纯离线运行
混合架构
云端优先 + 本地兜底,平衡质量与成本

关键认知:本地模型不是云端的替代品,而是互补的伙伴——云端负责高质量,本地负责高可用。


下一篇预告

第14篇:多 Agent 配置与工作区隔离

本地模型让多 Agent 架构更具可行性:

  • 为不同 Agent 配置专属本地模型
  • 工作区隔离实现数据分离
  • Agent 间协作与通信机制
  • 构建「个人 AI 团队」

本文是系列第13篇。你已掌握 OpenClaw 接入本地完整方案,可以构建真正自主可控的 AI 系统。


📌 觉得有用?点个「在看」 👇 👨‍💻 关注「敏叔侃技术」,每周更新 OpenClaw 实战干货 ⭐ 收藏这篇文章,作为本地模型部署的完整指南