OpenClaw 在 Mac 上跑起来、18789 控制台也打开了,输入框里敲一句「帮我总结 OpenClaw 核心功能」,回车之后光标一直转圈——这是装完 OpenClaw 最常见的状态:框架活着,模型是空的。它本身不带大模型能力,装完必须挂一个第三方 API-Key 才能说话,原文走的是阿里云百炼那条路。这篇讲的是另一种接法:把 OpenClaw 的模型通道接到TaoToken,先去 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 注册并创建一把 Key,再把它填进 ~/.openclaw/config.json 的 llm 段。Mac、WSL2、Windows 原生、Docker 四种部署流程一行都不用推翻,只换凭证来源。
1. OpenClaw 装完还是空壳,卡点到底在哪个文件
1.1 四种部署方式,最后都撞上同一件事
原文把部署路线拆得很细:阿里云一键镜像、Mac 本地、Windows 的 WSL2 与原生两条路、再加 Docker Compose。路线不同,收尾动作高度一致——openclaw setup走完向导,openclaw gateway start把网关拉起来,openclaw token generate --admin生成访问 Token,浏览器打开http://localhost:18789/?token=...看到对话界面。
界面出来不等于能用。向导里那一步「模型 API 配置」如果选了 Skip,Gateway 会正常监听,Token 也能生成,页面上还能打字,但消息发出去没有任何模型接住,前端只能干等超时。很多人以为是端口没放行或者 Token 失效,翻防火墙翻半天,其实问题在~/.openclaw/config.json的llm节点是空的,或者base_url指向了一个当前网络够不到、或者 Key 已经失效的地址。
原文的解法是用阿里云百炼:去百炼控制台建 Key,base_url写https://dashscope.aliyuncs.com/compatible-mode/v1,模型写通义千问系列。这条链路没问题,只是它把「注册账号、实名、开通计费、复制 Key、挑模型名」这一整套动作绑定在了一家云厂商的控制台上。如果你手上已经在用 TaoToken 这类统一接入通道,就没必要为 OpenClaw 再单独养一份凭证。
1.2 换成 TaoToken 之后,哪些步骤原封不动
先把结论放前面:OpenClaw 的安装、网关启动、Token 生成、端口放行、Defender 排除项、Docker 挂载,全部不用改。要改的只有两个值。
llm.baseUrl(配置详解里写作base_url):填https://taotoken.net/api,末尾不加/v1,也不带任何查询参数。llm.apiKey:填你从 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 创建的那把 Key,本文里统一写成占位符YOUR_API_KEY。
模型名不写死,去模型广场看当前列表里你打算用的那个 ID 复制过来,本文统一写成YOUR_MODEL_ID。
顺序上建议这样:先按原文把 OpenClaw 本体装好、网关能起、18789 能打开;再回头配 llm 段。两件事混在一起做,出错时分不清是环境问题还是凭证问题。下面按原文的四条部署路线依次过,每条只讲「凭证那一步怎么换」。
2. 部署前准备:端口、硬件与一把 TaoToken 的 Key
2.1 硬件、系统与 18789 端口先确认
这部分跟原文一致,照抄结论即可:CPU 最低 1 核、推荐 2 核以上;内存最低 2GB,本地跑多技能建议 4GB 起步、8GB 更稳;磁盘留 10GB,用 SSD 更好;系统 Windows 10/11 64 位、macOS 12+、Ubuntu 20.04+ 都行。
端口是重灾区。OpenClaw 的 Web 控制台默认吃18789,本地部署前先确认没被别的程序占着:
# macOS / Linux / WSL2 lsof -i:18789# Windows 原生 PowerShell netstat -ano | findstr 18789云服务器上则是安全组或防火墙要放行 TCP 18789,SSH 的 22 端口按需放行。这两条跟模型通道没关系,但它们是「打不开控制台」和「模型不响应」两类问题里最容易混在一起的部分——先确认 18789 能出界面,再去查 llm 配置。
2.2 去官网创建 API Key,顺手把模型 ID 抄下来
原文这一步是让你注册云账号、完成实名、进控制台建 Key、复制形如sk-xxxxxxxx的字符串。换成 TaoToken 之后,动作等价:打开 TaoToken,注册登录,在控制台创建一把 API Key,复制下来放进你的密码管理器。
同一次访问里,把模型 ID 也解决掉。打开模型广场,找到你准备给 OpenClaw 用的那个模型,复制它的完整 ID。不要凭记忆写模型名,也不要用别处看到的日期后缀去拼——模型列表会变,唯一可信来源是模型广场当时的显示。
提示:Key 只在创建时完整展示一次,关掉页面就看不全了。没存下来就删掉重建一把,别拿半截字符去试。
2.3 本地要记的三个值
配 OpenClaw 的时候你会反复用到这三个值,建议先写在便签上:
| 项目 | 值 |
|---|---|
| API Key | YOUR_API_KEY(从官网创建的那把) |
| Base URL | https://taotoken.net/api |
| 模型 ID | YOUR_MODEL_ID(模型广场复制) |
注意 Base URL 和官网地址是两回事。官网https://taotoken.net/?utm_source=taotoken_aicg_blog_end用来注册、建 Key、看模型广场和用量;填进 OpenClaw 的base_url一定是https://taotoken.net/api,末尾不带/v1,也不要挂任何跟踪参数。这个区分后面会反复出现,配错一次就会得到一个 404。
辅助工具照旧:加密记事本、现代浏览器、改配置用的 VS Code 或记事本。阿里云和 Docker 路线再准备一个 SSH 工具即可。
3. 阿里云一键部署:替换掉「配置百炼 API-Key」那一步
3.1 买实例、放行端口,和原文一样
阿里云路线的优势是镜像里 Node.js、依赖、OpenClaw 本体都预装了,你只需要买一台轻量应用服务器,选 OpenClaw 专属镜像,规格 2 核 4GB 起,地域按原文建议选免备案区域,带宽 5Mbps 基础够用。创建完等实例变成「运行中」。
进控制台的防火墙页,把 18789 放行;要远程管理再加 22;443 按需。这几步跟原文完全一致,不多展开。做完拿公网 IP,用 SSH 工具登录服务器,或者直接用控制台的远程连接。
3.2 在容器里把 llm 指向 TaoToken
原文这一步是「配置百炼 API-Key」,有一键配置和命令行两种方式。换成 TaoToken 之后,一键配置那个按钮描述的是百炼专用的字段,别用它;直接走命令行,语义更清楚:
docker exec -it openclaw-core openclaw config set llm.provider openai-compatible docker exec -it openclaw-core openclaw config set llm.apiKey "YOUR_API_KEY" docker exec -it openclaw-core openclaw config set llm.baseUrl "https://taotoken.net/api" docker exec -it openclaw-core openclaw config set llm.model "YOUR_MODEL_ID"四条命令分别对应 provider、Key、地址、模型。容器名以你实际创建的为准,原文里叫openclaw-core,如果你在阿里云控制台改了名字,docker ps看一眼再替换。
改完让网关重新读一次配置:
docker exec -it openclaw-core openclaw gateway restart注意:
provider的取值不同版本可能写作openai、openai-compatible或别的自定义标识,以你这份镜像里openclaw config set的帮助输出和镜像文档为准。真正决定流量去哪的是baseUrl,它必须是https://taotoken.net/api。
3.3 生成 Token,打开 18789 看对话界面
配置落盘之后,生成 Web 访问 Token:
docker exec -it openclaw-core openclaw token generate --admin复制出来那串长字符串,浏览器访问http://你的服务器公网IP:18789/?token=刚才复制的Token。能看到对话界面,说明服务层通了。这时候先别急着庆祝,界面能打开只证明网关在跑;模型能不能用,要发一条消息才知道,这一步放到第 8 节统一验。
阿里云路线有两个额外提醒。一是容器重启后配置会不会丢,取决于你有没有把config目录挂出来,原文的 Compose 示例里挂了./config:/root/.openclaw/config,这个习惯保留。二是 Token 忘了可以重新生成,命令跟上面那条一样,加--admin参数即可。
4. Mac 本地部署:~/.openclaw/config.json 的 llm 段怎么写
4.1 Homebrew、Node 22 与 setup 向导的选项
Mac 这条路的安装部分照原文走:装 Homebrew,brew install node@22,把 node@22 的 bin 目录写进~/.zshrc,node --version确认是 v22.x,再npm install -g openclaw@latest。国内网络慢的话可以设 npm 镜像源,这一步可选项,跟模型通道无关。
关键是openclaw setup的交互向导。原文给的建议是:接受风险提示;工作目录默认~/.openclaw/;模型 API 配置选 Skip;消息渠道选 Skip;日志级别 Info;网关绑定模式按需求选lan或local;孵化方式选打开 Web UI。
模型那一步选 Skip 是刻意的——向导里的选项是给特定厂商定制的字段,你后面直接写配置文件更干净。跳过之后,等网关起来了再单独配 llm 段,出问题也容易定位。
4.2 两种写法:直接改 config.json,或者敲 config set
先看配置文件。打开~/.openclaw/config.json,把llm节点改成这样:
{ "llm": { "provider": "openai-compatible", "api_key": "YOUR_API_KEY", "base_url": "https://taotoken.net/api", "model": "YOUR_MODEL_ID", "temperature": 0.7, "max_tokens": 2048 } }字段名和原文 Mac 那一节的~/.openclaw/config.json示例保持同一套结构,只是把厂商专用的 endpoint、accessKeyId、accessKeySecret 换成了兼容通道通用的api_key+base_url。如果你的配置里已经有别的 llm 字段,覆盖掉对应项就行,不要留两个base_url。
不想手改 JSON 的话,用命令式写法,效果一样:
openclaw config set llm.provider openai-compatible openclaw config set llm.apiKey "YOUR_API_KEY" openclaw config set llm.baseUrl "https://taotoken.net/api" openclaw config set llm.model "YOUR_MODEL_ID" openclaw gateway restart命令行方式的好处是键名由 CLI 自己校验,写错了会当场报错,比事后对着 JSON 找半天强。
4.3 启动 gateway、生成 Token、可选开机自启
配置写完,启动核心通信组件:
openclaw gateway start openclaw status openclaw token generate --adminopenclaw status显示 Gateway running 就对了,拿生成的 Token 打开http://localhost:18789/?token=...。
想让 OpenClaw 在后台常驻,原文给的是 launchd 方案:openclaw service install mac生成 plist,再用launchctl load ~/Library/LaunchAgents/com.openclaw.gateway.plist加载。这里有个顺序问题——先改好 llm 配置再装守护进程。如果先装了开机自启,之后又改了 config.json,记得openclaw gateway restart让新配置生效,否则守护进程抱着的还是旧的那份内存状态。
5. Windows 两条路:WSL2 与原生 PowerShell 下的同一份配置
5.1 WSL2 里 Ubuntu 的部署与 llm 配置
Windows 上体验最好的仍是 WSL2。管理员 PowerShell 里wsl --install -d Ubuntu,重启,进 Ubuntu 后sudo apt update && sudo apt upgrade -y,装 node 和 npm,sudo npm install -g openclaw@latest,然后openclaw setup。
WSL2 里的配置文件和 Mac 是同一套路径与结构:~/.openclaw/config.json,llm.base_url填https://taotoken.net/api。因为跑在子系统里,~指向的是 Ubuntu 的用户目录,不是 Windows 的C:\Users\...,别改错文件。
启动与验证:
openclaw gateway start openclaw token generate --adminWindows 侧浏览器访问http://localhost:18789/?token=...,WSL2 的端口转发一般会自动把 localhost 映射过去。
5.2 原生 PowerShell:执行策略、Node 与配置文件路径
原生路线适合不想装子系统的机器。管理员身份打开 PowerShell,先解掉脚本执行限制:
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned -ForceNode 22 用 winget 装最省事,或者去官网下 LTS 安装包并勾上 Add to PATH。装完重开 PowerShell,node --version确认版本,再:
npm install -g openclaw@latest openclaw setup配置文件路径跟 Mac 不同,在C:\Users\你的用户名\.openclaw\config.json。内容照搬 Mac 那份 JSON,base_url依然是https://taotoken.net/api。改完启动:
openclaw gateway start openclaw token generate --admin原生部署有个硬伤:PowerShell 窗口一关,网关就停。原文也提醒了这点。调试阶段无所谓,想长期挂着就得研究 Windows 服务封装。
5.3 Defender 排除项与 sharp 安装失败
OpenClaw 的配置目录容易被 Windows Defender 当成可疑写入目标反复扫描,原文的建议是把它加进排除列表:Windows 安全中心 → 病毒和威胁防护 → 管理设置 → 添加排除项,文件夹填C:\Users\你的用户名\.openclaw。
安装阶段如果卡在sharp模块,先清缓存再重装:
npm cache clean --force npm install -g openclaw@latest --force这两件事都跟模型通道无关,但它们会让「配好了却不响应」看起来像模型的问题。排查顺序记住一句话:先确认网关在跑、Token 能进界面,再怀疑 llm 配置。
6. Docker Compose 里的环境变量怎么指到 TaoToken
6.1 compose 文件里的 Key 与 Base URL
Docker 路线的安装照原文:装 Docker Desktop,拉镜像,建目录,写 compose。差异集中environment段。原文写的是OPENCLAW_MODEL_PROVIDER=bailian和百炼的 Key,换成:
services: openclaw-gateway: image: ${OPENCLAW_IMAGE} container_name: openclaw-gateway-prod restart: unless-stopped ports: - "18789:18789" environment: - NODE_ENV=production - OPENCLAW_TOKEN=${OPENCLAW_TOKEN} - OPENCLAW_API_KEY=YOUR_API_KEY - OPENCLAW_API_BASE=https://taotoken.net/api - OPENCLAW_MODEL=YOUR_MODEL_ID volumes: - ./data:/root/.openclaw/data - ./logs:/root/.openclaw/logs - ./config:/root/.openclaw/config注意:不同镜像给这些变量起的名字不一样,有的用
OPENAI_API_KEY/OPENAI_BASE_URL,有的用LLM_*前缀。变量名以你那份镜像的 README 为准,变量值永远不变:地址是https://taotoken.net/api,不带/v1。
把 Key 直接写在 compose 里方便调试,但更稳妥的做法是写进.env文件再引用,同时chmod 600 .env限制读取权限。原文在 Docker 一节里就是这么处理 Token 的。
6.2 挂载 config 目录,容器重启别丢凭证
volumes里那行./config:/root/.openclaw/config不是可选项。容器是无状态的,不挂载的话,docker-compose down再up,你写进去的 Key、Base URL、模型 ID 全部回到镜像初始状态,表现就是「昨天还能用,今天重启就哑了」。
起来之后看日志和状态:
docker-compose up -d docker-compose logs -f docker ps | grep openclaw docker exec -it openclaw-gateway-prod openclaw token generate --admin日志里如果有 provider 初始化失败、鉴权 401 之类的字样,先回头看第 6.1 节那两个变量名和值。镜像文档和你写的变量名对不上,是这条路线最常见的坑。
7. 模型配置详解:provider、base_url、model 三个字段
7.1 base_url 填 https://taotoken.net/api,末尾不要 /v1
这一步单独拎出来讲,因为它最容易被「顺手」改错。OpenClaw 的base_url(配置详解里有时写作baseUrl)要填:
https://taotoken.net/api三个不要:不要加/v1,不要加 UTM 参数,不要写成官网首页地址。官网https://taotoken.net/?utm_source=taotoken_aicg_blog_end是给人点的,控制台、模型广场、用量看板都在那边;https://taotoken.net/api是给程序调的。两者混用会得到一个 404,而且报错信息通常只说「模型不可用」,不会直接告诉你路径写错了。
原文里百炼的地址是https://dashscope.aliyuncs.com/compatible-mode/v1,注意它自带/v1。这是不同厂商路径约定不一样导致的,照搬格式很容易把/v1也带到 TaoToken 的地址后面。记住结论就行:TaoToken 的 Base URL 到/api为止。
7.2 模型 ID 从模型广场复制,别凭记忆写
模型名这一格没有通用答案。不同通道支持的模型集合不一样,同一个名字在不同时间点也可能调整。正确做法只有一个:打开 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 进模型广场,找到你要用的那个,把 ID 原样复制进配置。
写错的典型症状是服务能启动、健康检查也过,但一发消息就报模型不存在或找不到对应部署。这时候别怀疑 Key,先核对模型 ID 是不是从广场里复制的完整字符串。
7.3 temperature 与 max_tokens 顺手调一下
这两个参数跟通道无关,但影响使用体感。temperature偏低(0.1–0.3)适合当助手干活、按格式输出;偏高(0.7–0.9)适合头脑风暴。OpenClaw 要执行技能、调工具的时候,建议先放 0.7 以下,输出稳定一些。
max_tokens决定单次响应长度上限,默认 2048 对普通对话够用,做长文摘要可以往上调,但要注意有些模型自己有上限。这两个值不确定就先留默认,跑通之后再动。
8. 部署后的验证链路:openclaw test llm 到 18789 控制台
8.1 服务状态与健康检查
分三层验,从下往上。第一层是进程和端口:
openclaw gateway status curl http://localhost:18789/api/v1/health第一条应显示 running,第二条应返回健康状态。Docker 部署换成docker ps | grep openclaw看容器是不是 Up。这一层只证明服务活着,跟模型无关。
8.2 用 openclaw test llm 单独测模型这一层
第二层专门测 llm 配置,这是最省事的判断方式:
openclaw test llm返回连接成功,说明 OpenClaw 拿着你配的base_url、api_key、model三个值,成功完成了一次往返。失败的话报错通常能直接指向是哪一格不对:鉴权失败指向 Key,路径找不到指向 Base URL,模型不存在指向模型 ID。阿里云或 Docker 环境要进容器执行:
docker exec -it openclaw-core openclaw test llm8.3 在 18789 控制台发一句话做端到端验证
第三层是端到端。浏览器打开http://localhost:18789/?token=...(云服务器换成公网 IP),在对话框里发:
帮我总结 OpenClaw 核心功能能收到一段像样的回答,说明网关、Token、模型通道整条链路都通了。再往前一步,可以让它做点带动作的活,比如「帮我创建一个测试文档,内容为 OpenClaw 部署成功」,看技能层能不能正常落盘。
验证通过之后,回到 TaoToken 控制台 看一眼这次的调用有没有记上账,顺手确认 Key 的可用状态。这一步花不了一分钟,但能帮你把「配置对不对」和「通道通不通」彻底分开——控制台有记录、OpenClaw 也回了话,那这套环境就是真通了。
9. 排障对照表:模型名、base_url、改完没重启
9.1 模型调用类报错
最典型的两类。第一类是模型不存在,原因基本是model字段里写了广场里没有的 ID,或者手抖多带了空格、引号。解决办法是回模型广场重新复制一遍,粘贴后检查首尾有没有多余字符。
第二类是路径类报错,表现为请求发出去了但返回找不到接口。九成是base_url多了/v1,或者末尾多了一个斜杠,或者把官网首页地址填了进去。改回https://taotoken.net/api再试。
还有一类不带明显报错,就是消息发出去一直转圈。这种先看openclaw test llm的结果——如果测试能过但控制台没反应,问题在网关或 Token;如果测试本身就失败,问题在 llm 三格配置里。
9.2 改完配置没生效,先重启网关
改config.json之后不重启,OpenClaw 仍然用内存里的旧值,这个坑在 Mac 和 Windows 原生部署上特别常见。改完统一加一条:
openclaw gateway restartDocker 环境用docker restart openclaw-gateway-prod,阿里云容器用docker restart openclaw-core。养成习惯:改配置 → 重启 → 再验证,别在旧进程上反复怀疑配置。
9.3 访问与端口类问题
打不开 18789,先查端口放行和占用,跟配置无关。能开界面但局域网其他设备连不上,是初始化时网关绑定模式选了local,改成lan或者把监听地址设为0.0.0.0。Token 无效就重新生成一次,命令在第 3.3 和 4.3 节里都给了。
Docker 容器起来又立刻退出,先docker logs看日志,多半是端口冲突或者环境变量格式不对。容器重启后 Token 失效,检查./config目录有没有挂载出来。
10. 配通模型之后,从这里继续
OpenClaw 这套东西的门槛从来不在安装,而在「装完之后它不说话」。把模型通道这一格填对,前面所有部署步骤才真正变成可用的东西。用 TaoToken 的好处是凭证只有一份,模型想换就换,不用为了试一个新模型去重新走一遍注册实名流程。
接下来比较顺的动作是:先在 模型对话 里用同一把 Key 发一条消息,确认模型 ID 和通道都没问题;如果准备长期挂着跑技能,去 Coding Plan 看看套餐额度是否够用;Key 要新建或轮换,在 控制台 API Keys 里操作。OpenClaw 之外的命令行工具接入方式,可以参考 Claude Code 接入文档,里面的环境变量思路和这里配 llm 段是一回事。
配完记得把~/.openclaw/config.json加进你的加密备份里,Key 单独存一份。以后无论换 Mac、换 Windows 机器还是重装 WSL2,把这两样恢复回去,OpenClaw 就能立刻开口。