OpenClaw Series

这篇文章属于 OpenClaw 本地排错实战篇

如果你已经装好了 OpenClaw,但本地控制台打不开、Safari 一直提示无法连接服务器,或者聊天页能开却发消息失败,这篇就可以直接照着做。

这篇不是泛泛而谈的“可能原因合集”,而是按一次真实排错路径整理出来的实操版教程。目标只有一个:让你把本地聊天页真正跑通。

先说结论:你看到这个报错,通常不是 Safari 坏了

很多人看到下面这个页面,第一反应是:

  • 是不是 Safari 有问题
  • 是不是本机网络坏了
  • 是不是 OpenClaw 没装好

其实更常见的真实情况是:

  • OpenClaw 的 Gateway 根本没起来
  • gateway.mode 没配置,服务被拦住了
  • 你打开的是裸地址,没有带 #token
  • 页面虽然能打开,但聊天会话被错误模型覆盖卡住了

OpenClaw 在 Safari 中无法连接 127.0.0.1:18789 的报错截图

如果你现在遇到的也是这个界面,先别急着重装。按下面顺序查,通常会比“删掉重来”快得多。


先判断:你到底卡在哪一层

先把问题分成两类。

第一类:浏览器页面直接打不开

典型表现:

  • Safari 提示无法连接服务器
  • 127.0.0.1:18789 完全打不开
  • Control UI 根本没显示出来

这类问题通常优先看:

  • Gateway 有没有启动
  • gateway.mode 是不是 local
  • 端口 18789 有没有真的在监听

第二类:页面能打开,但聊天发送失败

典型表现:

  • 首页能进
  • 聊天页也能开
  • 但一发消息就报模型错误
  • 或者一直没有正常回复

这类问题通常优先看:

  • 默认模型是不是配对了
  • 会话有没有残留错误的 providerOverride / modelOverride
  • API Key 有没有给到 Gateway 守护进程

所以你不要一上来就把“网页打不开”和“模型发不出去”混在一起看。


第 1 步:先跑三条命令,别靠猜

先在终端里执行:

1
2
3
openclaw doctor
openclaw gateway status
openclaw models status --plain

你主要看 3 个结果:

  1. doctor 有没有提示 gateway.mode is unset
  2. gateway statusRuntime 是不是正常
  3. 默认模型到底是什么

如果这里已经出现类似:

1
Gateway start blocked: set gateway.mode=local (current: unset)

那就说明你的问题不是 Safari,而是 Gateway 被配置拦住了。


第 2 步:如果 gateway.mode 没设,先把本地模式补上

这是最常见、也最容易被忽略的一步。

直接执行:

1
2
openclaw config set gateway.mode local
openclaw gateway restart

然后再检查:

1
openclaw gateway status

理想状态下你应该看到类似:

1
2
Runtime: running
Listening: 127.0.0.1:18789

这里有一个很容易误判的点:

  • Runtime: running 不代表一切正常
  • 但如果连 Listening: 127.0.0.1:18789 都没有,那网页基本不可能打开

所以别只看 running 两个字。


第 3 步:不要手打裸地址,要用带 token 的 Dashboard URL

很多人把这一步忽略了,结果明明服务已经起来,还是觉得页面“不对劲”。

正确做法是执行:

1
openclaw dashboard --no-open

它会打印一个完整地址,格式大概像这样:

1
http://127.0.0.1:18789/#token=你的token

请直接打开这条完整地址,而不是自己手敲:

1
http://127.0.0.1:18789

因为很多时候你需要的是:

  • 正确端口
  • 正确页面入口
  • 正确 token

如果你直接用没有 #token 的裸地址,页面可能能打开,也可能后续连接状态不完整,结果你又会误以为是别的问题。


第 4 步:如果页面能开,但聊天发不出去,先检查模型链路

这一步是很多人第一次本地跑通后,第二个最常见的坑。

你需要重点确认两件事:

1. 默认模型是不是官方支持的 provider/model

例如你想用 DeepSeek,优先用 OpenClaw 官方支持的:

1
openclaw models set deepseek/deepseek-chat

而不是随手自己写一个长得差不多的自定义 provider 名字。

有些自定义 provider 表面上看也能显示在列表里,但真正发请求时可能会返回:

  • 404 status code
  • 请求路径不兼容
  • fallback 看起来切换了,实际还是发不出去

2. API Key 有没有给到守护进程

如果你的 Gateway 是 daemon 方式运行,最稳的做法是把 Key 写进:

