
1. 普通电脑跑 OpenClaw 本地模型到底卡在哪一步很多人第一次听到「本地模型 OpenClaw 离线部署」脑子里冒出来的画面是机房、显卡阵列、运维面板。其实真正动手之后你会发现拦住你的往往不是硬件而是三个很具体的小问题模型拉不下来、Ollama 服务只监听 127.0.0.1、OpenClaw 容器里访问不到宿主机的 11434 端口。这三个点任何一个没处理好界面就会一直转圈或者直接报连接失败。我自己在 8G 内存的办公本上完整走过一遍流程从装 Ollama 到 OpenClaw 里跑通对话中间断网测试也做了。结论先放这里7B 的 4-bit 量化模型核显 8G 内存确实能跑日常问答和知识库检索的响应速度可以接受。真正需要提前想清楚的是——你打算让它一直离线还是离线为主、偶尔切云端补能力。这两种用法在配置上差别不大但 Key 的管理方式不一样。这篇就按「先本地跑通再用统一 Key 打通云端」的顺序来写。前半段是 Ollama 拉模型、暴露服务、OpenClaw 对接的完整命令和配置片段后半段讲怎么用一套 Key 在本地 endpoint 和云端 endpoint 之间切换不用每次改代码。适合手里只有一台普通电脑、想先把专属 AI 搭起来再考虑扩展的人。需要提前说明的是本地模型和云端模型不是替代关系。本地胜在数据不出机器、断网可用、没有调用费用云端胜在参数大、知识新、复杂推理稳。OpenClaw 的好处是它把两者都当成 OpenAI 兼容的 endpoint 来对待所以你可以在同一个界面里配多个模型按任务切换。下面进入具体操作。2. Ollama 拉取模型与 OpenClaw 本地 endpoint 配置要点2.1 先确认你的机器能跑哪个档位在敲命令之前先花一分钟对一下硬件。不用记太细看内存和显存两个数就够硬件档位参考配置建议模型实际体验入门办公本8G 内存、核显qwen2:7b-instruct-q4_0每秒 10-20 token问答够用家用游戏本16G 内存、6G 以上显存qwen2:14b-instruct-q4_0响应明显更快长文更稳迷你主机/树莓派8G 内存、ARMqwen2:2b-instruct-q4_0轻量指令执行别指望长文工作站32G 内存、大显存qwen2:72b 量化版接近云端中等模型水平中文场景优先选 Qwen2 系列对中文的分词和指令跟随做得比较扎实7B 的量化版在办公问答里很少出现答非所问。模型名后面的q4_0是量化等级数字越小占用越低精度损失在 4-bit 这个档位基本可以接受。2.2 安装 Ollama 并让服务对外可见装完之后先验证版本再改监听地址。默认 Ollama 只绑127.0.0.1容器里的 OpenClaw 是访问不到的所以必须改成0.0.0.0。Windows 在系统环境变量里加两项改完重启终端OLLAMA_HOST0.0.0.0 OLLAMA_MODELSD:\ollama_modelsMac 或 Linux 直接写进 shell 配置export OLLAMA_HOST0.0.0.0 export OLLAMA_MODELS/data/ollama_models source ~/.bashrcOLLAMA_MODELS建议指到非系统盘模型动辄几个 G放 C 盘容易把空间吃满。改完执行ollama -v确认服务正常再拉模型ollama pull qwen2:7b-instruct-q4_0 ollama run qwen2:7b-instruct-q4_0拉取完成后会直接进对话界面随便问一句能回就说明模型侧没问题。此时 Ollama 的 API 已经在http://localhost:11434上跑着了可以用 curl 快速确认curl http://localhost:11434/api/tags返回模型列表的 JSON就说明服务暴露成功。这一步是整个离线部署的地基后面 OpenClaw 能不能连上全看这里通不通。2.3 OpenClaw 侧添加本地模型OpenClaw 部署好之后进「模型管理」→「添加模型」厂商选 Ollama。服务地址这里有个容易踩的坑如果 OpenClaw 是 Docker 跑的填http://host.docker.internal:11434并且启动容器时要加--add-hosthost.docker.internal:host-gateway否则容器解析不到宿主机。如果是本机直接安装的 OpenClaw填http://localhost:11434就行。模型名称必须和ollama list里显示的完全一致比如qwen2:7b-instruct-q4_0少一个字符都会连不上。填完点「测试连接」提示成功再保存并设为默认模型。到这一步断网状态下对话已经可以正常工作了。3. 可复制的 OpenClaw 本地与云端双 endpoint 配置3.1 一份 settings 片段管两个模型OpenClaw 的模型配置本质上是 OpenAI 兼容的 endpoint 列表。下面这份 JSON 可以直接改路径后使用本地和云端各一条切换时只改默认项不用动代码{ models: [ { name: local-qwen2-7b, provider: openai-compatible, base_url: http://host.docker.internal:11434/v1, api_key: ollama, model_id: qwen2:7b-instruct-q4_0, context_window: 2048, is_default: true }, { name: cloud-fallback, provider: openai-compatible, base_url: https://taotoken.net/api/v1, api_key: sk-你的TaoTokenKey, model_id: claude-sonnet-4-5, context_window: 8192, is_default: false } ] }本地这条的api_key填什么都行Ollama 不校验写ollama只是占位。base_url注意要带/v1因为 OpenClaw 走的是 OpenAI 兼容协议。云端这条的base_url用https://taotoken.net/api/v1Key 在控制台的 API Keys 页面生成。3.2 用环境变量隔离 Key别写死在配置里把 Key 直接写进 JSON 方便演示但实际用的时候建议走环境变量尤其是多人共用一台机器的情况export TAOTOKEN_API_KEYsk-你的TaoTokenKey export OLLAMA_BASE_URLhttp://host.docker.internal:11434/v1然后在配置里引用{ api_key: ${TAOTOKEN_API_KEY}, base_url: ${OLLAMA_BASE_URL} }这样切换环境或者换 Key 的时候不用改配置文件重启服务即可生效。本地模型和云端模型共用同一套 OpenClaw 界面你在对话中心选哪个模型请求就发到哪个 endpoint互不干扰。3.3 上下文窗口别照抄云端本地模型那条我把context_window设成了 2048不是随便写的。7B 量化模型在 8G 内存的机器上上下文拉到 4096 会明显吃内存长对话容易触发换页导致卡顿。2048 对日常问答和知识库检索完全够用如果你机器内存宽裕可以往上调但建议先跑一轮压力测试再定。4. 验证请求从 curl 到 OpenClaw 对话的完整链路4.1 先用 curl 打本地 endpoint在配置 OpenClaw 之前先用 curl 确认 Ollama 的 OpenAI 兼容接口能正常返回。这一步能帮你把「模型问题」和「OpenClaw 配置问题」分开curl http://localhost:11434/v1/chat/completions \ -H Content-Type: application/json \ -d { model: qwen2:7b-instruct-q4_0, messages: [{role: user, content: 用一句话介绍你自己}], stream: false }正常会返回一段 JSONchoices[0].message.content里就是模型的回答。如果这里报model not found说明模型名写错了如果连接被拒绝说明OLLAMA_HOST没生效或者服务没起来。4.2 再验证云端 endpoint同样的方式打云端确认 Key 和网络都正常curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: claude-sonnet-4-5, messages: [{role: user, content: 回复 ok}], stream: false }两条都通之后回到 OpenClaw 的对话中心分别选本地模型和云端模型各问一句。本地那条可以顺手把网线拔了再问能正常回复就说明离线链路完全打通。云端那条需要联网用来处理本地模型搞不定的复杂任务。4.3 切换策略什么任务走本地什么走云端实测下来比较省心的分工是这样涉及内部文档、合同、个人笔记的问答全部走本地数据不出机器需要最新信息、复杂代码生成、长文推理的时候切云端。OpenClaw 里切换模型就是下拉框选一下不用重启服务。如果你想让某个数字员工固定用本地模型在数字员工配置里绑定模型即可这样即使默认模型改了它也不会跟着变。5. 本篇常见报错排查401、连接失败与模型名不匹配5.1 401 Unauthorized云端那条报 401九成是 Key 的问题。先确认环境变量有没有在当前 shell 生效echo $TAOTOKEN_API_KEY看输出是否为空。如果是在 Docker 里跑 OpenClaw环境变量要在docker run时用-e传进去宿主机 export 的变量容器里读不到。另外检查 Key 有没有多余空格复制的时候很容易带上换行。5.2 connection refused / local proxy failed本地这条报连接失败按顺序查三件事OLLAMA_HOST是不是0.0.0.0防火墙有没有放行 11434Docker 启动时有没有加--add-hosthost.docker.internal:host-gateway。三个都对了还连不上就在容器里执行curl http://host.docker.internal:11434/api/tags看能不能通能通说明是 OpenClaw 配置里的地址写错了。5.3 model not found 与 reading choices 报错model not found基本都是模型名不一致用ollama list复制完整名称注意冒号和横杠。reading choices这类报错通常出现在返回体结构不符合预期的时候常见原因是base_url少了/v1请求打到了 Ollama 的原生接口而不是 OpenAI 兼容接口。补上/v1再试。5.4 OAuth 与鉴权类报错如果你在 OpenClaw 里配的是需要 OAuth 的云端服务报鉴权失败时先确认回调地址和当前访问地址一致。用 TaoToken 的 Key 方式接入不涉及 OAuth 流程直接填sk-开头的 Key 即可遇到 OAuth 相关提示一般是选错了 provider 类型改回 openai-compatible 就行。5.5 三件套检查清单不管哪条链路出问题先核对这三项Base URL 是否带/v1、Key 是否有效且无空格、Model ID 是否和实际模型完全一致。这三件套对了绝大多数连接问题都能定位到具体环节。6. 本地离线为主、云端按需补充的接入路径把本地跑通之后你会发现 OpenClaw 的模型列表其实就是一个 endpoint 池。本地那条负责隐私和离线可用云端那条负责能力和知识更新。日常用的时候不需要来回改配置在界面上切换就行。如果你还没生成云端那条要用的 Key可以去控制台的 API Keys 页面创建一个然后参考接入文档把base_url和model_id填进上面那份 JSON。想先试试模型对话效果再决定要不要长期用直接进模型对话页面发几条请求感受一下响应质量。长期做编码或者跑 Agent 任务的话Coding Plan 那条路径在额度管理上会更省心一些。本地这套搭好之后建议做一件事把常用的业务文档丢进 OpenClaw 的知识库让本地模型基于文档回答。7B 模型单独对话偶尔会飘但挂了知识库之后回答会明显收敛到你的资料范围内。这个组合才是我觉得本地部署真正好用的地方——不是替代云端而是把那些不方便上传的数据留在自己手里。