openclaw gateway ... 下。
Bonjour 发现
本地 mDNS + 广域 DNS-SD 设置。
发现概览
OpenClaw 如何发布和查找网关。
配置
顶层网关配置键。
运行 Gateway
启动行为
启动行为
- 除非在
~/.openclaw/openclaw.json中设置了gateway.mode=local,否则拒绝启动。临时/开发运行可使用--allow-unconfigured;它会绕过此保护,但不会写入或修复配置。 - 当启动时发现可修复的无效配置,交互式终端会提示运行
openclaw doctor --fix,并在获得同意后重新尝试启动一次。非交互式运行不会自动修复;它们只会打印该命令。如果修复后的配置仍然无效,启动仍会停止。 openclaw onboard --mode local和openclaw setup会写入gateway.mode=local。如果配置文件存在但缺少gateway.mode,会被视为损坏/被清空的配置,Gateway 不会替你猜测local——请重新运行 onboarding、手动设置该键,或传入--allow-unconfigured。- 未经认证而绑定到 loopback 之外的地址会被阻止。
--bind的lan、tailnet和custom目前只会通过仅 IPv4 的路径解析;仅 IPv6 的自带主机场景需要在 Gateway 前放置一个 IPv4 sidecar 或代理。- 在获得授权时,
SIGUSR1会触发进程内重启。commands.restart(默认:启用)控制外部发送的SIGUSR1;将其设为false可阻止手动 OS 信号重启。面向代理的gateway工具是只读的;代理需要通过经人工批准的openclaw委托工具来请求重启。 SIGINT/SIGTERM会停止进程,但不会恢复自定义终端状态——如果你把 CLI 包装在 TUI 或原始模式输入中,请在退出前自行恢复终端。
选项
number
WebSocket 端口(默认来自 config/env;通常为
18789)。string
绑定模式:
loopback(默认)、lan、tailnet、auto、custom。string
connect.params.auth.token 的共享令牌。若已设置,默认为 OPENCLAW_GATEWAY_TOKEN。string
认证模式:
none、token、password、trusted-proxy。string
--auth password 的密码。string
从文件中读取 Gateway 密码。
string
Tailscale 暴露方式:
off、serve、funnel。boolean
在退出时重置 Tailscale serve/funnel 配置。
boolean
在不强制
gateway.mode=local 的情况下启动。仅用于临时/开发引导;不会持久化或修复配置。boolean
如果缺失,则创建开发配置和工作区(跳过
BOOTSTRAP.md)。boolean
允许开发版 Gateway 从环境变量自动配置通道。需要
--dev。boolean
重置开发配置、凭据、会话和工作区。需要
--dev。boolean
在启动前终止目标端口上任何已存在的监听。在非交互式 shell 中,这会拒绝终止已验证的 Gateway 监听;请改用
--dev 或使用空闲端口的隔离 --profile。boolean
向 stdout/stderr 输出详细日志。
boolean
仅在控制台显示 CLI 后端日志(同时也会启用 stdout/stderr)。
string
default:"auto"
WebSocket 日志样式:
auto、full、compact。boolean
--ws-log compact 的别名。boolean
将原始模型流事件记录为 JSONL。
string
原始流 JSONL 路径。
--claude-cli-logs 是 --cli-backend-logs 的已弃用别名。
对于 --bind custom,请将 gateway.customBindHost 设置为一个 IPv4 地址。除 127.0.0.1 或 0.0.0.0 之外的任何地址,还要求同一端口上的 127.0.0.1 供同主机客户端使用;如果任一监听无法绑定,启动都会失败。通配符 0.0.0.0 不会额外添加一个必需别名。仅 IPv6 的自带主机部署需要在 Gateway 前面放置一个 IPv4 sidecar 或代理。
显示已配置的令牌
当客户端需要已配置的共享令牌时,在 Gateway 主机上运行:gateway.auth.token、OPENCLAW_GATEWAY_TOKEN 和已配置的 SecretRefs,然后仅输出令牌。它要求使用交互式终端,并拒绝重定向或管道输出,以避免凭据无意中进入命令日志。请将终端输出视为机密信息。
如果未配置持久令牌,请运行 openclaw doctor --generate-gateway-token,重启 Gateway,然后重新运行该命令。通用的 openclaw config get 输出仍会被脱敏,包括使用 --json 时也是如此。
重启 Gateway
--safe 会要求正在运行的 Gateway 预检活跃工作,并在这些工作排空后安排一次合并重启。等待时间上限为 5 分钟;当预算耗尽时,重启会被强制执行。--safe 不能与 --force 或 --wait 组合使用。
--skip-deferral 会在安全重启时绕过活跃工作延迟门,因此即使存在已报告的阻塞项,Gateway 也会立即重启。它必须与 --safe 一起使用——当某个延迟被失控任务卡住时,可使用它。
--wait <duration> 会覆盖普通(非安全)重启的排空预算。它接受纯毫秒数或带单位后缀 ms、s、m、h、d(例如 30s、5m、1h30m);--wait 0 表示无限等待。它不能与 --force 或 --safe 同时使用。
--force 会跳过活跃工作排空并立即重启。普通 restart(不带标志)将保持现有的服务管理器重启行为。
安装身份
服务管理(install、start、stop、restart、uninstall、Doctor 服务修复以及自更新服务处理)归属于拥有主机服务的安装。该安装是操作系统账户主目录下规范的 .openclaw 目录,或命名配置文件映射到该位置的 .openclaw-<profile> 目录。命名配置文件使用彼此独立的原生服务身份。
OPENCLAW_HOME,或指向其他位置的 OPENCLAW_STATE_DIR 或 OPENCLAW_CONFIG_PATH,会被视为隔离状态并跳过。重定位或复制的状态树无法接管并重写账户的主机服务。
在 macOS 和 Windows 上,由原生服务管理的配置文件名称必须为小写。仅运行时使用的配置文件仍可使用大写,但在普通不区分大小写的文件系统上,Main 和 main 等仅大小写不同的名称会共享路径,因此无法安全地拥有彼此独立的原生服务。在 macOS 上,小写名称 gateway 和 node 也无法用于原生服务管理,因为其历史 LaunchAgent 标签会与默认的 Gateway 和 node-host 服务发生冲突。
命名配置文件还必须使用从 OPENCLAW_PROFILE 派生的原生服务身份。在进行服务管理前,需取消设置 OPENCLAW_LAUNCHD_LABEL、OPENCLAW_SYSTEMD_UNIT 或 OPENCLAW_WINDOWS_TASK_NAME;自定义身份仍可用于默认配置文件,或仅运行时/外部监督器设置。
外部监督器
仅当另一个进程管理器负责 Gateway 生命周期时,才设置OPENCLAW_SUPERVISOR_MODE=external。在此模式下:
openclaw gateway restart会保留现有的安全、强制和有界等待行为,但目标会转向已验证正在运行的 Gateway,而不是 launchd、systemd 或 Task Scheduler。- 原生的服务安装、启动、停止和卸载操作会被拒绝,并提示使用外部监督器。
- OpenClaw 自更新会被拒绝,以便由监督器停止 Gateway、替换并完成运行时,然后安全地重新启动它。
- 从新进程发起的重启会在干净退出前写入一个有界的 SQLite 交接记录。若持久化失败,Gateway 会回退到进程内重启,而不是在没有可消费交接记录的情况下退出。
OPENCLAW_SUPERVISOR_MODE=external 后,才能进行声明。
对于相同的稳定管理器标识符,该声明具有幂等性;如果管理器不同,则会拒绝声明。不存在自动声明或取消声明路径。一旦声明,未标记的可写共享状态打开操作会在权限检查、架构迁移、增量修复、压缩或其他变更之前失败。只读访问仍然可用。这是为了防止未标记的同用户写入者意外写入,而不是身份验证或租约协议。
对于升级和回滚,请让监督器创建一个整合的、与 WAL 一致的副本快照,且不包含 SQLite 旁车文件;然后在激活前运行目标版本自身的 openclaw database preflight <copied-state.sqlite> --json。仅凭数字架构版本无法证明相同版本的增量结构具有兼容性。请参阅数据库架构。
OPENCLAW_SERVICE_REPAIR_POLICY=external 仍然是独立的 Doctor 修复策略。它不会声明运行时所有权;需要同时使用这两种行为的监督器应同时设置这两个变量。
外部监督器可以通过隐藏的机器契约协商并消费重启交接:
1 支持 consume 操作。消费会在一次立即的 SQLite 事务中验证预期 PID 和有界交接字段。被接受的交接会在返回成功之前被删除,因此并发或重放的消费者不能同时接受它。PID 不匹配会保留给匹配的所有者;缺失、过期和无效的记录都不会授权重启。
有效的机器请求会返回 JSON,退出码为 0,包括非重启结果。无效参数会返回 reason: "invalid-expected-pid",退出码为 2;状态存储失败会返回 reason: "store-unavailable",退出码为 1。监督器应在其将要使用的确切运行时或启动器上探测 capabilities,而不是从 OpenClaw 版本字符串推断支持情况,或直接读取私有的 SQLite schema。
Gateway 性能分析
OPENCLAW_GATEWAY_STARTUP_TRACE=1在启动期间记录各阶段耗时,包括每个阶段的eventLoopMax延迟以及插件查找表耗时(已安装索引、清单注册表、启动规划、所有者映射工作)。OPENCLAW_GATEWAY_RESTART_TRACE=1记录重启范围内的restart trace:行:信号处理、活跃工作排空、关闭阶段、下次启动、就绪时间以及内存指标。OPENCLAW_DIAGNOSTICS=timeline配合OPENCLAW_DIAGNOSTICS_TIMELINE_PATH=<path>会为外部 QA harness 写出尽力而为的 JSONL 启动诊断时间线(等同于配置diagnostics.flags: ["timeline"];该路径仍然只能通过环境变量设置)。再添加OPENCLAW_DIAGNOSTICS_EVENT_LOOP=1可包含事件循环样本。pnpm build然后执行pnpm test:startup:gateway -- --runs 5 --warmup 1,将 Gateway 启动与已构建的 CLI 入口进行基准测试:首次进程输出、/healthz、/readyz、启动 trace 时序、事件循环延迟以及插件查找表耗时。pnpm build然后执行pnpm test:restart:gateway -- --case skipChannels --runs 1 --restarts 5,在 macOS 或 Linux 上对进程内重启进行基准测试(Windows 不支持;重启需要SIGUSR1)。它使用SIGUSR1,在子进程中启用两种 trace,并记录下一次/healthz、下一次/readyz、停机时间、就绪时间、CPU、RSS 以及重启 trace 指标。/healthz表示存活状态;/readyz表示可用就绪状态。请将 trace 行和基准输出视为归因信号,而不是从单次时间跨度或样本得出的完整性能结论。
查询正在运行的网关
所有查询命令都使用 WebSocket RPC。- 输出模式
- 共享选项
- 默认:人类可读(TTY 中带颜色)。
--json:机器可读 JSON(无样式/无 spinner)。--no-color(或NO_COLOR=1):禁用 ANSI,同时保留人类布局。
当你设置
--url 时,CLI 不会回退到配置或环境凭据。请显式传入 --token 或 --password。缺少显式凭据会报错。gateway health
/healthz 是一个存活探针:只要服务器能够响应 HTTP,它就会立即返回。/readyz 更严格,在启动插件 sidecar、通道或已配置的钩子仍在初始化时,它会保持红色。本地或经过认证的详细 /readyz 响应包含一个 eventLoop 诊断块(延迟、利用率、CPU 核心比率、degraded 标志)。
number
目标是此端口上的本地回环网关。此调用会覆盖
OPENCLAW_GATEWAY_URL 和 OPENCLAW_GATEWAY_PORT。gateway usage-cost
从会话日志中获取使用成本摘要。
number
default:"30"
要包含的天数。
string
将摘要限定到某个已配置的代理 id。
boolean
汇总所有已配置的代理。不能与
--agent 同时使用。网关稳定性
从正在运行的网关获取最近的诊断稳定性记录器。
number
default:"25"
包含的最近事件最大数量(最大
1000)。string
按诊断事件类型过滤,例如
payload.large 或 diagnostic.memory.pressure。number
仅包含某个诊断序号之后的事件。
string
读取已持久化的稳定性 bundle,而不是调用正在运行的网关。
--bundle latest(或直接使用裸 --bundle)会选择状态目录下最新的 bundle;你也可以直接传入 bundle JSON 路径。boolean
写出一个可共享的支持诊断 zip,而不是打印稳定性细节。
string
--export 的输出路径。隐私和 bundle 行为
隐私和 bundle 行为
- 记录会保留运行元数据:事件名称、计数、字节大小、内存读数、队列/会话状态、审批 id、通道/插件名称,以及已脱敏的会话摘要。它们不包含聊天文本、webhook 正文、工具输出、原始请求/响应正文、令牌、cookie、密钥值、主机名以及原始会话 id。设置
diagnostics.enabled: false可完全禁用记录器。 - 当记录器已有事件时,严重的网关退出、关闭超时以及重启启动失败会将相同的诊断快照写入
~/.openclaw/logs/stability/openclaw-stability-*.json。使用openclaw gateway stability --bundle latest检查最新的 bundle;--limit、--type和--since-seq也同样适用于 bundle 输出。
gateway diagnostics export
写入一个用于错误报告的本地诊断 zip 文件。有关隐私模型和捆绑包内容,请参阅诊断导出。
string
输出 zip 路径。默认为状态目录中的支持导出文件。
number
default:"5000"
要包含的已清理日志行的最大数量。
number
default:"1000000"
要检查的日志字节数上限。
string
用于健康状态快照的网关 WebSocket URL。
string
用于健康状态快照的网关令牌。
string
用于健康状态快照的网关密码。
number
default:"3000"
状态/健康状态快照超时时间。
boolean
跳过对持久化稳定性捆绑包的搜索。
boolean
以 JSON 格式输出写入路径、大小和清单。
manifest.json(文件清单)、summary.md(Markdown 摘要)、diagnostics.json(顶层配置/日志/发现项/稳定性/状态/健康状态摘要)、config/sanitized.json、status/gateway-status.json、health/gateway-health.json、logs/openclaw-sanitized.jsonl,以及在存在时的 stability/latest.json。
该导出旨在用于共享。它会保留对调试有用的运行时详细信息——安全的日志字段、子系统名称、状态码、持续时间、已配置的模式、端口、插件/提供商 ID、非敏感的功能设置,以及经过清理的运行时日志消息——并省略或删除聊天文本、webhook 正文、工具输出、凭据、Cookie、账户/消息标识符、提示词/指令文本、主机名和机密值。当日志消息看起来像用户/聊天/工具负载文本时(例如“用户说”“聊天文本”“工具输出”“webhook 正文”),导出内容只会保留该消息已被省略及其字节数的信息。
gateway status
显示 Gateway 服务(launchd/systemd/schtasks)以及一个可选的连通性/认证探测。
string
添加一个显式探测目标。已配置的远程和 localhost 仍会被探测。
string
用于探测的令牌认证。
string
用于探测的密码认证。
number
default:"10000"
探测超时。
boolean
跳过连通性探测(仅服务视图)。
boolean
也扫描系统级服务。
boolean
将连通性探测升级为读取探测;如果失败则以非零状态退出。不能与
--no-probe 组合使用。状态语义
状态语义
- 即使本地 CLI 配置缺失或无效,也仍可用于诊断。
- 默认输出证明服务状态、WebSocket 连接,以及握手时可见的认证能力——而不是读/写/管理操作。
- 对于首次设备认证,探测不会产生变更:如果已存在缓存的设备令牌就复用它,但绝不会为了检查状态而新建 CLI 设备身份或只读配对记录。
- 在可能的情况下,会为探测认证解析已配置的 SecretRef。若必需的 SecretRef 未解析,且探测连通性/认证失败,则
--json会报告rpc.authWarning;请显式传入--token/--password,或修复 secret 来源。一旦探测成功,未解析认证警告将被抑制。 - 当运行中的 Gateway 报告
gateway.version时,JSON 输出会包含它;如果握手探测无法提供版本元数据,--require-rpc可以回退到status.runtimeVersionRPC 载荷。 - 当监听服务不足以满足需求、你还需要读取作用域的 RPC 也正常时,请在脚本/自动化中使用
--require-rpc。 --deep会扫描额外的 launchd/systemd/schtasks 安装;当发现多个类似 gateway 的服务时,人工输出会打印清理提示(通常建议每台机器只运行一个 gateway),并在相关时报告最近一次 supervisor 重启接力。--deep还会以插件感知模式运行配置校验(pluginValidation: "full"),并显示插件清单警告(例如缺少 channel 配置元数据)。默认的gateway status保持快速的只读路径,会跳过插件校验。- 人工输出会包含已解析的文件日志路径,以及 CLI 与服务的配置路径/有效性,帮助诊断 profile 或 state-dir 漂移。
- 人工输出会包含
Gateway heap:,其中显示应用的限制及其自适应推导方式。JSON 输出会将相同报告暴露为service.gatewayHeap。
Linux systemd 认证漂移检查
Linux systemd 认证漂移检查
- 服务认证漂移检查会同时读取单元中的
Environment=和EnvironmentFile=(包括%h、带引号的路径、多个文件以及可选的-文件)。 - 使用合并后的运行时环境(先取服务命令环境,再回退到进程环境)解析
gateway.auth.token的 SecretRef。 - 当令牌认证并未实际启用时,令牌漂移检查会跳过配置中的令牌解析(
gateway.auth.mode明确为password/none/trusted-proxy,或模式未设置且密码可能生效、同时没有可生效的令牌候选)。
gateway probe
“调试一切”命令。它始终探测:
- 你配置的远程网关(如果已设置),以及
- localhost(回环),即使已配置远程网关。
--url 会在这两者之前添加该显式目标。人类可读输出会将目标标记为 URL (explicit)、Remote (configured) / Remote (configured, inactive),以及 Local loopback。
如果多个探测目标都可达,都会被打印出来。SSH 隧道、TLS/proxy URL,以及已配置的远程 URL 可能会指向同一个网关,即使传输端口不同;
multiple_gateways 仅保留给可达但彼此不同、或身份无法明确区分的网关。支持运行多个网关以用于隔离配置文件(例如救援机器人),但大多数安装只运行单个网关。number
将此端口用于本地回环探测目标以及 SSH 隧道远端端口。若未指定
--url,这将仅选择本地回环目标,而不是已配置的网关环境 URL、环境端口或远程目标。解释
解释
Reachable: yes表示至少有一个目标接受了 WebSocket 连接。Capability: read-only|write-capable|admin-capable|pairing-pending|connect-only报告探测能够证明的认证能力,与可达性分开。Read probe: ok表示读取范围内的详细 RPC 调用(health/status/system-presence/config.get)也成功了。Read probe: limited - missing scope: operator.read表示连接成功,但读取范围内的 RPC 受限。会报告为降级可达性,而不是完全失败。Read probe: failed且在Connect: ok之后出现,表示 WebSocket 已连接,但后续读取诊断超时或失败——这同样是降级,而不是不可达。- 与
gateway status一样,probe 会复用现有缓存的设备认证,但不会创建首次设备身份或配对状态。 - 只有在没有任何被探测目标可达时,退出码才为非零。
JSON 输出
JSON 输出
顶层:
ok: 至少有一个目标可达。degraded: 至少有一个目标接受了连接,但未完成完整的详细 RPC 诊断。capability: 在所有可达目标中看到的最佳能力(read_only、write_capable、admin_capable、pairing_pending、connected_no_operator_scope或unknown)。primaryTargetId: 应视为活动胜者的最佳目标,优先级顺序:显式 URL、SSH 隧道、已配置远程、本地回环。warnings[]: 尽力而为的警告记录,包含code、message,以及可选的targetIds。network: 根据当前配置和主机网络推导出的本地回环/tailnet URL 提示。discovery.timeoutMs/discovery.count: 本次 probe 使用的实际发现预算/结果数量。
targets[].connect):ok(可达性 + 降级分类)、rpcOk(完整详细 RPC 成功)、scopeLimited(详细 RPC 因缺少 operator scope 而失败)。每个目标(targets[].auth):在可用时,hello-ok 中报告的 role 和 scopes,以及展示出的 capability 分类。常见警告代码
常见警告代码
ssh_tunnel_failed: SSH 隧道设置失败;命令回退到直接探测。multiple_gateways: 探测到了不同的网关身份,或者 OpenClaw 无法证明可达目标是同一个网关。指向同一网关的 SSH 隧道、代理 URL 或已配置远程 URL 不会触发此项。auth_secretref_unresolved: 无法为失败目标解析已配置的 auth SecretRef。probe_scope_limited: WebSocket 连接成功,但由于缺少operator.read,读取探测受限。local_tls_runtime_unavailable: 本地 Gateway TLS 已启用,但 OpenClaw 无法加载本地证书指纹。
通过 SSH 的远程(macOS 应用一致性)
macOS 应用的“通过 SSH 远程”模式会使用本地端口转发,因此仅能通过回环访问的远程网关会变为可通过ws://127.0.0.1:<port> 访问。
CLI 等价命令:
string
user@host 或 user@host:port(端口默认为 22)。%SystemRoot%\System32\OpenSSH。
string
身份文件。
boolean
从解析出的发现端点(
local. 加上已配置的广域域名,如有)中选择发现到的第一个 gateway 主机作为 SSH 目标。TXT-only 提示会被忽略。gateway.remote.sshTarget、gateway.remote.sshIdentity。
gateway call <method>
底层 RPC 帮助工具。
string
default:"{}"
用于参数的 JSON 对象字符串。
string
Gateway WebSocket URL。
number
以此端口定位本地回环 Gateway。对于本次调用,它会覆盖
OPENCLAW_GATEWAY_URL 和 OPENCLAW_GATEWAY_PORT。不能与 --url 组合使用。string
Gateway 令牌。
string
Gateway 密码。
number
default:"10000"
超时时间预算。
boolean
主要用于会在最终载荷前流式传输中间事件的 agent 风格 RPC。
boolean
机器可读 JSON 输出。
--params 必须是有效的 JSON,并且每个方法都会验证其自身的参数结构(多余字段或字段名错误会被拒绝)。对于自定义端口的本地 Gateway,请使用 --port;显式指定的 --url 仍然需要显式凭据。gateway suspend
为协作式主机冻结或快照准备处于空闲状态的 Gateway。不带
--wait 时,活跃工作会返回非零退出码以及阻塞项详细信息。带有
--wait 时,CLI 会使用一个稳定的请求 ID 重试,直到有界期限到达。
--url、--token、--password、--timeout、--json 和 --port。
gateway resume <suspensionId>
在解冻后,或主机操作被放弃时,释放已准备好的暂停。
管理 Gateway 服务
使用包装器安装
当托管服务必须通过另一个可执行文件启动时,请使用--wrapper,例如 secrets manager shim 或 run-as helper。包装器会接收正常的 Gateway 参数,并负责最终使用这些参数 exec 执行 openclaw 或 Node。
gateway install 会验证该路径是否为可执行文件,将包装器写入服务的 ProgramArguments,并将 OPENCLAW_WRAPPER 持久化到服务环境中,以便后续强制重新安装、更新和 doctor 修复时使用。
OPENCLAW_WRAPPER:
命令选项
命令选项
gateway status:--url、--token、--password、--timeout、--no-probe、--require-rpc、--deep、--jsongateway install:--port、--runtime <node>(默认:node)、--token、--wrapper <path>、--force、--jsongateway restart:--safe、--skip-deferral、--force、--wait <duration>、--jsongateway uninstall|start:--jsongateway stop:--disable、--force、--json
生命周期行为
生命周期行为
gateway start具有幂等性:当受管服务已经运行时,它会报告正在运行的进程并保持其不变。已加载但已停止的服务则会像之前一样启动。- 如果
gateway start或gateway restart需要修复过时的服务定义,而调用该命令的 shell 所解析出的状态目录、配置路径或端口与已安装的服务不一致,则命令会拒绝执行。请匹配这些环境覆盖项,或取消设置冲突的环境覆盖项;也可以使用openclaw gateway install --force有意地重新定位服务。 - 使用
gateway restart重启受管服务。不要通过串联gateway stop和gateway start来替代重启。 - 在非交互式 shell 中,
gateway stop需要使用--force。交互式终端仍保持现有的无提示行为。对于自动化和测试,优先使用gateway run --dev,或使用带有空闲端口的隔离--profile。 - 在 macOS 上,
gateway stop默认使用launchctl bootout,这会从当前启动会话中移除 LaunchAgent,但不会持久化禁用状态——KeepAlive 自动恢复功能会继续对未来的崩溃保持活跃,而gateway start可以干净地重新启用服务,无需手动执行launchctl enable。传入--disable可持久化抑制 KeepAlive 和 RunAtLoad,使 Gateway 在下一次显式执行gateway start之前不会重新生成;当手动停止应在重启后继续生效时,请使用此选项。 - Gateway 生命周期变更会以尽力而为的方式,将键值审计记录追加到
<state-dir>/logs/gateway-restart.log,其中包括 CLI 启动、停止和重启操作、安全重启请求、supervisor 重启以及脱离式交接。 - 生命周期命令支持使用
--json进行脚本处理。
受管 Gateway 堆大小设置
受管 Gateway 堆大小设置
gateway install会为受管 Gateway 服务写入仅堆使用的NODE_OPTIONS值。当 Node 报告容器或服务限制时,它会以受限内存的 50% 为目标;否则以物理内存的 50% 为目标。- 标称目标范围为 2048–8192 MiB,并额外设置 75% 的 native-headroom 上限。在小型主机上,该 headroom 上限可能会使实际应用的限制低于标称的 2048 MiB 下限。
- 已安装服务中已存储的有效显式
--max-old-space-size会在强制重新安装和 doctor 修复期间保留。其他NODE_OPTIONS标志不会带入受管服务。 - 环境中的 shell
NODE_OPTIONS不会覆盖此策略。使用gateway status或doctor检查已安装的值;运行openclaw gateway install --force可为缺少受管堆设置的旧服务元数据重新生成配置。 - 该策略仅适用于受管 Gateway 服务。前台运行的
gateway run、node 服务以及手写的 supervisor 单元仍保留各自的运行时配置。
安装时的身份验证和 SecretRef
安装时的身份验证和 SecretRef
- 当令牌认证需要令牌且
gateway.auth.token由 SecretRef 管理时,gateway install会验证该 SecretRef 是否可解析,但不会将解析后的令牌持久化到服务环境元数据中。 - 如果令牌认证需要令牌而配置的令牌 SecretRef 未解析,安装会直接失败,而不会持久化回退的明文内容。
- 对于
gateway run的密码认证,优先使用OPENCLAW_GATEWAY_PASSWORD、--password-file或由 SecretRef 支持的gateway.auth.password,而不是内联--password。 - 在推断认证模式下,仅 shell 变量
OPENCLAW_GATEWAY_PASSWORD不会放宽安装时的令牌要求;在安装受管服务时,请使用持久配置(gateway.auth.password或配置中的env)。 - 如果同时配置了
gateway.auth.token和gateway.auth.password,且未设置gateway.auth.mode,则在显式设置模式之前会阻止安装。
发现 gateways(Bonjour)
gateway discover 扫描 Gateway 信标(_openclaw-gw._tcp)。
- 多播 DNS-SD:
local. - 单播 DNS-SD(广域 Bonjour):选择一个域(例如
openclaw.internal.),并设置分割 DNS + DNS 服务器;参见 Bonjour。
role(gateway 角色提示)、transport(传输提示,例如 gateway)、gatewayPort(WebSocket 端口,通常为 18789)、tailnetDns(MagicDNS 主机名,若可用)、gatewayTls / gatewayTlsSha256(TLS 已启用 + 证书指纹)。sshPort 和 cliPath 仅在完整发现模式(discovery.mdns.mode: "full";默认值为 "minimal",会省略它们)中发布——此时客户端会将 SSH 目标默认设为端口 22。
gateway discover
number
default:"2000"
每个命令的超时时间(浏览/解析)。
boolean
可供机器读取的输出(也会禁用样式/转轮)。
- 扫描
local.,以及在启用时扫描已配置的广域域。 - JSON 输出中的
wsUrl基于解析后的服务端点生成,而不是基于仅 TXT 提示(例如lanHost或tailnetDns)。 discovery.mdns.mode控制在local.mDNS 和广域 DNS-SD 上是否发布sshPort/cliPath(见上文)。