网关
多个 Gateway 网关
大多数设置只需要一个 Gateway 网关——单个 Gateway 网关可以处理多个消息连接和智能体。仅当需要更强的隔离或冗余(例如救援 Bot)时,才使用隔离的配置文件/端口运行多个独立的 Gateway 网关。
救援 Bot 快速开始
最简单的救援 Bot 设置:
- 让主 Bot 继续使用默认配置文件。
- 在
--profile rescue上运行救援 Bot,并为其配置独立的 Telegram Bot 令牌。 - 为救援 Bot 使用不同的基础端口,例如
19789。
这样,如果主 Bot 停止运行,救援 Bot 仍能进行调试或应用配置更改。基础端口之间至少留出 20 个端口,以确保派生的浏览器/CDP 端口绝不会发生冲突。
# 救援 Bot(独立的 Telegram Bot、独立的配置文件、端口 19789)openclaw --profile rescue onboardopenclaw --profile rescue gateway install --port 19789如果主 Bot 已在运行,通常只需执行这些操作。如果新手引导已经安装了救援服务,请跳过最后的 gateway install。
在 openclaw --profile rescue onboard 期间:
- 使用专供救援账户使用的独立 Telegram Bot 令牌(便于限制为仅操作员可用,独立于主 Bot 的渠道/应用安装,并提供简单的基于私信的恢复路径)。
- 保留
rescue配置文件名称。 - 使用至少比主 Bot 高 20 的基础端口。
- 接受默认的救援工作区,除非你已经自行管理了一个工作区。
--profile rescue onboard 会更改什么
--profile rescue onboard 会运行常规新手引导流程,但会将所有内容写入独立的配置文件,因此救援 Bot 拥有自己的:
- 配置文件/配置文件
- 状态目录
- 工作区(默认:
~/.openclaw/workspace-rescue) - 托管服务名称
- 基础端口(以及派生端口)
- Telegram Bot 令牌
除此之外,提示与常规新手引导相同。
常规多 Gateway 网关设置
同样的隔离模式适用于一台主机上的任意两个或多个 Gateway 网关——为每个额外的 Gateway 网关分配独立的命名配置文件和基础端口:
# 主 Gateway 网关(默认配置文件)openclaw setupopenclaw gateway --port 18789 # 额外的 Gateway 网关openclaw --profile ops setupopenclaw --profile ops gateway --port 19789两边都使用命名配置文件也可以:
openclaw --profile main setupopenclaw --profile main gateway --port 18789 openclaw --profile ops setupopenclaw --profile ops gateway --port 19789服务也遵循相同的模式:
openclaw gateway installopenclaw --profile ops gateway install --port 19789将救援 Bot 快速开始用于备用操作员通道;将常规配置文件模式用于跨不同渠道、租户、工作区或运维角色运行多个长期存在的 Gateway 网关。
隔离检查清单
每个 Gateway 网关实例都应为以下设置使用唯一值:
| 设置 | 用途 |
|---|---|
OPENCLAW_CONFIG_PATH |
每个实例的配置文件 |
OPENCLAW_STATE_DIR |
每个实例的会话、凭据和缓存 |
agents.defaults.workspace |
每个实例的工作区根目录 |
gateway.port(或 --port) |
每个实例使用唯一值 |
| 派生的浏览器/CDP 端口 | 见下文 |
共享其中任何一项都会导致配置、状态或端口冲突。即使
OPENCLAW_ALLOW_MULTI_GATEWAY=1 跳过了每个配置的单实例限制,Gateway 网关启动时
也会强制要求状态目录的所有权唯一。
端口映射(派生)
基础端口 = gateway.port(或 OPENCLAW_GATEWAY_PORT / --port)。
- 浏览器控制服务端口 = 基础端口 + 2(仅 local loopback)。
- Canvas 主机由 Gateway 网关 HTTP 服务器自身提供服务(与
gateway.port使用相同端口)。 - 浏览器配置文件的 CDP 端口从
browser control port + 9到+ 108自动分配。
如果在配置或环境变量中覆盖其中任何端口,则必须确保每个实例使用唯一值。
浏览器/CDP 注意事项(常见陷阱)
- 不要在多个实例上将
browser.cdpUrl固定为相同的值。 - 每个实例都需要独立的浏览器控制端口和 CDP 范围(从其 Gateway 网关端口派生)。
- 如需显式指定 CDP 端口,请为每个实例设置
browser.profiles.<name>.cdpPort。 - 对于远程 Chrome,请使用
browser.profiles.<name>.cdpUrl(每个配置文件、每个实例分别设置)。
手动环境变量示例
OPENCLAW_CONFIG_PATH=~/.openclaw/main.json \OPENCLAW_STATE_DIR=~/.openclaw \openclaw gateway --port 18789 OPENCLAW_CONFIG_PATH=~/.openclaw/rescue.json \OPENCLAW_STATE_DIR=~/.openclaw-rescue \openclaw gateway --port 19789快速检查
openclaw gateway status --deepopenclaw --profile rescue gateway status --deepopenclaw --profile rescue gateway probeopenclaw statusopenclaw --profile rescue statusopenclaw --profile rescue browser statusgateway status --deep会捕获旧安装遗留的 launchd/systemd/schtasks 服务。- 只有当你有意运行多个隔离的 Gateway 网关,或者 OpenClaw 无法证明可访问的探测目标是同一个 Gateway 网关时,才会出现
gateway probe警告文本(例如multiple reachable gateway identities detected),这是预期行为。指向同一 Gateway 网关的 SSH 隧道、代理 URL 或已配置的远程 URL,都属于一个具有多个传输方式的 Gateway 网关,即使各传输端口不同也是如此。