☰
MacOS 上部署 OpenClaw 的全界面操作方案:用 TaoToken 统一 Key 打通 Docker 与 Ollama
2026/10/20 9:17:10 网站建设 项目流程

1. MacOS 桌面环境下的 OpenClaw 部署场景与痛点

OpenClaw 是一个面向智能体编排的开源控制台,它能让你在浏览器里管理模型供应商、智能体、对话链路和网关令牌。适合谁?适合想在 MacOS 上快速搭一套本地 AI 智能体环境、又不想天天敲命令行的人。核心检索词先摆出来:MacOS 部署 OpenClaw、Docker 容器编排、Ollama 本地模型接入、1Panel 面板管理,这四件事串起来就是本篇要交付的全界面操作闭环。

我在 MacBook 上折腾这套东西时,最大的感受是:MacOS 的图形界面很舒服,但 Docker 的文件共享、端口映射、容器内访问宿主机这几件事,坑比 Linux 多。比如容器里写localhost:11434永远连不上 Ollama,必须用host.docker.internal;再比如 1Panel 要挂载/opt,但 Docker Desktop 默认不共享这个路径,不提前设置就会报Mounts denied。

所以这篇不打算只给你一段 Compose 就完事,而是把三条路径都走一遍:1Panel 应用商店路径、Docker 直接部署路径、以及两者共用的 Ollama 本地模型接入。每条路径都给可复制的配置、可验证的检查动作,以及真实会撞上的报错。你跟着做,最后能在浏览器里打开 OpenClaw 控制台,发一条对话,看到 qwen3:4b 的回复,就算闭环完成。

统一 Key 这件事放在 TaoToken 上,是因为后面不管你是接本地 Ollama 还是接云端模型,都能用同一套 Base URL 和 Key 管理,省得每个工具各配一遍。下面进入前置准备。

2. TaoToken 前置准备与 Ollama 本地模型接入

这一节解决两件事:拿到统一的模型访问凭证,以及让 Ollama 在 MacOS 上跑起来并能被容器访问。

先说 TaoToken。它的作用是给你一个统一的 API 入口,模型对话、Coding Plan、控制台、API Keys 都在一个后台里。你需要的是三件套:Base URL、API Key、Model ID。Base URL 用https://taotoken.net/api,API Key 在控制台的 API Keys 页面创建,Model ID 按你要用的模型填。控制台地址是https://taotoken.net/console,创建 Key 的页面是https://taotoken.net/api-keys。如果你后面要长期跑编码类智能体,可以看下 Coding Plan:https://taotoken.net/coding-plan。想先验证模型通不通,用模型对话页:https://taotoken.net/chat。文档在https://taotoken.net/doc。

注意:TaoToken 是合规的模型访问入口,不要把它和任何网络代理工具混为一谈。你只需要在配置里填 Base URL 和 Key 即可。

然后是 Ollama。MacOS 上直接去官网下 Ollama.app,装完打开,菜单栏会出现一个小羊驼图标。确认它在跑:

ollama --version curl http://127.0.0.1:11434/api/tags

第二条命令如果返回 JSON(哪怕是空的 models 数组),说明 Ollama 服务在 11434 端口活着。接着拉模型:

ollama pull qwen3:4b

拉完验证:

ollama list

你应该能看到qwen3:4b这一行。再发一条测试请求:

curl http://127.0.0.1:11434/api/generate -d '{ "model": "qwen3:4b", "prompt": "用一句话说明你是什么模型", "stream": false }'

返回里有response字段就说明本地模型可用。

关键点来了:Docker 容器里不能用127.0.0.1:11434访问宿主机的 Ollama。MacOS 上 Docker Desktop 提供了host.docker.internal这个域名指向宿主机。所以容器内的 Base URL 要写http://host.docker.internal:11434。你可以先在容器里验证一下:

docker run --rm curlimages/curl:latest curl -s http://host.docker.internal:11434/api/tags

如果这条能返回模型列表,说明容器到 Ollama 的链路通了。这一步不过,后面 OpenClaw 配了也白配。

另外,Docker Desktop 需要设置文件共享路径。进入 Settings → Resources → File sharing,添加/opt。不然后面 1Panel 挂载/opt会直接失败。这个动作在方案一里是必须的。

3. 可复制配置:1Panel 与 Docker 两条部署路径

