1. OpenClaw 3.1.0 部署后 Gateway 离线与路径报错到底卡在哪
OpenClaw 3.1.0 是一套本地运行的桌面自动化智能体框架,它通过 Gateway 网关进程把自然语言指令翻译成对文件系统、浏览器、键鼠的调用。很多人装完之后遇到两个高频故障:右上角状态栏一直显示「Gateway 离线」,或者启动阶段直接抛出路径非法、路径解析失败。这两个问题看起来一个像网络问题、一个像磁盘问题,实际上根因高度集中在同一处——endpoint 与鉴权配置没有指向一个可用的模型服务地址,以及安装目录里混入了中文、空格或特殊符号。
先说清楚 Gateway 是什么。你可以把 OpenClaw 客户端理解成「遥控器」,Gateway 是「信号中转站」,模型服务是「大脑」。遥控器按下指令,Gateway 负责把指令打包、带上鉴权信息、发到模型服务,再把返回的动作序列拆解执行。Gateway 离线,本质是它启动时握手失败或者心跳超时;路径报错,本质是它读写工作目录、日志目录、插件目录时拿到了非法字符串。两者都会在日志里留下明确痕迹,只要会看日志、会改配置,十分钟内能定位。
适合谁看这篇:已经拿到 OpenClaw 3.1.0 安装包、完成解压和首次启动,但卡在 Gateway 状态灯不亮,或者一启动就弹路径错误框的人。也适合把 OpenClaw 接到自建模型服务、需要把 endpoint 从默认地址改成 TaoToken 兼容地址的开发者。下面所有命令和配置片段都可以直接复制,路径按你自己的实际安装目录替换。
我试过在一台 Windows 11 和一台 macOS 上分别复现这两类故障,结论是:Gateway 离线里大约七成是 endpoint 写错或鉴权头缺失,两成是端口被占用,一成是安全软件拦截了本地回环通信;路径报错里九成是安装目录含中文或空格,剩下一成是配置文件里写了相对路径导致解析基准漂移。把这两条主线抓住,排查就不会乱。
2. TaoToken 前置准备:endpoint、Key 与模型 ID 三件套
在动 OpenClaw 的配置文件之前,先把模型服务这一侧准备好。TaoToken 提供 OpenAI 兼容的接口形态,OpenClaw 3.1.0 的 Gateway 正好支持自定义 base URL,所以对接路径是通的。你需要准备三样东西:Base URL、API Key、Model ID。这三件套缺一个,Gateway 就会在启动握手阶段失败,表现就是离线。
Base URL 用https://taotoken.net/api,注意这里不要带任何查询参数,Gateway 拼接路径时会自己补/v1/chat/completions这类后缀。API Key 在控制台的 API Keys 页面创建,创建后只显示一次,复制下来存到本地。Model ID 填你实际要调用的模型标识,比如claude-sonnet-4-5或gpt-4o这类,具体以控制台模型列表为准。
创建 Key 的入口在这里:
控制台 API Keys:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite
如果你还没决定用哪个模型,可以先在模型对话页面试一条消息,确认 Key 和模型 ID 能通,再回来配 OpenClaw:
模型对话:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite
接入文档里有完整的请求示例和字段说明,配 OpenClaw 之前扫一眼能省很多试错:
接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
这里要强调一个容易踩的坑:OpenClaw 的 Gateway 在启动时会做一次「探活」请求,如果 Base URL 末尾多写了/v1,而 Gateway 又自己拼一次/v1,就会变成/v1/v1/chat/completions,返回 404,Gateway 判定服务不可用,直接离线。所以 Base URL 只写到/api为止。同理,Key 前后不要带空格,从控制台复制时容易带上换行符,粘进配置文件后表现为 401。
另外,如果你打算长期跑编码类或 Agent 类任务,Coding Plan 的额度模型更适合高频调用,可以在控制台里看一下:
Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite
三件套准备好之后,先别急着改 OpenClaw,用一条 curl 验证服务侧是通的。这一步能把「服务侧问题」和「OpenClaw 配置问题」彻底分开,后面排查会快很多。
curl -sS https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer 你的API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-5", "messages": [{"role": "user", "content": "ping"}], "max_tokens": 16 }'返回里出现choices字段就说明服务侧没问题,可以进入 OpenClaw 配置环节。如果这里就报 401,先回控制台确认 Key 是否被禁用或额度耗尽;如果报连接超时,检查本机网络是否能正常访问该域名。
3. 可复制配置:把 OpenClaw 的 endpoint 改到 TaoToken
OpenClaw 3.1.0 的配置入口有两处,一处是安装目录下的.env文件,一处是客户端界面里的「设置 - 模型服务」。推荐直接改.env,因为界面改完有时不会热重载,需要重启 Gateway 才生效,而.env改完重启一次即可。文件位置在安装目录根下,比如D:\OpenClaw\.env或~/OpenClaw/.env。
先备份原文件,再按下面这段改。注意路径必须是纯英文,如果你安装目录本身含中文,先解决路径问题再改配置,否则改了也不生效。
# OpenClaw 3.1.0 Gateway 模型服务配置 GATEWAY_HOST=127.0.0.1 GATEWAY_PORT=8765 MODEL_BASE_URL=https://taotoken.net/api MODEL_API_KEY=sk-你的TaoToken密钥 MODEL_ID=claude-sonnet-4-5 MODEL_TIMEOUT=60 GATEWAY_HEARTBEAT_INTERVAL=15 LOG_LEVEL=info WORKSPACE_DIR=D:/OpenClaw/workspace LOG_DIR=D:/OpenClaw/logs PLUGIN_DIR=D:/OpenClaw/plugins几个字段逐个说明。GATEWAY_HOST保持127.0.0.1,不要改成0.0.0.0,否则本地回环探活可能被系统防火墙拦。GATEWAY_PORT默认 8765,如果这个端口被占用,Gateway 会启动失败并显示离线,后面排障章节会讲怎么查。MODEL_BASE_URL就是前面说的https://taotoken.net/api,不要带/v1。MODEL_API_KEY填你创建的那串 Key。MODEL_ID填控制台里确认可用的模型标识。
WORKSPACE_DIR、LOG_DIR、PLUGIN_DIR这三个路径是路径报错的重灾区。必须用绝对路径,且全英文、无空格。Windows 下用正斜杠/或双反斜杠\\,不要用单反斜杠,因为.env解析时单反斜杠会被当转义符吃掉,导致路径变成D:OpenClawworkspace这种畸形字符串,Gateway 一读就报路径解析失败。
如果你用的是 macOS,路径长这样:
WORKSPACE_DIR=/Users/yourname/OpenClaw/workspace LOG_DIR=/Users/yourname/OpenClaw/logs PLUGIN_DIR=/Users/yourname/OpenClaw/plugins改完.env后,不要直接双击客户端图标,那样可能复用旧进程。正确做法是先彻底退出 OpenClaw,再重启 Gateway。Windows 下用任务管理器确认没有残留的openclaw-gateway.exe,macOS 下用pkill -f openclaw-gateway。然后重新启动客户端,观察右上角状态。
如果你用的是 Claude Code 这类外部工具联动 OpenClaw,配置形态会变成 JSON。比如在~/.claude/settings.json里加一段:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的TaoToken密钥", "ANTHROPIC_MODEL": "claude-sonnet-4-5" } }这段和 OpenClaw 的.env是两套独立配置,不要混在一起改。OpenClaw 的 Gateway 只认.env,外部工具认自己的 settings。两边都指向同一个 Base URL 和 Key,模型 ID 保持一致,这样指令链路才不会在中间断掉。
4. 验证请求:确认 Gateway 在线与路径解析正常
配置改完重启后,先别急着发复杂指令,按下面顺序做三步验证。第一步看状态灯,第二步看日志,第三步发一条最小指令。
状态灯在客户端右上角。显示「Gateway 在线」说明握手成功。如果还是离线,先别慌,打开日志目录看最后 50 行。Windows 下可以用 PowerShell:
Get-Content D:\OpenClaw\logs\gateway.log -Tail 50macOS 下:
tail -n 50 ~/OpenClaw/logs/gateway.log日志里如果出现connect ECONNREFUSED 127.0.0.1:8765,说明 Gateway 进程根本没起来,多半是端口被占用或.env解析失败。如果出现401 Unauthorized,说明 Key 不对。如果出现ENOENT: no such file or directory,说明路径字段有问题,重点看WORKSPACE_DIR那几个值。
端口占用怎么查。Windows 下:
netstat -ano | findstr :8765macOS 下:
lsof -i :8765如果有别的进程占着 8765,把.env里的GATEWAY_PORT改成 8766 或 8877,重启即可。改完端口后,客户端界面里的「服务地址」如果之前手填过,也要同步改,否则界面连的还是旧端口。
第三步发最小指令。在对话框输入「列出当前工作目录下的文件」,回车。这条指令不涉及键鼠模拟,只走文件读取,能最快验证 Gateway 到模型服务再到本地执行的整条链路。如果返回了文件列表,说明 Gateway 在线且路径解析正常。如果返回「路径不存在」,去WORKSPACE_DIR指向的目录确认它真的存在,不存在就手动建一个空目录。
再补一条验证模型侧返回的指令:「用一句话说明你现在能做什么」。这条走的是纯对话,不碰文件系统。如果这条通、上一条不通,问题在本地路径权限;如果这条不通、上一条通,问题在模型服务鉴权。两条都通,基本可以确认部署完成。
验证通过后,建议把当前可用的.env复制一份存成.env.bak,下次升级或迁移时直接覆盖,省得重新配。这个习惯在 OpenClaw 版本迭代时特别有用,因为不同版本的字段名偶尔会变。
5. 本篇常见错排查:401、local proxy failed、reading choices、OAuth
这一节按真实报错逐条对照。你遇到哪条,直接跳到对应段落。
报错一:401 Unauthorized。日志里出现401或invalid api key。原因通常是 Key 复制时带了空格或换行,或者 Key 被禁用。处理:打开.env,把MODEL_API_KEY=后面整行删掉重新粘贴,确保等号后没有空格、行尾没有多余字符。粘完用cat -A .env(macOS)或Get-Content .env | Format-Hex(Windows)看一眼有没有隐藏字符。确认无误后重启 Gateway。
报错二:local proxy failed。日志里出现local proxy failed或proxy connect error。这是 Gateway 尝试通过本地代理转发请求时失败。OpenClaw 3.1.0 默认会读系统代理环境变量,如果你本机设过HTTP_PROXY或HTTPS_PROXY,Gateway 会走那个代理,而代理可能没开或规则不匹配。处理:在.env里显式加一行NO_PROXY=127.0.0.1,localhost,让本地回环不走代理。如果还不行,临时清掉系统代理环境变量再重启。
报错三:reading choices。日志里出现error reading choices或cannot read property 'choices' of undefined。这说明 Gateway 收到了响应,但响应体里没有choices字段,通常是 Base URL 拼错导致返回了 HTML 错误页,或者模型 ID 写错导致服务返回错误结构。处理:确认MODEL_BASE_URL是https://taotoken.net/api且不带/v1;确认MODEL_ID在控制台模型列表里存在。改完重启。
报错四:OAuth 相关。日志里出现OAuth token expired或oauth flow failed。OpenClaw 某些插件会走 OAuth 授权,如果你之前授权过又过期了,Gateway 启动时会卡在刷新环节。处理:在客户端「设置 - 账号」里退出登录再重新授权,或者直接删掉安装目录下的auth/缓存目录,重启后重新走一遍授权流程。
报错五:路径非法。弹窗提示「安装路径包含非法字符」或日志里invalid path。处理:把安装目录整体移到纯英文路径下,比如从D:\智能工具\OpenClaw移到D:\OpenClaw。移动后.env里的三个路径字段要同步改,否则指向旧目录照样报错。改完重启。
报错六:Gateway 反复重启。状态灯在「在线」和「离线」之间跳。多半是GATEWAY_HEARTBEAT_INTERVAL设得太短,或者模型服务响应慢导致心跳超时。把MODEL_TIMEOUT从 60 调到 120,心跳间隔从 15 调到 30,重启观察。
排查时有个通用技巧:每次只改一个字段,改完重启看日志。一次改三四个地方,出问题就不知道是哪个引起的。日志级别临时调到debug能看到更细的请求路径,定位完再调回info,否则日志文件涨得很快。
6. 语义一致 CTA:把 endpoint 固定下来之后做什么
endpoint 改到 TaoToken 并验证 Gateway 在线之后,OpenClaw 的指令链路就通了。接下来你可以把常用任务的指令模板固化下来,比如文件归档、表格汇总、浏览器信息提取,每条指令写清楚目标目录和输出格式,执行成功率会明显高于随口描述。
如果后面还要接别的工具,记住三件套原则:Base URL 写https://taotoken.net/api,Key 用控制台创建的,Model ID 用确认可用的。三件套对齐,Gateway 就不会再离线。
需要新建或轮换 Key 的时候回这里:
API Keys:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite
字段含义和请求示例看文档:
接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
想先验证模型返回再配 OpenClaw,用对话页面:
模型对话:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite
长期跑编码和 Agent 任务,看 Coding Plan:
Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite
最后留一个实操习惯:每次升级 OpenClaw 版本前,先把.env和logs/目录备份出来。升级后如果 Gateway 又离线,直接用备份的.env覆盖,再对比新旧字段差异,能省掉大量重复排查。路径报错同理,升级后先确认三个路径字段没被重置成默认值,再启动。