多个 Gateway(同一主机)

大多数设置应该使用一个 Gateway,因为单个 Gateway 可以处理多个消息连接和代理。如果您需要更强的隔离或冗余(例如救援机器人),请使用隔离的配置/端口运行单独的 Gateway。

隔离检查清单(必需)

  • OPENCLAW_CONFIG_PATH — 每个实例的配置文件
  • OPENCLAW_STATE_DIR — 每个实例的会话、凭据、缓存
  • agents.defaults.workspace — 每个实例的工作区根目录
  • gateway.port(或 --port)— 每个实例唯一
  • 派生端口(browser/canvas)不能重叠

如果这些共享,您会遇到配置竞争和端口冲突。

推荐:配置(--profile

配置自动限定 OPENCLAW_STATE_DIR + OPENCLAW_CONFIG_PATH 的范围并为服务名称添加后缀。

# 主配置
openclaw --profile main setup
openclaw --profile main gateway --port 18789

# 救援配置
openclaw --profile rescue setup
openclaw --profile rescue gateway --port 19001

每个配置的服务:

openclaw --profile main gateway install
openclaw --profile rescue gateway install

救援机器人指南

在同一主机上运行第二个 Gateway,有自己的:

  • 配置/配置文件
  • 状态目录
  • 工作区
  • 基础端口(加上派生端口)

这将救援机器人与主机器人隔离,以便在主机器人宕机时可以调试或应用配置更改。

端口间距:基础端口之间至少保留 20 个端口,这样派生的 browser/canvas/CDP 端口永远不会冲突。

如何安装(救援机器人)

# 主机器人(现有或全新,没有 --profile 参数)
# 运行在端口 18789 + Chrome CDC/Canvas/... 端口
openclaw onboard
openclaw gateway install

# 救援机器人(隔离配置 + 端口)
openclaw --profile rescue onboard
# 注意:
# - 工作区名称将默认后缀 -rescue
# - 端口应该至少 18789 + 20 端口,
#   最好选择完全不同的基础端口,如 19789,
# - 其余入职流程与正常相同

# 安装服务(如果入职期间未自动发生)
openclaw --profile rescue gateway install

端口映射(派生)

基础端口 = gateway.port(或 OPENCLAW_GATEWAY_PORT / --port)。

  • 浏览器控制服务端口 = 基础 + 2(仅回环)
  • 画布主机在 Gateway HTTP 服务器上提供(与 gateway.port 相同)
  • 浏览器配置 CDP 端口从 browser.controlPort + 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-main \
openclaw gateway --port 18789

OPENCLAW_CONFIG_PATH=~/.openclaw/rescue.json \
OPENCLAW_STATE_DIR=~/.openclaw-rescue \
openclaw gateway --port 19001

快速检查

openclaw --profile main status
openclaw --profile rescue status
openclaw --profile rescue browser status