这一节给完整配置。先走方案一:1Panel 应用商店路径。

第一步,创建 1Panel 容器。你可以用命令行,也可以用 Docker Desktop 图形界面。命令行版本:

docker run -d \ --name 1panel \ --restart unless-stopped \ -p 10086:10086 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /opt:/opt \ 1panel/1panel:latest

如果你用 Docker Desktop 图形界面,对应填:Name 填1panel,Ports 填10086,Volumes 两条:/var/run/docker.sock→/var/run/docker.sock,/opt→/opt。

第二步,拿 1Panel 登录信息。进容器执行:

docker exec -it 1panel 1pctl user-info

它会输出用户名、密码、入口地址。浏览器打开http://127.0.0.1:10086,用这组账号登录。

第三步,在 1Panel 里创建模型账号。路径是:模型 → 模型账号 → 创建。字段这样填:

字段值
名称ollama
模型供应商Ollama
API Key任意字符串,比如taotoken-local
Base URLhttp://host.docker.internal:11434

第四步,创建智能体。路径:智能体 → 创建。名称填openclaw,模型供应商选 Ollama,勾选手动输入模型,模型填ollama/qwen3:4b,模型账号选上一步的ollama。保存后会生成一个 Token,记下来。

第五步,OpenClaw 控制台配置。浏览器打开http://127.0.0.1:18789。按路径操作:Control → Overview → Gateway Access → Gateway Token,填入上一步的 Token;然后 Config → Models → Providers → ollama → Api,选择或填写ollama,Save;最后 Chat → Chat,发一条消息验证。

再走方案二:Docker 直接部署 OpenClaw。镜像用fourplayer/openclaw,端口映射 18788、18789、22:

docker run -d \ --name openclaw \ --restart unless-stopped \ -p 18788:18788 \ -p 18789:18789 \ -p 22:22 \ fourplayer/openclaw:latest

如果你更习惯 Compose,用这个docker-compose.yml:

services: openclaw: image: fourplayer/openclaw:latest container_name: openclaw restart: unless-stopped ports: - "18788:18788" - "18789:18789" - "22:22" environment: - TZ=Asia/Shanghai

保存后docker compose up -d。

容器起来后进控制台配置。默认智能体:Config → Agents → Defaults,Remote Embedding API Key 填你的 Key,Primary Model 填ollama/qwen3:4b。Provider 配置:Config → Models → Providers → Add Entry,Name 填ollama,Api 填ollama,Api Key 填任意字符串,Base Url 填http://host.docker.internal:11434。模型列表:在 Provider 下 Add,Api 填ollama,Id 填qwen3:4b,Name 填qwen3:4b,Reasoning 选 true。

这里的三件套要写全:Base URL 是http://host.docker.internal:11434,Key 是任意字符串(本地 Ollama 不校验),Model ID 是qwen3:4b。如果你改用 TaoToken 的云端模型,Base URL 换成https://taotoken.net/api,Key 换成控制台创建的 Key,Model ID 换成对应模型名。

4. 验证请求与成功结果:健康检查、端口连通、界面登录

配置写完不算完,得验证。这一节给具体动作和预期结果。

先看容器健康状态:

docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"

你应该看到1panel和openclaw都是Up状态,端口映射正确。如果某个容器是Restarting,用docker logs <容器名> --tail 50看日志。

端口连通性验证。MacOS 上用nc或curl:

nc -zv 127.0.0.1 10086 nc -zv 127.0.0.1 18789 nc -zv 127.0.0.1 11434

三条都返回succeeded或open才算通。18788 和 22 也顺手测一下。

容器内到 Ollama 的连通性再确认一次:

docker exec -it openclaw curl -s http://host.docker.internal:11434/api/tags

返回模型列表就对了。如果这里失败,后面 Chat 一定报错。

界面登录测试。1Panel 打开http://127.0.0.1:10086,用1pctl user-info给的账号登录,能看到仪表盘。OpenClaw 打开http://127.0.0.1:18789,进入 Control → Overview,确认 Gateway Token 已填。然后去 Chat → Chat,发一条:

你好,请用一句话介绍你自己

预期结果是几秒内返回一段文本,模型标识显示qwen3:4b或ollama/qwen3:4b。如果返回空、报错或一直转圈,进下一节排查。

再补一个 API 层验证。如果你配了 TaoToken 的云端模型,可以直接测:

curl https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer 你的Key" \ -H "Content-Type: application/json" \ -d '{ "model": "你的ModelID", "messages": [{"role": "user", "content": "ping"}] }'

返回里有choices数组就说明 Key 和 Base URL 都对。这一步能帮你区分是 OpenClaw 配置问题还是模型访问问题。

5. 本篇常见错排查:401、local proxy failed、reading choices、OAuth

这一节按真实报错来。你撞上的大概率是下面几个。

401 Unauthorized。出现在 OpenClaw 调模型时。原因通常是 API Key 没填、填错,或者 Base URL 指向了需要鉴权的服务但 Key 无效。本地 Ollama 不校验 Key,所以如果你用 Ollama 还报 401,八成是 Provider 的 Api 字段选错了,或者 Base URL 写成了 TaoToken 的地址却没填对应 Key。检查三件套:Base URL、Key、Model ID 是否匹配同一个供应商。

local proxy failed。这个多半是容器内访问宿主机失败。MacOS 上确认 Base URL 用的是host.docker.internal而不是127.0.0.1。再确认 Ollama.app 在跑,curl http://127.0.0.1:11434/api/tags在宿主机能返回。如果还不行,检查 Docker Desktop 的网络设置,必要时重启 Docker Desktop。

reading choices 相关报错。通常是返回体不是预期的 OpenAI 兼容格式。本地 Ollama 的/api/generate和/v1/chat/completions返回结构不同。OpenClaw 里 Provider 的 Api 字段要选ollama,不要选 OpenAI 兼容模式,否则它会去解析choices字段而 Ollama 原生接口没有。如果你用 TaoToken,Api 选 OpenAI 兼容,Base URL 用https://taotoken.net/api。

OAuth 报错。出现在你试图用需要 OAuth 的云端服务但没走对流程时。本地 Ollama 不涉及 OAuth。如果你接的是需要 OAuth 的模型服务,建议改用 API Key 方式,或者用 TaoToken 的统一 Key 入口,避免每个服务各配一套 OAuth。Codex 的auth.json这类文件,如果你在用,确保 Base URL、Key、Model ID 三件套写全,路径和字段名别写错。

Mounts denied。1Panel 挂载/opt时报的。回 Docker Desktop → Settings → Resources → File sharing,把/opt加进去,Apply & Restart。

端口被占用。docker run报port is already allocated。用lsof -i :18789查谁占了,换端口或停掉占用进程。

容器起来但界面打不开。先docker ps确认 Up,再nc -zv 127.0.0.1 18789确认端口通。都通但浏览器打不开,试试http://localhost:18789而不是127.0.0.1,或者清一下浏览器缓存。

排查顺序建议:先宿主机 Ollama 通 → 再容器到宿主机通 → 再 OpenClaw 配置三件套对 → 最后 Chat 验证。一层层来,别跳。

6. 统一 Key 打通 Docker 与 Ollama 的后续用法

走到这里,你应该已经能在 MacOS 上打开 OpenClaw 控制台并发起对话了。最后说下统一 Key 的后续用法,以及几个实用技巧。

TaoToken 的价值在于,你后面不管加多少个智能体、换多少个模型,Base URL 和 Key 都不用改。本地 Ollama 用http://host.docker.internal:11434,云端模型用https://taotoken.net/api,两者可以在 OpenClaw 里并存为不同 Provider,切换时只改 Primary Model 字段。API Keys 页面管理 Key:https://taotoken.net/api-keys。接入文档:https://taotoken.net/doc。想验证新模型通不通,用模型对话:https://taotoken.net/chat。长期跑编码类 Agent,看 Coding Plan:https://taotoken.net/coding-plan。Claude Code 相关接入看:https://taotoken.net/claude-code-anthropic。

实用技巧:把docker-compose.yml和 1Panel 的模型账号配置存一份到 Git,换机器时直接复用。Ollama 模型拉取用ollama pull qwen3:4b,换模型只改 Model ID。容器健康检查可以写个脚本定时跑docker ps和nc,省得每次手动查。如果你同时用 Cline 或 CC Switch,记得三件套写全:Base URL、Key、Model ID,缺一个都会报错。

最后一步,回到 OpenClaw 的 Chat 页面,再发一条消息,确认回复正常。到这里,MacOS 上从零到可用的全界面操作闭环就完成了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询