1
~/.openclaw/.env

例如:

1
DEEPSEEK_API_KEY=你的DeepSeekKey

然后重启 Gateway:

1
openclaw gateway restart

这样 OpenClaw 的本地守护进程能真正读到模型认证信息,而不是只在你当前终端临时可见。


第 5 步:如果聊天会话被旧配置卡住,清掉会话级模型覆盖

有一种情况特别容易把人绕晕:

  • 你已经把默认模型改对了
  • API Key 也补了
  • 但聊天页还是继续走旧模型

这通常说明问题不在“默认模型”,而在“当前会话的覆盖配置”。

OpenClaw 的会话信息通常在这个文件里:

1
~/.openclaw/agents/main/sessions/sessions.json

先停服务:

1
openclaw gateway stop

然后备份一下:

1
cp ~/.openclaw/agents/main/sessions/sessions.json ~/.openclaw/agents/main/sessions/sessions.json.bak

打开 sessions.json 后,找到类似:

1
2
3
4
"agent:main:main": {
"providerOverride": "...",
"modelOverride": "..."
}

如果这里还残留着错误的 provider 或 model,就把这些字段删掉。常见要清理的字段有:

  • providerOverride
  • modelOverride
  • fallbackNoticeSelectedModel
  • fallbackNoticeActiveModel
  • fallbackNoticeReason

然后重新启动:

1
openclaw gateway start

这一步的本质是:把“当前会话被锁死在旧模型里”的状态释放掉,让它重新继承你新的默认模型。


第 6 步:一套最短修复流程,照着走就行

如果你只想要最短版本,按下面这一套做:

1
2
3
4
5
openclaw doctor
openclaw config set gateway.mode local
openclaw models set deepseek/deepseek-chat
openclaw gateway restart
openclaw dashboard --no-open

如果页面能打开但聊天还失败,再补:

1
2
3
4
openclaw gateway stop
# 检查 ~/.openclaw/.env 是否有 DEEPSEEK_API_KEY
# 检查 ~/.openclaw/agents/main/sessions/sessions.json 是否残留 providerOverride / modelOverride
openclaw gateway start

这是目前本地单机环境里最稳的一条路线。


最后怎么验证自己真的修好了

修完后,不要只看“页面好像能打开了”,最好做 4 个确认。

1. 看 Gateway 状态

1
openclaw gateway status

你至少要确认:

  • Runtime: running
  • Listening: 127.0.0.1:18789

2. 看默认模型

1
openclaw models status --plain

如果你走的是 DeepSeek,本地排错时最稳的是看到:

1
deepseek/deepseek-chat

3. 用完整 Dashboard URL 打开

1
openclaw dashboard --no-open

复制它打印出来的完整链接,不要继续用旧标签页。

4. 再试一次主聊天页

如果你要直接进主会话,建议先从带 token 的 Dashboard 入口进去,再切到聊天页,而不是自己硬拼 URL。


你最容易踩的 3 个误区

误区 1:网页打不开,就一定是浏览器问题

错。

绝大多数时候是本地 Gateway 没起来,或者配置被拦住了。

误区 2:默认模型改了,当前会话就会自动跟着变

也不一定。

如果会话里残留了 providerOverride / modelOverride,它会继续优先走旧配置。

误区 3:我自己写了一个自定义 provider,名字差不多就能用

不一定。

表面上“能显示”不代表真正请求路径兼容。第一次本地排错,优先用 OpenClaw 官方已经支持的 provider 名称和模型引用格式,变量会少很多。


这篇教程适合谁

如果你现在正好属于下面这几种情况,这篇会特别有用:

  • 你是第一次在 Mac 上装 OpenClaw
  • 你已经装好了 CLI,但 Safari 打不开本地控制台
  • 你能进页面,但聊天消息发不出去
  • 你已经改过模型配置,现在怀疑是旧会话残留导致的

如果你后面还想继续往下做,我建议下一篇直接接:

  • 如何正确配置 DeepSeek / OpenAI / Anthropic 到 OpenClaw
  • 如何清理旧配置,避免“越修越乱”
  • 如何把本地 Control UI 跑通后,再接 Telegram / WhatsApp / Discord

官方文档入口

如果你想对照官方说明,可以继续看这些页面:

如果你愿意,我下一步还可以继续帮你把这篇教程再升级一版:

  • 补 3 到 5 张步骤截图
  • 顺手加一篇“Windows 版对应排错教程”
  • 再帮你把这篇文章放进 OpenClaw 专题页导航里