OpenClaw + Ollama:在 macOS 上部署本地大模型的完整实践指南

**摘要**:本文详细记录了在 MacBook Pro(M1 Pro / 32GB)上,通过 Ollama 部署本地大模型并接入 OpenClaw AI 平台的全过程。涵盖环境准备、Ollama 安装与模型拉取、OpenClaw 配置修改、模型性能基准测试,以及本地模型与 OpenClaw 的通信架构原理。

 一、背景与目标

1.1 为什么要本地部署?

| 维度                  | 云端 API                                       | 本地部署                      |

|----------------------|---------------------------------------------|-------------------------------|

| **隐私性**         | ⚠️ 数据上传到云端                       | ✅ 数据完全不出本机  |

| **网络依赖**     | 需要稳定网络 + 可能需要代理      | 无需网络,离线可用   |

| **延迟**            | 100-500ms 网络延迟                    | ~0ms 网络延迟            |

| **成本**            | 按 token 计费                                | 一次下载,永久免费推理 |

| **模型规模**     | 无限制                                          | 受限于本地硬件                |

1.2 硬件环境

| 项目      | 配置                                                            |

|------------|---------------------------------------------------------|

| **设备** | MacBook Pro (2021)                                  |

| **芯片** | Apple M1 Pro(10核 CPU + 16核 GPU) |

| **内存** | 32GB 统一内存(CPU/GPU 共享)          |

| **存储** | 1TB SSD                                                   |

| **系统** | macOS Sonoma 14.5                                |

1.3 软件环境

| 组件 | 版本 |

|--------------------|-----------------|

| **OpenClaw** | v2026.2.15 |

| **Ollama**      | v0.16.1        |

| **Node.js**     | v22.x           |

| **pnpm**        | v10.x           |

二、Ollama 安装与模型准备

2.1 安装 Ollama

推荐使用 Homebrew 安装,便于后续升级管理:

```bash # 安装 Homebrew(如果尚未安装) /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # 通过 Homebrew 安装 Ollama brew install --cask ollama # 验证安装 ollama --version # 输出: ollama version is 0.16.1

> **提示**:国内网络环境下,可使用清华/中科大镜像安装 Homebrew:

> ```bash > /bin/bash -c "$(curl -fsSL https://mirrors.ustc.edu.cn/misc/brew-install.sh)" > ```

 2.2 拉取模型

根据硬件条件(32GB 统一内存),选择以下两个模型:

```bash # 模型 1:gpt-oss:20b(13GB,支持推理链) ollama pull gpt-oss:20b # 模型 2:qwen3-coder(18GB,擅长编程和中文) ollama pull qwen3-coder ```

2.3 验证模型可用性

```bash # 查看已下载的模型 ollama list # 输出: # NAME ID SIZE MODIFIED # gpt-oss:20b xxxxxxxxxxxx 13 GB 2 hours ago # qwen3-coder:latest xxxxxxxxxxxx 18 GB 2 hours ago # 快速测试 ollama run gpt-oss:20b "Say hello" ```

### 2.4 验证 API 端点

Ollama 启动后会在 `127.0.0.1:11434` 提供服务,同时暴露 OpenAI 兼容 API:

# 测试 Ollama API curl http://127.0.0.1:11434/api/tags | python3 -m json.tool # 测试 OpenAI 兼容端点 curl http://127.0.0.1:11434/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-oss:20b", "messages": [{"role":"user","content":"Hello"}], "stream": false, "max_tokens": 50 }'

三、OpenClaw 配置修改

将本地 Ollama 模型接入 OpenClaw,总共需要修改 **2 个文件、4 处配置**。

3.1 配置文件总览

``` ~/.openclaw/ ├── openclaw.json ← 主配置文件(改 3 处) │ ├── auth.profiles["ollama:default"] ← ① 认证声明 │ ├── models.providers.ollama ← ② 模型提供商定义 │ └── agents.defaults.model ← ③ 默认模型 + 回退链 │ └── agents/main/agent/ └── auth-profiles.json ← 密钥文件(改 1 处) └── profiles["ollama:default"] ← ④ 认证凭据 ```

3.2 修改主配置文件 `~/.openclaw/openclaw.json`

 ① 新增认证 Profile

在 `auth.profiles` 中添加 Ollama 的认证声明:

```json { "auth": { "profiles": { "zai:default": { "provider": "zai", "mode": "api_key" }, "ollama:default": { "provider": "ollama", "mode": "api_key" } } } } ```

 ② 新增模型提供商

在 `models.providers` 中添加 Ollama 提供商及模型定义:

```json { "models": { "mode": "merge", "providers": { "ollama": { "baseUrl": "http://127.0.0.1:11434/v1", "api": "openai-completions", "models": [ { "id": "gpt-oss:20b", "name": "GPT-OSS 20B (Local)", "reasoning": true, "input": ["text"], "contextWindow": 131072, "maxTokens": 8192 }, { "id": "qwen3-coder", "name": "Qwen3 Coder (Local)", "reasoning": false, "input": ["text"], "contextWindow": 131072, "maxTokens": 8192 } 

**关键字段说明**:

| 字段                    | 值                                       | 说明                                                     |

|------------------------|------------------------------------|---------------------------------------------------|

| `baseUrl`             | `http://127.0.0.1:11434/v1` | Ollama 的 OpenAI 兼容 API 端点       |

| `api`                    | `openai-completions`          | 使用 OpenAI Chat Completions 协议 |

| `reasoning`          | `true` / `false`                     | 模型是否支持推理链(thinking)        |

| `contextWindow` | `131072`                             | 最大上下文窗口(tokens)                 |

| `maxTokens`       | `8192`                                 | 单次生成最大 token 数                        |

③ 设置默认模型与回退策略

在 `agents.defaults` 中配置模型优先级:

```json { "agents": { "defaults": { "model": { "primary": "ollama/gpt-oss:20b", "fallbacks": ["ollama/qwen3-coder", "zai/glm-4.5-air"] }, "models": { "ollama/gpt-oss:20b": { "alias": "GPT-OSS 20B (Local)" }, "ollama/qwen3-coder": { "alias": "Qwen3 Coder (Local)" }, "zai/glm-4.5-air": {} } } } }

模型回退链**:

gpt-oss:20b (本地) → qwen3-coder (本地) → glm-4.5-air (云端智谱) 主模型 第一备用 第二备用(兜底)

 3.3 修改密钥文件 `~/.openclaw/agents/main/agent/auth-profiles.json`

 ④ 新增 Ollama 认证条目

```json { "version": 1, "profiles": { "ollama:default": { "type": "api_key", "provider": "ollama", "key": "ollama" } } } ```

**说明**:Ollama 本地运行无需真实 API Key,但 OpenClaw 框架要求每个 provider 都有认证条目,此处 `key` 填写任意非空字符串即可。

3.4 重启 Gateway 使配置生效

```bash # 停止现有 Gateway openclaw gateway stop # 清除旧的会话记录(避免 Context overflow) echo '{}' > ~/.openclaw/agents/main/sessions/sessions.json # 重新启动 Gateway openclaw gateway # 验证健康状态 openclaw health ```

> ⚠️ 重要提示**:如果环境中设置了 `http_proxy` / `https_proxy`,在启动 Gateway 前需要清除,否则对本地 Ollama 的请求会被转发到代理导致失败:

> ```bash > unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY > openclaw gateway > ```

四、模型性能基准测试

 4.1 模型基本信息

4.2 速度测试

 4.3 综合对比结论

五、通信架构原理

5.1 整体架构

5.2 通信协议与端口

 5.3 请求处理全流程

5.4 Apple Silicon 硬件加速原理

5.5 模型回退(Failover)机制

这种三级回退策略确保了:

 **优先本地**:省成本、低延迟、保隐私 - **本地备用**:主模型不可用时切换到另一个本地模型 - **云端兜底**:本地全部不可用时,仍可通过云端 API 提供服务

5.6 本地模型 vs 云端模型的数据路径对比

 六、常见问题与排障

6.1 Gateway 启动报 "gateway already running"

```bash # 先停止旧进程 openclaw gateway stop # 如果仍然报错,强制 kill kill $(lsof -ti :18789) # 重新启动 openclaw gateway ```

 6.2 "Context overflow: prompt too large for the model"

会话历史过多导致上下文溢出,清除会话记录:

 ```bash echo '{}' > ~/.openclaw/agents/main/sessions/sessions.json openclaw gateway stop && openclaw gateway ```

6.3 "Failed to discover Ollama models: fetch failed"

通常是因为设置了 `http_proxy` 环境变量,导致对本地 Ollama 的请求被转发到代理:

 ```bash # 启动 Gateway 前清除代理 unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY openclaw gateway ```

 6.4 Ollama 版本不匹配(client/server version mismatch)

 ```bash # 检查版本 ollama --version # 如果提示 server/client 版本不一致,重启 Ollama 服务 pkill -f "ollama serve" # 等待 Ollama 自动重启(macOS LaunchAgent 会自动拉起),或手动启动: ollama serve & ```

6.5 如何查看当前 Ollama 运行状态

 ```bash # 查看正在运行的模型 ollama ps # 查看所有已下载模型 ollama list # 测试 API 连通性 curl -s http://127.0.0.1:11434/api/tags | python3 -m json.tool ```

七、关键技术点总结

Read more

Flutter 组件 angel3_orm_mysql 的适配 鸿蒙Harmony 实战 - 驾驭专业 ORM 映射引擎、实现鸿蒙端与 MySQL 数据库的透明映射与高性能 SQL 审计方案

Flutter 组件 angel3_orm_mysql 的适配 鸿蒙Harmony 实战 - 驾驭专业 ORM 映射引擎、实现鸿蒙端与 MySQL 数据库的透明映射与高性能 SQL 审计方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 angel3_orm_mysql 的适配 鸿蒙Harmony 实战 - 驾驭专业 ORM 映射引擎、实现鸿蒙端与 MySQL 数据库的透明映射与高性能 SQL 审计方案 前言 在鸿蒙(OpenHarmony)生态向企业级中台应用、大屏数字化面板、以及需要直接操作中心数据库的特定内网管理工具拓展时,“数据库连接与对象关系映射(ORM)”是构建数据闭环的关键桥梁。虽然移动端通常通过 API 与后端交互。但在某些高性能、低延迟的私有云场景下(如:工厂本地监控大屏)。鸿蒙端需要直接与 MySQL 建立高压连接。并实现从 SQL 表结构到 Dart 实体的自动转换。 如果手动编写繁琐的 SELECT * 语句并逐字段进行 Map

By Ne0inhk
Flutter 组件 injectfy 适配鸿蒙 HarmonyOS 实战:逻辑注入矩阵,构建跨模块解耦与动态依赖管理架构

Flutter 组件 injectfy 适配鸿蒙 HarmonyOS 实战:逻辑注入矩阵,构建跨模块解耦与动态依赖管理架构

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 injectfy 适配鸿蒙 HarmonyOS 实战:逻辑注入矩阵,构建跨模块解耦与动态依赖管理架构 前言 在鸿蒙(OpenHarmony)生态迈向超大规模应用拆分、涉及数百个独立 Feature 模块与底层硬件服务深度解耦的背景下,如何实现灵活的“控制反转(IoC)”与“依赖注入(DI)”,已成为决定应用架构可维护性的“生命线”。在鸿蒙设备这类强调模块化挂载与 HAP/HSP 动态分发的环境下,如果应用内部的组件实例依然采用强耦合的硬编码初始化,由于由于各模块间复杂的循环依赖,极易由于由于初始化顺序错乱导致应用在流转拉起时的崩溃。 我们需要一种能够实现零成本解耦、支持单例(Singleton)与工厂(Factory)模式且具备极简注册语义的依赖注入框架。 injectfy 为 Flutter 开发者引入了轻量级的对象容器管理方案。它不仅支持对底层 Service 的全局托管,更提供了灵活的注入探测机制。在适配到鸿蒙

By Ne0inhk
【linux】网络套接字编程(五)TCP服务器与客户端的实现——多进程版,多线程版

【linux】网络套接字编程(五)TCP服务器与客户端的实现——多进程版,多线程版

小编个人主页详情<—请点击 小编个人gitee代码仓库<—请点击 linux系统编程专栏<—请点击 linux网络编程专栏<—请点击 倘若命中无此运,孤身亦可登昆仑,送给屏幕面前的读者朋友们和小编自己! 目录 * 前言 * 一、多进程版 * 逻辑一 * 测试 * 逻辑二 * 测试 * 二、多线程版 * 测试 * 三、源代码 * makefile * TcpServer.hpp * Main.cc * TcpCilent.cc * Log.hpp * 总结 前言 【linux】网络套接字编程(四)TCP服务器与客户端的实现(单进程/单线程的TCP服务器),setsockopt,listen,accept,telnet,connect,

By Ne0inhk
鸿蒙金融理财全栈项目——上线与运维、用户反馈、持续迭代优化

鸿蒙金融理财全栈项目——上线与运维、用户反馈、持续迭代优化

《鸿蒙APP开发从入门到精通》第25篇:鸿蒙金融理财全栈项目——上线与运维、用户反馈、持续迭代优化 🚀📱🔧 内容承接与核心价值 这是《鸿蒙APP开发从入门到精通》的第25篇——上线与运维、用户反馈、持续迭代优化篇,100%承接第24篇的生态合作、用户运营优化、数据产品变现优化架构,并基于金融场景的上线与运维、用户反馈、持续迭代优化要求,设计并实现鸿蒙金融理财全栈项目的上线与运维、用户反馈、持续迭代优化功能。 学习目标: * 掌握鸿蒙金融理财项目的上线与运维优化设计与实现; * 实现应用上线优化、应用运维优化、应用监控优化; * 理解用户反馈在金融场景的核心优化设计与实现; * 实现用户反馈收集优化、用户反馈分析优化、用户反馈处理优化; * 掌握持续迭代优化在金融场景的设计与实现; * 实现持续集成优化、持续部署优化、持续交付优化; * 优化金融理财项目的用户体验(上线与运维、用户反馈、持续迭代优化)。 学习重点: * 鸿蒙金融理财项目的上线与运维优化设计原则; * 用户反馈在金融场景的优化应用; * 持续迭代优化在金融场景的设计要点。 一、

By Ne0inhk