CLI commands
閘道
閘道是 OpenClaw 的 WebSocket 伺服器(頻道、節點、工作階段、鉤子)。以下所有子命令都位於 openclaw gateway ... 之下。
執行閘道
openclaw gatewayopenclaw gateway run # 等效的明確形式啟動行為
- 除非已在
~/.openclaw/openclaw.json中設定gateway.mode=local,否則會拒絕啟動。臨時/開發執行請使用--allow-unconfigured;它會略過防護機制,而不寫入或修復設定。 - 啟動時若發現可修復的無效設定,互動式終端會提議執行
openclaw doctor --fix,並在取得同意後重試啟動一次。非互動式執行絕不會自動修復,而是印出該命令。若修復後的設定仍然無效,啟動仍會停止。 openclaw onboard --mode local和openclaw setup會寫入gateway.mode=local。若設定檔存在,但缺少gateway.mode,系統會將其視為已損壞/遭覆寫的設定,且閘道不會替你猜測local——請重新執行初始設定、手動設定該鍵,或傳入--allow-unconfigured。- 禁止在未經驗證的情況下繫結至回送介面以外的位址。
--bind的值lan、tailnet和custom目前僅透過 IPv4 路徑解析;僅限 IPv6 的自備主機設定需要在閘道前方放置 IPv4 輔助服務或 Proxy。- 獲得授權時,
SIGUSR1會觸發程序內重新啟動。commands.restart(預設:啟用)會控管外部傳送的SIGUSR1;將其設為false可封鎖手動作業系統訊號重新啟動。面向代理程式的gateway工具為唯讀;代理程式透過經人員核准的openclaw委派工具要求重新啟動。 SIGINT/SIGTERM會停止程序,但不會還原自訂終端狀態——若你將命令列介面包裝在終端介面或原始模式輸入中,請在結束前自行還原終端。
選項
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcG9ydCA8cG9ydA
" type="number">
WebSocket 連接埠(預設取自設定/環境;通常為 18789)。
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tYmluZCA8bW9kZQ
" type="string">
繫結模式:loopback(預設)、lan、tailnet、auto、custom。
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdG9rZW4gPHRva2Vu
" type="string">
connect.params.auth.token 的共用權杖。設定 OPENCLAW_GATEWAY_TOKEN 時預設使用該值。
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tYXV0aCA8bW9kZQ
" type="string">
驗證模式:none、token、password、trusted-proxy。
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcGFzc3dvcmQgPHBhc3N3b3Jk
" type="string">
--auth password 的密碼。
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdGFpbHNjYWxlIDxtb2Rl
" type="string">
Tailscale 公開模式:off、serve、funnel。
--tailscale-reset-on-exitboolean關閉時重設 Tailscale serve/funnel 設定。
--allow-unconfiguredboolean啟動時不強制要求 gateway.mode=local。僅供臨時/開發環境啟動;不會保存或修復設定。
--devboolean若缺少開發設定與工作區,則建立它們(略過 BOOTSTRAP.md)。
--dev-ambient-channelsboolean允許開發用閘道從目前環境變數自動設定頻道。需要 --dev。
--resetboolean重設開發設定、認證資訊、工作階段和工作區。需要 --dev。
--forceboolean啟動前終止目標連接埠上任何現有的接聽程式。在非互動式 Shell 中,此選項會拒絕終止已驗證的閘道接聽程式;請改用 --dev,或使用具有可用連接埠的隔離 --profile。
--verboseboolean將詳細記錄輸出至 stdout/stderr。
--cli-backend-logsboolean主控台中只顯示命令列介面後端記錄(也會啟用 stdout/stderr)。
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0td3MtbG9nIDxzdHlsZQ
" type="string" default="auto">
WebSocket 記錄樣式:auto、full、compact。
--compactboolean--ws-log compact 的別名。
--raw-streamboolean將原始模型串流事件記錄至 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 的自備主機設定需要在閘道前方放置 IPv4 輔助服務或 Proxy。
重新啟動閘道
openclaw gateway restartopenclaw gateway restart --safeopenclaw gateway restart --safe --skip-deferralopenclaw gateway restart --forceopenclaw gateway restart --wait 30s--safe 會要求執行中的閘道預先檢查進行中的工作,並排定在這些工作結束後進行一次合併的重新啟動。等待時間上限為 5 分鐘;超過時間額度時會強制重新啟動。--safe 無法與 --force 或 --wait 合併使用。
--skip-deferral 會略過安全重新啟動的進行中工作延後閘門,因此即使回報有阻礙因素,閘道仍會立即重新啟動。它需要 --safe——當延後流程卡在失控的工作上時使用。
--wait <duration> 會覆寫一般(非安全)重新啟動的清空時間額度。接受不含單位的毫秒值,或單位後綴 ms、s、m、h、d(例如 30s、5m、1h30m);--wait 0 會無限期等待。無法與 --force 或 --safe 相容。
--force 會略過進行中工作的清空程序並立即重新啟動。一般的 restart(不含旗標)會保留現有的服務管理員重新啟動行為。
外部監督程式
只有在另一個程序管理員負責閘道生命週期時,才設定 OPENCLAW_SUPERVISOR_MODE=external。在此模式下:
openclaw gateway restart會保留現有的安全、強制及限定等待行為,但目標改為經驗證、正在執行的閘道,而非 launchd、systemd 或 Task Scheduler。- 系統會拒絕原生服務的安裝、啟動、停止和解除安裝作業,並提示使用外部監督程式。
- 系統會拒絕 OpenClaw 自我更新,讓監督程式可以停止閘道、取代並完成執行階段,然後安全地重新啟動。
- 全新程序重新啟動會在正常結束前寫入具有界限的 SQLite 交接資料。若保存失敗,閘道會改為程序內重新啟動,而非在沒有可用交接資料的情況下結束。
OPENCLAW_SERVICE_REPAIR_POLICY=external 仍是獨立的 Doctor 修復原則。它不宣告執行階段的擁有權;同時需要兩種行為的監督程式應設定這兩個變數。
外部監督程式可透過以下隱藏的機器合約協商並取用重新啟動交接資料:
openclaw gateway restart-handoff capabilities --jsonopenclaw gateway restart-handoff consume --expected-pid <pid> --json通訊協定版本 1 支援 consume 作業。取用程序會在單一即時 SQLite 交易中驗證預期 PID 與具有界限的交接欄位。接受交接後會先刪除資料再回傳成功,因此並行或重播的取用者無法同時接受該交接。PID 不相符的資料會保留給相符的擁有者;缺少、已過期或無效的資料列不會授權重新啟動。
有效的機器要求會傳回 JSON,結束碼為 0,包括不重新啟動的結果。無效引數會傳回 reason: "invalid-expected-pid",結束碼為 2;狀態儲存區失敗會傳回 reason: "store-unavailable",結束碼為 1。監督程式應在實際要使用的執行階段或啟動器上探測 capabilities,而非根據 OpenClaw 版本字串推斷支援情況,或直接讀取私有 SQLite 結構描述。
閘道效能分析
OPENCLAW_GATEWAY_STARTUP_TRACE=1會記錄啟動期間的階段計時,包括各階段的eventLoopMax延遲與外掛查閱表計時(已安裝索引、資訊清單登錄、啟動規劃、擁有者對應工作)。OPENCLAW_GATEWAY_RESTART_TRACE=1會記錄重新啟動範圍內的restart trace:行:訊號處理、進行中工作清空、關閉階段、下次啟動、就緒計時和記憶體指標。OPENCLAW_DIAGNOSTICS=timeline搭配OPENCLAW_DIAGNOSTICS_TIMELINE_PATH=<path>,會為外部 QA 測試框架盡力寫入 JSONL 啟動診斷時間軸(等同於設定diagnostics.flags: ["timeline"];路徑仍只能透過環境變數設定)。加入OPENCLAW_DIAGNOSTICS_EVENT_LOOP=1可包含事件迴圈樣本。- 先執行
pnpm build,再執行pnpm test:startup:gateway -- --runs 5 --warmup 1,會根據已建置的命令列介面進入點測量閘道啟動效能:首次程序輸出、/healthz、/readyz、啟動追蹤計時、事件迴圈延遲及外掛查閱表計時。 - 先執行
pnpm build,再執行pnpm test:restart:gateway -- --case skipChannels --runs 1 --restarts 5,會在 macOS 或 Linux 上測量程序內重新啟動效能(Windows 不支援;重新啟動需要SIGUSR1)。它使用SIGUSR1、在子程序中啟用兩項追蹤,並記錄下一次/healthz、下一次/readyz、停機時間、就緒計時、CPU、RSS 和重新啟動追蹤指標。 /healthz表示存活;/readyz表示可用就緒。應將追蹤行和效能測試輸出視為擁有者歸因訊號,而非根據單一時間範圍或樣本得出的完整效能結論。
查詢執行中的閘道
所有查詢命令都使用 WebSocket RPC。
輸出模式
- 預設:人類可讀(在 TTY 中有色彩)。
--json:機器可讀的 JSON(無樣式/進度動畫)。--no-color(或NO_COLOR=1):停用 ANSI,同時保留人類可讀的版面配置。
共用選項
--url <url>:閘道 WebSocket URL。--token <token>:閘道權杖。--password <password>:閘道密碼。--timeout <ms>:逾時/時間額度(預設值依命令而異;請參閱下方各命令)。--expect-final:等待「最終」回應(代理程式呼叫)。
gateway health
openclaw gateway health --url ws://127.0.0.1:18789openclaw gateway health --port 18789/healthz 是存活探測:只要伺服器能回應 HTTP,就會立即傳回。/readyz 的判定更嚴格;當啟動中的外掛 sidecar、頻道或已設定的掛鉤仍在穩定期間時,會持續顯示紅色。本機或經過驗證的詳細 /readyz 回應包含一個 eventLoop 診斷區塊(延遲、使用率、CPU 核心比率、degraded 旗標)。
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcG9ydCA8cG9ydA
" type="number">
以此連接埠上的本機迴路閘道為目標。此呼叫會覆寫 OPENCLAW_GATEWAY_URL 和 OPENCLAW_GATEWAY_PORT。
gateway usage-cost
從工作階段日誌擷取用量成本摘要。
openclaw gateway usage-costopenclaw gateway usage-cost --days 7openclaw gateway usage-cost --agent work --jsonopenclaw gateway usage-cost --all-agentsopenclaw gateway usage-cost --json"--days"--agent--all-agentsboolean彙總所有已設定的代理程式。無法與 --agent 搭配使用。
gateway stability
從執行中的閘道擷取近期診斷穩定性記錄器。
openclaw gateway stabilityopenclaw gateway stability --type payload.largeopenclaw gateway stability --bundle latestopenclaw gateway stability --bundle latest --exportopenclaw gateway stability --jsonOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tbGltaXQgPGxpbWl0
" type="number" default="25">
要納入的近期事件數量上限(最大值為 1000)。
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdHlwZSA8dHlwZQ
" type="string">
依診斷事件類型篩選,例如 payload.large 或 diagnostic.memory.pressure。
"--since-seq--bundle [path]string讀取持久保存的穩定性套件,而非呼叫執行中的閘道。--bundle latest(或不帶值的 --bundle)會選取狀態目錄下最新的套件;你也可以直接傳入套件 JSON 路徑。
--exportboolean寫入可分享的支援診斷 ZIP 檔,而非列印穩定性詳細資料。
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tb3V0cHV0IDxwYXRo
" type="string">
--export 的輸出路徑。
隱私權與套件行為
- 記錄會保留操作中繼資料:事件名稱、計數、位元組大小、記憶體讀數、佇列/工作階段狀態、核准 ID、頻道/外掛名稱,以及已遮蔽的工作階段摘要。其中不包含聊天文字、網路鉤子本文、工具輸出、原始要求/回應本文、權杖、Cookie、密鑰值、主機名稱和原始工作階段 ID。設定
diagnostics.enabled: false可完全停用記錄器。 - 若記錄器中有事件,閘道嚴重錯誤退出、關閉逾時和重新啟動時的啟動失敗,會將相同的診斷快照寫入
~/.openclaw/logs/stability/openclaw-stability-*.json。使用openclaw gateway stability --bundle latest檢查最新套件;--limit、--type和--since-seq也適用於套件輸出。
gateway diagnostics export
寫入專為錯誤報告設計的本機診斷 ZIP 檔。如需瞭解隱私權模型和套件內容,請參閱診斷匯出。
openclaw gateway diagnostics exportopenclaw gateway diagnostics export --output openclaw-diagnostics.zipopenclaw gateway diagnostics export --json"--log-lines"--log-bytes"--url"--token"--password"--timeout--no-stability-bundleboolean略過持久保存的穩定性套件查詢。
--jsonboolean以 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、非密鑰功能設定,以及已遮蔽的操作日誌訊息;同時省略或遮蔽聊天文字、網路鉤子本文、工具輸出、認證資訊、Cookie、帳號/訊息識別碼、提示/指示文字、主機名稱和密鑰值。當日誌訊息看似使用者/聊天/工具承載資料文字(例如 “user said”、“chat text”、“tool output”、“webhook body”)時,匯出檔只會保留訊息已省略的事實及其位元組數。
gateway status
顯示閘道服務(launchd/systemd/schtasks),並可選擇執行連線能力/驗證探測。
openclaw gateway statusopenclaw gateway status --jsonopenclaw gateway status --require-rpc"--url"--token"--password"--timeout--no-probeboolean略過連線能力探測(僅顯示服務)。
--deepboolean同時掃描系統層級的服務。
--require-rpcboolean將連線能力探測升級為讀取探測,並在失敗時以非零狀態退出。無法與 --no-probe 搭配使用。
狀態語意
- 即使本機命令列介面設定遺失或無效,仍可用於診斷。
- 預設輸出會證明服務狀態、WebSocket 連線,以及交握時可見的驗證能力,而非讀取/寫入/管理員操作。
- 首次裝置驗證的探測不會變更狀態:若已有快取的裝置權杖,就會重複使用,但絕不會只為了檢查狀態而建立新的命令列介面裝置身分或唯讀配對記錄。
- 在可能的情況下,解析已設定的驗證 SecretRef 以供探測驗證使用。如果必要的 SecretRef 尚未解析,當探測連線能力/驗證失敗時,
--json會回報rpc.authWarning;請明確傳入--token/--password,或修正密鑰來源。探測成功後,未解析驗證警告就會受到抑制。 - 當執行中的閘道回報
gateway.version時,JSON 輸出會包含該資訊;如果交握探測無法提供版本中繼資料,--require-rpc可以改用status.runtimeVersionRPC 承載資料。 - 當服務僅處於監聽狀態仍不足以滿足需求,且你也需要讀取範圍 RPC 保持健康時,請在指令碼/自動化中使用
--require-rpc。 --deep會掃描額外的 launchd/systemd/schtasks 安裝項目;若找到多個類似閘道的服務,人類可讀輸出會列印清理提示(通常每台機器執行一個閘道),並在適用時回報近期的監督程式重新啟動交接。--deep也會以外掛感知模式(pluginValidation: "full")執行設定驗證,並顯示外掛資訊清單警告(例如缺少頻道設定中繼資料)。預設的gateway status會保留略過外掛驗證的快速唯讀路徑。- 人類可讀輸出包含解析後的檔案日誌路徑,以及命令列介面與服務的設定路徑/有效性,有助於診斷設定檔或狀態目錄的偏移。
- 人類可讀輸出包含
Gateway heap:,其中有已套用的限制及其調適性推導。JSON 輸出會將相同報告公開為service.gatewayHeap。
Linux systemd 驗證偏移檢查
- 服務驗證偏移檢查會從單元讀取
Environment=和EnvironmentFile=(包括%h、加上引號的路徑、多個檔案,以及選用的-檔案)。 - 使用合併後的執行階段環境解析
gateway.auth.tokenSecretRef(優先使用服務命令環境,其次回退到程序環境)。 - 當權杖驗證實際上未啟用時,權杖偏移檢查會略過設定權杖解析(
gateway.auth.mode明確設為password/none/trusted-proxy;或模式未設定、密碼可能勝出,且沒有權杖候選項能勝出)。
gateway probe
「偵錯所有項目」命令。它一律會探測:
- 你已設定的遠端閘道(若有設定),以及
- localhost(迴路),即使已設定遠端目標。
傳入 --url 會在這兩者之前新增該明確目標。人類可讀輸出會將目標標示為 URL (explicit)、Remote (configured) / Remote (configured, inactive) 和 Local loopback。
openclaw gateway probeopenclaw gateway probe --jsonopenclaw gateway probe --port 18789OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcG9ydCA8cG9ydA
" type="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 受限。這會回報為可連線性降級,而非完全失敗。Connect: ok之後的Read probe: failed表示 WebSocket 已連線,但後續讀取診斷逾時或失敗;這同樣是降級,而非無法連線。- 與
gateway status相同,探測會重複使用現有的快取裝置驗證,但不會建立首次使用的裝置身分或配對狀態。 - 只有在所有探測目標都無法連線時,退出代碼才會是非零值。
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:此輪探測實際使用的探索預算/結果數量。
每個目標(targets[].connect):ok(可連線性 + 降級分類)、rpcOk(完整詳細 RPC 成功)、scopeLimited(因缺少操作者範圍而導致詳細 RPC 失敗)。
每個目標(targets[].auth):可用時會在 hello-ok 中回報 role 與 scopes,以及呈現的 capability 分類。
常見警告代碼
ssh_tunnel_failed:SSH 通道設定失敗;命令已改用直接探測。multiple_gateways:可連線到不同的閘道身分,或 OpenClaw 無法證明可連線的目標是同一個閘道。指向同一閘道的 SSH 通道、代理 URL 或已設定的遠端 URL 不會觸發此警告。auth_secretref_unresolved:無法解析失敗目標所設定的驗證 SecretRef。probe_scope_limited:WebSocket 連線成功,但因缺少operator.read,讀取探測受到限制。local_tls_runtime_unavailable:已啟用本機閘道 TLS,但 OpenClaw 無法載入本機憑證指紋。
透過 SSH 遠端連線(與 Mac 應用程式一致)
macOS 應用程式的「Remote over SSH」模式使用本機連接埠轉送,讓僅限迴路連線的遠端閘道可在 ws://127.0.0.1:<port> 連線。
對應的命令列介面命令:
openclaw gateway probe --ssh user@gateway-hostOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tc3NoIDx0YXJnZXQ
" type="string">
user@host 或 user@host:port(連接埠預設為 22)。
--ssh-autoboolean從已解析的探索端點中,選擇第一個探索到的閘道主機作為 SSH 目標(local.,以及已設定的廣域網域(若有))。僅有 TXT 的提示會被忽略。
設定預設值(選用):gateway.remote.sshTarget、gateway.remote.sshIdentity。
gateway call <method>
低階 RPC 輔助工具。
openclaw gateway call statusopenclaw gateway call logs.tail --params '{"limit": 200}'"--params"--url"--token"--password"--timeout--expect-finalboolean主要用於會在最終承載內容之前串流中間事件的代理程式型 RPC。
--jsonboolean機器可讀的 JSON 輸出。
管理閘道服務
openclaw gateway installopenclaw gateway startopenclaw gateway stopopenclaw gateway restartopenclaw gateway uninstall使用包裝程式安裝
當受管理的服務必須透過另一個可執行檔啟動時,請使用 --wrapper,例如密鑰管理器轉接程式或指定執行身分的輔助工具。包裝程式會接收一般的閘道引數,並負責最終以這些引數執行 openclaw 或 Node。
cat > ~/.local/bin/openclaw-doppler <<'EOF'#!/usr/bin/env bashset -euo pipefailexec doppler run --project my-project --config production -- openclaw "$@"EOFchmod +x ~/.local/bin/openclaw-doppler openclaw gateway install --wrapper ~/.local/bin/openclaw-doppler --forceopenclaw gateway restart你也可以透過環境設定包裝程式。gateway install 會驗證該路徑是可執行檔、將包裝程式寫入服務的 ProgramArguments,並將 OPENCLAW_WRAPPER 保留在服務環境中,以供之後的強制重新安裝、更新及 doctor 修復使用。
OPENCLAW_WRAPPER="$HOME/.local/bin/openclaw-doppler" openclaw gateway install --forceopenclaw doctor若要移除已保留的包裝程式,請在重新安裝時清除 OPENCLAW_WRAPPER:
OPENCLAW_WRAPPER= openclaw gateway install --forceopenclaw gateway restart命令選項
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 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 start前不會重新衍生;當手動停止需要在重新開機後仍然有效時,請使用此選項。 - 閘道生命週期變更會盡力將鍵值稽核記錄附加至
<state-dir>/logs/gateway-restart.log,其中包括命令列介面的啟動、停止及重新啟動操作、安全重新啟動要求、監督程式重新啟動,以及分離式交接。 - 生命週期命令接受
--json,以供指令碼使用。
受管理閘道的堆積大小設定
gateway install會為受管理的閘道服務寫入僅限堆積的NODE_OPTIONS值。當 Node 回報容器或服務限制時,目標設為受限記憶體的 50%;否則設為實體記憶體的 50%。- 名義目標範圍為 2048–8192 MiB,並另設 75% 的原生記憶體餘裕上限。在小型主機上,此餘裕上限可能使套用的限制低於名義上的 2048 MiB 下限。
- 已儲存在所安裝服務中的有效明確
--max-old-space-size,會在強制重新安裝與 doctor 修復時保留。其他NODE_OPTIONS旗標不會帶入受管理的服務。 - 周遭 shell 的
NODE_OPTIONS不會覆寫此原則。請使用gateway status或doctor檢查已安裝的值;執行openclaw gateway install --force可重新產生沒有受管理堆積設定的舊版服務中繼資料。 - 此原則僅套用於受管理的閘道服務。前景執行的
gateway run、節點服務及手動編寫的監督程式單元會保留各自的執行階段設定。
安裝時的驗證與 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未設定,安裝將被封鎖,直到明確設定模式為止。
探索閘道(Bonjour)
gateway discover 會掃描閘道信標(_openclaw-gw._tcp)。
- 多點傳送 DNS-SD:
local. - 單點傳送 DNS-SD(廣域 Bonjour):選擇一個網域(例如:
openclaw.internal.),並設定分割 DNS 與 DNS 伺服器;請參閱 Bonjour。
只有啟用 Bonjour 探索功能(預設啟用)的閘道會廣播信標。
每個信標上的 TXT 提示:role(閘道角色提示)、transport(傳輸提示,例如 gateway)、gatewayPort(WebSocket 連接埠,通常為 18789)、tailnetDns(MagicDNS 主機名稱,如有)、gatewayTls / gatewayTlsSha256(是否啟用 TLS + 憑證指紋)。sshPort 與 cliPath 僅在完整探索模式下發布(discovery.mdns.mode: "full";預設為 "minimal",會省略這兩者——此時用戶端會將 SSH 目標連接埠預設為 22)。
gateway discover
openclaw gateway discover"--timeout--jsonboolean機器可讀的輸出(也會停用樣式與旋轉指示器)。
範例:
openclaw gateway discover --timeout 4000openclaw gateway discover --json | jq '.beacons[].wsUrl'