多个 Gateway
大多数安装场景只需要一个 Gateway——单个 Gateway 即可处理多个消息连接和智能体。只有在需要更强的隔离或冗余(例如救援机器人)时,才使用隔离的 profile/端口运行独立的 Gateway。
救援机器人快速入门¶
最简单的救援机器人设置如下:
- 将主机器人保留在默认 profile 上。
- 在
--profile rescue上运行救援机器人,并使用其独立的 Telegram 机器人令牌。 - 将救援机器人放在不同的基础端口上,例如
19789。
这样,即使主机器人宕机,救援机器人也能调试或应用配置更改。基础端口之间至少留出 120 个端口,以确保派生的浏览器/CDP 端口永远不会冲突。每个实例的端口范围可达 base + 110:其浏览器控制端口是 base + 2,该端口的 CDP 范围一直延伸到 base + 110。
# Rescue bot (separate Telegram bot, separate profile, port 19789)
openclaw --profile rescue onboard
openclaw --profile rescue gateway install --port 19789
如果你的主机器人已在运行,通常只需这些操作。如果初始化流程已经安装了救援服务,请跳过最后的 gateway install。
在 openclaw --profile rescue onboard 过程中:
- 使用专门用于救援账户的独立 Telegram 机器人令牌。它很容易保持仅限操作员访问,与主机器人的渠道和应用安装相互独立,并提供了基于私信(DM)的简单恢复路径。
- 保留
rescueprofile 名称。 - 使用一个比主机器人至少高 120 的基础端口。
- 接受默认的救援工作区,除非你已经自行管理了一个。
--profile rescue onboard 更改了哪些内容¶
--profile rescue onboard 会运行正常的初始化流程,但将所有内容写入独立的 profile,因此救援机器人拥有自己的:
- Profile/配置文件
- 状态目录
- 工作区(默认:
~/.openclaw/workspace-rescue) - 托管服务名称
- 基础端口(以及派生端口)
- Telegram 机器人令牌
其余交互提示与普通初始化流程完全相同。
通用多 Gateway 设置¶
同样的隔离模式适用于一台主机上的任意一对或一组 Gateway。为每个额外的 Gateway 分配自己的命名 profile 和基础端口。
openclaw setup 会在尚未配置的 profile 上运行初始化流程。它执行与前面救援机器人所用的 onboard 命令相同的首次运行任务。当你想在已经配置好的 profile 上运行初始化流程时,请使用 onboard。
# main (default profile)
openclaw setup
openclaw gateway --port 18789
# extra gateway
openclaw --profile ops setup
openclaw --profile ops gateway --port 19789
两侧都使用命名 profile 也同样可行:
openclaw --profile main setup
openclaw --profile main gateway --port 18789
openclaw --profile ops setup
openclaw --profile ops gateway --port 19789
服务也遵循相同的模式:
使用救援机器人快速入门来建立备用操作员通道。对于跨不同渠道、租户、工作区或运维角色的多个长期运行的 Gateway,请使用通用 profile 模式。
隔离检查清单¶
请确保以下各项在每个 Gateway 实例中保持唯一:
| Setting | 用途 |
|---|---|
OPENCLAW_CONFIG_PATH |
每个实例的配置文件 |
OPENCLAW_STATE_DIR |
每个实例的会话、凭据和缓存 |
agents.defaults.workspace |
每个实例的工作区根目录 |
gateway.port (or --port) |
每个实例唯一 |
| 派生的浏览器/CDP 端口 | 见下文 |
共享其中任何一项都会导致配置、状态或端口冲突。Gateway 启动时会强制要求唯一的状态目录所有权,即使设置了 OPENCLAW_ALLOW_MULTI_GATEWAY=1 也不例外。
Warning
仅设置 OPENCLAW_STATE_DIR 并不能隔离托管 Gateway 服务。服务名称遵循 profile,而非状态目录。在进行初始化流程或服务安装测试时,请使用专用的命名 profile 和唯一端口,或者使用隔离的机器。不要针对临时状态目录安装或重启默认服务。
端口映射(派生)¶
基础端口 = gateway.port(或 OPENCLAW_GATEWAY_PORT / --port)。
- 浏览器控制服务端口 = base + 2(仅回环)。
- 托管的 widget 文档和 A2UI 渲染器资源由 Gateway HTTP 服务器自身提供(与
gateway.port相同的端口)。 - 浏览器 profile 的 CDP 端口会自动分配,范围为
browser control port + 9到+ 108。
如果你在配置或环境变量中覆盖以上任何一项,则必须保持每个实例唯一。
浏览器/CDP 注意事项(常见陷阱)¶
- 不要在多个实例上将
browser.cdpUrl固定为相同的值。 - 每个实例都需要自己的浏览器控制端口和 CDP 范围(由其 gateway 端口派生)。
- 如需显式指定 CDP 端口,请为每个实例设置
browser.profiles.<name>.cdpPort。 - 对于远程 Chrome,请使用
browser.profiles.<name>.cdpUrl(每个 profile、每个实例分别设置)。
手动环境变量示例¶
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 --deep
openclaw --profile rescue gateway status --deep
openclaw --profile rescue gateway probe
openclaw status
openclaw --profile rescue status
openclaw --profile rescue browser status
gateway status --deep可以发现旧安装遗留的 launchd/systemd/schtasks 服务。doctor --deep还会在无法检查可识别的服务定义或原生服务管理器时进行报告。请恢复检查权限并重新运行 Doctor;不完整的扫描并不能证明不存在其他服务。检查警告绝不授权进行服务清理。gateway probe出现类似multiple reachable gateway identities detected的警告文本,在两种情况下是预期的:你故意运行了多个隔离的 Gateway,或者 OpenClaw 无法证明可达的探测目标是同一个 Gateway。通过 SSH 隧道、代理 URL 或配置的远程 URL 访问同一个 Gateway,只是一个 Gateway 的多种传输方式,即使传输端口不同也是如此。
相关¶
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw