跳到主要内容
OpenClaw Gateway 常见问题与配置指南 | 极客日志
TypeScript Node.js AI 大前端
OpenClaw Gateway 常见问题与配置指南 OpenClaw Gateway 作为控制面进程负责消息接入、路由与会话管理。本文详解其默认端口、配置文件位置及热重载机制,涵盖 Binding 路由规则、多智能体隔离架构、安全认证配置(Token/密码)及 OpenAI 兼容 API 集成。针对 HTTP 403、Dashboard 无响应等故障提供排查路径,强调 localhost 访问仍需 Token 的安全策略,并给出多实例启动与技能加载的实操建议。
OpenClaw Gateway 常见问题
一、基础概念篇
Q1: OpenClaw Gateway 是什么?它的核心职责是什么?
Gateway 是 OpenClaw 的控制面进程,也是整个架构的核心枢纽。它主要承担以下关键职责:
消息接入 :接收来自 Telegram、WhatsApp、Slack、WebChat 等 Channel 的入站消息。
智能路由 :根据 Binding 规则将消息路由到对应的 Agent 和 Session。
会话管理 :维护 Agent 和 Session 的状态,管理聊天历史。
设备调度 :通过 node.invoke 调用已连接的 Node(设备/能力端点)执行具体操作。
认证授权 :管理所有接入的认证与权限控制。
驱动 Agent 运行 :协调 LLM 调用、工具执行、技能加载等。
简单来说,Gateway 就是 OpenClaw 的'交通指挥中心',所有消息、设备、智能体都由它统一调度。
Q2: Gateway 与 Agent 的关系是什么?为什么不能把 Gateway 当作 OpenClaw 的核心?
这是一个常见误区。正确的理解如下:
组件 角色定位 关系 Gateway 控制面/调度中心 负责'接消息、做路由、管会话' Agent 执行大脑 负责'理解、推理、执行',由 Gateway 驱动运行
Gateway 不直接处理业务逻辑 :它只是将消息路由到合适的 Agent,然后'启动'该 Agent 运行一轮对话。
Agent 是资源建模的'大脑' :每个 Agent 有独立的 workspace、配置、会话目录和人格设定。
Agent 不常驻运行 :被路由选中后才挂载运行,运行完即退出,不是持续运行的多进程服务。
注意:认为'Gateway 就是 OpenClaw 核心'是错误的。Gateway 是基础设施,Agent 才是业务逻辑的执行者。
Q3: Gateway 的默认端口是什么?Canvas Host 又是什么?
Gateway 默认使用以下端口:
主端口 :18789(HTTP + WebSocket 复用)
Canvas Host 端口 :18793(提供 HTTP 文件服务,为节点 WebView 提供界面能力)
Canvas Host 是 Gateway 同时承担的另一项职责:
提供路径 /__openclaw__/canvas/ 的 HTTP 文件服务。
为 WebChat、iOS 节点、Android 节点等提供 WebView 界面渲染能力。
节点不直接暴露业务逻辑,而是通过 Gateway 统一调度。
二、配置管理篇
Q4: OpenClaw 的配置文件在哪里?是什么格式?
配置文件位置和格式如下:
路径 :~/.openclaw/openclaw.json(可通过环境变量 自定义)
$OPENCLAW_CONFIG_PATH
格式 :JSON5 (支持注释、尾随逗号等宽松语法)
热重载 :默认启用,修改后自动生效(无需重启)如果文件不存在,系统会使用安全的默认值(包括默认工作区 ~/.openclaw/workspace)。
Q5: 如何修改 Gateway 的监听端口和绑定地址? 在 openclaw.json 中配置 gateway 对象即可:
{
"gateway" : {
"port" : 18789 ,
"bind" : "lan" ,
"mode" : "local"
}
}
"local":仅监听 127.0.0.1(默认,最安全)。
"lan":监听所有网卡,允许局域网访问(需要配置认证)。
"tailnet":监听 Tailscale 网络接口。
Q6: 配置更改后需要重启 Gateway 吗? {
"gateway" : {
"reload" : {
"mode" : "hybrid"
}
}
}
hybrid 模式 :大多数配置(如路由规则、认证令牌)可热生效。
需要重启的场景 :端口更改、绑定模式切换等关键配置。
Q7: 如何启动多个 Gateway 实例进行隔离测试?
OPENCLAW_CONFIG_PATH=~/.openclaw/a.json \
OPENCLAW_STATE_DIR=~/.openclaw-a \
openclaw gateway --port 19001
OPENCLAW_CONFIG_PATH=~/.openclaw/b.json \
OPENCLAW_STATE_DIR=~/.openclaw-b \
openclaw gateway --port 19002
OPENCLAW_CONFIG_PATH:指定配置文件路径。
OPENCLAW_STATE_DIR:指定状态目录(隔离会话、缓存等)。
三、路由与会话篇
Q8: 什么是 Binding?它是如何工作的? Binding(绑定)是 OpenClaw 的路由规则,决定入站消息进入哪个 Agent 和 Session。
精确对等匹配 :peer.kind + peer.id(特定用户/群组)。
父级对等匹配 :线程继承(如 Telegram 话题)。
公会 + 角色匹配 (Discord):guildId + roles。
公会匹配 (Discord):guildId。
团队匹配 (Slack):teamId。
账户匹配 :通道上的 accountId。
通道匹配 :该通道任意账户(accountId: "*")。
默认智能体 :agents.list[].default,否则列表第一个,最后回退到 main。
{
"bindings" : [
{
"channel" : "whatsapp" ,
"accountId" : "+1234567890" ,
"peer" : {
"kind" : "group" ,
"id" : "[email protected] "
} ,
"agent" : "support-bot"
}
]
}
Q9: 会话(Session)是如何标识和管理的? 会话是 Agent 下的一条独立对话,由 sessionKey 标识:
默认会话键格式 :agent:<agentId>:<mainKey>。
存储位置 :~/.openclaw/agents/<agentId>/sessions/。
包含内容 :聊天历史、路由状态、上下文记忆。
私聊 :默认折叠到共享的 main 会话(同一发送者历史连续)。
群聊 :默认隔离(每个群组独立会话)。
基于提及的群激活 :可配置 requireMention: true,只有 @机器人时才响应。
Q10: 什么是广播组(Broadcast Group)? 广播组允许为同一个对等方 运行多个智能体 (例如 WhatsApp 群组中同时运行 Alfred 和 Bärbel 两个 Agent)。
{
"broadcast" : {
"strategy" : "parallel" ,
"[email protected] " : [ "alfred" , "baerbel" ] ,
"+15555550123" : [ "support" , "logger" ]
}
}
一个 Agent 负责主要回复,另一个负责记录日志。
多人格 Agent 同时响应,提供不同视角的回答。
四、认证与安全篇
Q11: 为什么即使在 localhost 访问也需要 Token?
向导默认生成 Gateway 令牌(即使在 local loopback 上)。
目的 :阻止其他本地进程随意调用 Gateway,防止恶意软件滥用。
解决方案 :在 Control UI 设置或客户端配置中粘贴令牌以连接。
如果你确实想开放 local loopback(不推荐生产环境):
{
"gateway" : {
"auth" : null
}
}
openclaw doctor --generate-gateway-token
Q12: 如何配置密码认证和局域网访问? 生产环境推荐配置(允许局域网访问 + 密码认证):
{
"gateway" : {
"port" : 18789 ,
"mode" : "local" ,
"bind" : "lan" ,
"controlUi" : {
"allowInsecureAuth" : true
} ,
"auth" : {
"mode" : "password" ,
"token" : "29c4f73a9798b050122508fcdd72309db44fec0859857833" ,
"password" : "YourSecurePassword"
}
}
}
模式 用途 配置项 token仅令牌认证 gateway.auth.tokenpassword密码 + 令牌 gateway.auth.password + gateway.auth.token
注意:gateway.remote.token 仅用于远程 CLI 调用 ,不启用本地 Gateway 认证。
Q13: 非 localhost 绑定(lan/tailnet)后提示'未授权'怎么办?
配置 gateway.auth.mode(token 或 password)。
设置 gateway.auth.token 或 gateway.auth.password。
也可通过环境变量设置:OPENCLAW_GATEWAY_TOKEN 或 OPENCLAW_GATEWAY_PASSWORD。
{
"gateway" : {
"bind" : "lan" ,
"remote" : {
"token" : "xxx"
}
}
}
{
"gateway" : {
"bind" : "lan" ,
"auth" : {
"mode" : "token" ,
"token" : "your-secure-token-here"
}
}
}
五、多智能体架构篇
Q14: 什么是多智能体(Multi-Agent)架构?与单智能体有什么区别? 特性 单智能体模式(默认) 多智能体模式 AgentId 默认为 main 多个自定义 ID(如 work, personal) 工作区 ~/.openclaw/workspace~/.openclaw/workspace-<agentId>状态目录 ~/.openclaw/agents/main/agent~/.openclaw/agents/<agentId>/agent会话存储 ~/.openclaw/agents/main/sessions~/.openclaw/agents/<agentId>/sessions认证配置 共享 每智能体独立(auth-profiles.json) Skills 共享 每智能体独立 + 可共享
多人共享 Gateway :每个人有自己的隔离'大脑'和数据。
多身份管理 :工作号、个人号完全隔离。
不同人格设定 :每个 Agent 有自己的 AGENTS.md / SOUL.md。
Q15: 如何添加新的智能体?
openclaw agents add work
openclaw agents list --bindings
{
"agents" : {
"list" : [
{ "id" : "main" , "default" : true } ,
{ "id" : "work" , "agentDir" : "~/.openclaw/agents/work/agent" } ,
{ "id" : "personal" , "agentDir" : "~/.openclaw/agents/personal/agent" }
]
} ,
"bindings" : [
{ "channel" : "whatsapp" , "accountId" : "+123" , "agent" : "work" } ,
{ "channel" : "telegram" , "accountId" : "+456" , "agent" : "personal" }
]
}
重要警告:切勿在智能体之间重用 agentDir,这会导致认证/会话冲突!
Q16: 智能体之间的认证配置是共享的吗?
路径 :~/.openclaw/agents/<agentId>/agent/auth-profiles.json。
主智能体凭证不会自动共享 给其他智能体。
cp ~/.openclaw/agents/main/agent/auth-profiles.json \
~/.openclaw/agents/work/agent/auth-profiles.json
共享 Skills 则可以通过 ~/.openclaw/skills 目录实现,供所有 Agent 使用。
六、API 与集成篇
Q17: Gateway 如何提供 OpenAI 兼容的 API? Gateway 可以启用 OpenAI Chat Completions 兼容端点 (默认禁用):
{
"gateway" : {
"http" : {
"endpoints" : {
"chatCompletions" : {
"enabled" : true
}
}
}
}
}
端点 :POST http://<gateway-host>:<port>/v1/chat/completions。
认证 :Authorization: Bearer <token>。
选择 Agent :在 model 字段中编码 openclaw:<agentId> 或 agent:<agentId>。
curl http://localhost:18789/v1/chat/completions \
-H "Authorization: Bearer your-token" \
-H "Content-Type: application/json" \
-d '{ "model": "openclaw:main", "messages": [{"role": "user", "content": "Hello"}] }'
通过 Header x-openclaw-agent-id: <agentId> 指定 Agent。
通过 Header x-openclaw-session-key: <sessionKey> 完全控制会话路由。
Q18: 什么是 OpenResponses API?如何启用? OpenResponses 是 OpenClaw 提供的另一兼容层,支持 POST /v1/responses 端点。
{
"gateway" : {
"http" : {
"endpoints" : {
"responses" : {
"enabled" : true ,
"maxBodyBytes" : 20000000 ,
"files" : { "maxBytes" : 5242880 } ,
"images" : { "maxBytes" : 10485760 }
}
}
}
}
}
底层都作为普通 Gateway agent 运行执行。
路由/权限/配置与 Gateway 完全一致。
支持文件、图片上传等更丰富的功能。
Q19: 如何通过环境变量配置第三方模型(如 Claude、OpenAI)? 不推荐仅使用环境变量,OpenClaw 的架构要求在配置文件中显式定义:
export ANTHROPIC_BASE_URL=https://third-party-api.com
{
"models" : {
"providers" : [
{
"id" : "xingjiabiapi" ,
"name" : "Third Party API" ,
"baseUrl" : "https://api.third-party.com/v1" ,
"apiKey" : "your-api-key"
}
]
} ,
"agents" : {
"defaults" : {
"model" : {
"primary" : "xingjiabiapi/claude-3-5-sonnet"
}
}
}
}
关键要点:agents.defaults.model.primary必须 包含自定义 Provider 的前缀(如 xingjiabiapi/),否则系统会默认使用官方 Anthropic 路由,导致 403 错误。
七、故障排查篇
Q20: 报错 HTTP 403 Forbidden: Request not allowed 如何解决? 最常见原因:OpenClaw 将请求发送到了官方 Anthropic API,而非你配置的第三方地址。
检查 agents.defaults.model.primary 的值。
确认包含 Provider 前缀 :如 xingjiabiapi/claude-3-5-sonnet。
错误示例 :只写 claude-3-5-sonnet(会路由到官方 API)。
正确示例 :xingjiabiapi/claude-3-5-sonnet。
tail -f /tmp/openclaw/openclaw-$(date +%Y-%m-%d).log | grep "agent model:"
Q21: Dashboard Chat 界面无响应怎么办?
确认模型配置 :搜索日志中的 agent model: 行,确认当前加载的模型是否为你配置的第三方模型。
验证认证 :检查 Control UI 设置中的 connect.params.auth.token 是否正确,避免将令牌放在 URL 中(不安全)。
ls -la /tmp/openclaw/
tail -f /tmp/openclaw/openclaw-<日期>.log
openclaw gateway status
openclaw doctor
Q22: 如何查看 Gateway 的实时日志和状态? openclaw gateway status
openclaw doctor
openclaw models status
openclaw agents list --bindings
openclaw message send --target +15555550123 --message "Test"
openclaw devices list
openclaw devices approve <requestId>
默认:/tmp/openclaw/openclaw-<日期>.log。
可通过配置自定义日志路径。
Q23: 如何排查'技能找不到'的问题?
确认技能安装位置 :
每智能体技能:~/.openclaw/agents/<agentId>/workspace/skills/。
共享技能:~/.openclaw/skills/。
验证技能配置 :技能需要在 Agent 的 workspace 中正确配置,检查 skills.json 或相关元数据文件。
openclaw gateway status
openclaw gateway start
常见误区:技能找不到往往是因为 Gateway 未启动 或 技能安装在错误的 Agent workspace 中。
附录:快速参考表
Gateway 配置速查 配置项 说明 默认值 gateway.port监听端口 18789gateway.bind绑定模式 localgateway.auth.mode认证模式 tokengateway.reload.mode热重载模式 hybridCanvas Host 端口 WebView 服务 18793
重要路径速查 路径 用途 ~/.openclaw/openclaw.json主配置文件 ~/.openclaw/workspace默认工作区 ~/.openclaw/agents/<agentId>/agent智能体状态目录 ~/.openclaw/agents/<agentId>/sessions会话存储 /tmp/openclaw/日志文件
关键环境变量 变量 用途 OPENCLAW_CONFIG_PATH自定义配置文件路径 OPENCLAW_STATE_DIR自定义状态目录 OPENCLAW_GATEWAY_TOKENGateway 认证令牌 OPENCLAW_GATEWAY_PASSWORDGateway 认证密码 OPENCLAW_PROFILE配置文件后缀(如 work → openclaw-work.json)
总结 OpenClaw Gateway 是整个系统的控制中枢,理解它的核心概念对后续学习至关重要:
Gateway ≠ Agent :Gateway 是调度中心,Agent 是执行大脑。
路由通过 Binding 实现 :优先级从高到低匹配,最终落到具体 Agent 和 Session。
多智能体实现隔离 :每个 Agent 有独立的工作区、认证、会话,适合多人共享。
安全默认强化 :即使是 localhost 也需要认证,生产环境务必配置密码/令牌。
配置热重载 :大多数修改无需重启,但关键更改(如端口)仍需重启。
建议在学习过程中结合 openclaw doctor 和日志排查问题,遇到报错优先检查 模型路由配置 和 认证令牌设置 。
相关免费在线工具 RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown转HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
HTML转Markdown 将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online