网关

多个 Gateway 网关

大多数设置只需要一个 Gateway 网关——单个 Gateway 网关即可处理多个消息连接和智能体。仅当需要更强的隔离或冗余时(例如救援机器人),才应使用相互隔离的配置文件/端口运行多个独立的 Gateway 网关。

救援机器人快速开始

最简单的救援机器人设置:

  • 让主机器人继续使用默认配置文件。
  • 使用 --profile rescue 运行救援机器人,并为其配置独立的 Telegram Bot 令牌。
  • 为救援机器人使用不同的基础端口,例如 19789。

这样,即使主机器人停机,救援机器人仍可调试或应用配置更改。基础端口之间至少应间隔 20 个端口,以免派生的浏览器/CDP 端口发生冲突。

bash
# 救援机器人(独立的 Telegram 机器人、独立的配置文件、端口 19789)openclaw --profile rescue onboardopenclaw --profile rescue gateway install --port 19789

如果主机器人已在运行,通常只需执行以上操作。如果新手引导已安装救援服务,请跳过最后的 gateway install。

在 openclaw --profile rescue onboard 期间:

  • 使用专供救援账户的独立 Telegram Bot 令牌(便于仅限操作员使用,不依赖主机器人的渠道/应用安装,并可提供简单的私信恢复路径)。
  • 保留 rescue 配置文件名称。
  • 使用至少比主机器人高 20 的基础端口。
  • 除非你已自行管理救援工作区,否则接受默认的救援工作区。

--profile rescue onboard 会更改什么

--profile rescue onboard 会运行常规新手引导流程,但将所有内容写入独立的配置文件,因此救援机器人会拥有自己的:

  • 配置文件/配置
  • 状态目录
  • 工作区(默认:~/.openclaw/workspace-rescue)
  • 托管服务名称
  • 基础端口(以及派生端口)
  • Telegram Bot 令牌

除此之外,提示与常规新手引导完全相同。

常规多 Gateway 网关设置

同样的隔离模式适用于同一主机上的任意一对或一组 Gateway 网关——为每个额外的 Gateway 网关分配独立的命名配置文件和基础端口:

bash
# 主实例(默认配置文件)openclaw setupopenclaw gateway --port 18789 # 额外的 Gateway 网关openclaw --profile ops setupopenclaw --profile ops gateway --port 19789

两侧都使用命名配置文件也可以:

bash
openclaw --profile main setupopenclaw --profile main gateway --port 18789 openclaw --profile ops setupopenclaw --profile ops gateway --port 19789

服务也遵循相同的模式:

bash
openclaw gateway installopenclaw --profile ops gateway install --port 19789

将救援机器人快速开始用于备用操作员通道;将常规配置文件模式用于跨不同渠道、租户、工作区或运维角色运行多个长期存在的 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(仅限环回地址)。
  • 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(每个配置文件、每个实例分别设置)。

手动设置环境变量示例

bash
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

快速检查

bash
openclaw gateway status --deepopenclaw --profile rescue gateway status --deepopenclaw --profile rescue gateway probeopenclaw statusopenclaw --profile rescue statusopenclaw --profile rescue browser status
  • gateway status --deep 可检测旧版安装遗留的 launchd/systemd/schtasks 服务。
  • 仅当你有意运行多个相互隔离的 Gateway 网关,或 OpenClaw 无法确认可访问的探测目标属于同一个 Gateway 网关时,才应出现类似 multiple reachable gateway identities detected 的 gateway probe 警告文本。指向同一个 Gateway 网关的 SSH 隧道、代理 URL 或已配置的远程 URL,仍是一个使用多种传输方式的 Gateway 网关,即使传输端口不同也是如此。

相关内容

Was this useful?
On this page

On this page