Drifthandbok för Gateway-tjänsten
Senast uppdaterad: 2025-12-09Vad det är
- Den alltid aktiva processen som äger den enda Baileys/Telegram-anslutningen samt kontroll-/händelseplanet.
- Ersätter äldre
gateway-kommandot. CLI ingångspunkt:openclaw gateway. - Kör tills den stoppas; avslutas med icke-noll vid fatala fel så att övervakaren startar om den.
Hur man kör (lokalt)
- Konfigurations-hot reload bevakar
~/.openclaw/openclaw.json(ellerOPENCLAW_CONFIG_PATH).- Standardläge:
gateway.reload.mode="hybrid"(tillämpa säkra ändringar direkt, starta om vid kritiska). - Hot reload använder omstart i processen via SIGUSR1 vid behov.
- Inaktivera med
gateway.reload.mode="off".
- Standardläge:
- Binder WebSocket-kontrollplanet till
127.0.0.1:<port>(standard 18789). - Samma port tjänar också HTTP (control UI, hooks, A2UI). Single-port multiplex.
- OpenAI Chat Completions (HTTP):
/v1/chat/completions. - OpenResponses (HTTP):
/v1/responses. - Tools Invoke (HTTP):
/tools/invoke.
- OpenAI Chat Completions (HTTP):
- Startar en Canvas-fil server som standard på
canvasHost.port(standard18793), betjänarhttp://<gateway-host>:18793/__openclaw__/canvas/från~/.openclaw/workspace/canvas. Inaktivera medcanvasHost.enabled=falseellerOPENCLAW_SKIP_CANVAS_HOST=1. - Loggar till stdout; använd launchd/systemd för att hålla den igång och rotera loggar.
- Skicka
--verboseför att spegla debug-loggning (handshakes, req/res, händelser) från loggfilen till stdio vid felsökning. --forceanvänderlsofför att hitta lyssnare på vald port, skickar SIGTERM, loggar vad som dödades och startar sedan gatewayn (avslutas snabbt omlsofsaknas).- Om du kör under en övervakare (launchd/systemd/mac-appens barnprocessläge) skickar ett stopp/omstart vanligtvis SIGTERM; äldre byggen kan visa detta som
pnpmELIFECYCLEmed exitkod 143 (SIGTERM), vilket är en normal avstängning, inte en krasch. - SIGUSR1 triggar en omstart i processen när den är auktoriserad (gateway-verktyg/konfig tillämpa/uppdatera, eller aktivera
commands.restartför manuella omstarter). - Gateway auth krävs som standard: sätt
gateway.auth.token(ellerOPENCLAW_GATEWAY_TOKEN) ellergateway.auth.password. Klienter måste skickaconnect.params.auth.token/passwordom du inte använder Tailscale Serve identitet. - Guiden genererar nu som standard en token, även på loopback.
- Portprioritet:
--port>OPENCLAW_GATEWAY_PORT>gateway.port> standard18789.
Fjärråtkomst
-
Tailscale/VPN föredras; annars SSH-tunnel:
-
Klienter ansluter sedan till
ws://127.0.0.1:18789genom tunneln. -
Om en token är konfigurerad måste klienter inkludera den i
connect.params.auth.tokenäven över tunneln.
Flera gateways (samma värd)
Vanligtvis onödigt: en Gateway kan tjäna flera meddelandekanaler och agenter. Använd flera Gateways endast för redundans eller strikt isolering (ex: räddningsbot). Stöds om du isolerar status + konfiguration och använder unika portar. Fullständig guide: Flera gateways. Tjänstnamn är profilanpassade:- macOS:
bot.molt.<profile>(äldrecom.openclaw.*kan fortfarande finnas) - Linux:
openclaw-gateway-<profile>.service - Windows:
OpenClaw Gateway (<profile>)
OPENCLAW_SERVICE_MARKER=openclawOPENCLAW_SERVICE_KIND=gatewayOPENCLAW_SERVICE_VERSION=<version>
Dev-profil (--dev)
Snabbaste vägen: kör en helt isolerad dev-instans (konfig/tillstånd/arbetsyta) utan att röra din primära setup.
OPENCLAW_STATE_DIR=~/.openclaw-devOPENCLAW_CONFIG_PATH=~/.openclaw-dev/openclaw.jsonOPENCLAW_GATEWAY_PORT=19001(Gateway WS + HTTP)- webbläsarens kontrolltjänstport =
19003(härledd:gateway.port+2, endast loopback) canvasHost.port=19005(härledd:gateway.port+4)agents.defaults.workspaceblir som standard~/.openclaw/workspace-devnär du körsetup/onboardunder--dev.
- Basport =
gateway.port(ellerOPENCLAW_GATEWAY_PORT/--port) - webbläsarens kontrolltjänstport = bas + 2 (endast loopback)
canvasHost.port = base + 4(ellerOPENCLAW_CANVAS_HOST_PORT/ konfig-åsidosättning)- Webbläsarprofil CDP-portar automatiskt allokera från
browser.controlPort + 9 .. + 108(persisted per profil).
- unik
gateway.port - unik
OPENCLAW_CONFIG_PATH - unik
OPENCLAW_STATE_DIR - unik
agents.defaults.workspace - separata WhatsApp-nummer (om WA används)
Protokoll (operatörsvy)
- Fullständig dokumentation: Gateway-protokoll och Bridge-protokoll (legacy).
- Obligatorisk första ram från klienten:
req {type:"req", id, metod:"connect", parametrar:{minProtocol,maxProtocol,client:{id,displayName?,version,plattform,deviceFamily?,modelIdentifier?,mode,instanceId?}, caps, auth?, locale?, userAgent? } }. - Gateway svarar med
res {type:"res", id, ok:true, payload:hello-ok }(ellerok:falsemed ett fel, och stänger sedan). - Efter handskakning:
- Förfrågningar:
{type:"req", id, method, params}→{type:"res", id, ok, payload|error} - Händelser:
{type:"event", event, payload, seq?, stateVersion?}
- Förfrågningar:
- Strukturerade närvaroposter:
{hostst, ip, version, plattform?, deviceFamily?, modelIdentifier?, mode, lastInputSeconds?, ts, anledning?, taggar?[], instanceId? }(för WS-klienter,instanceIdkommer frånconnect.client.instanceId). agent-svar är tvåstegs: förstres-ack{runId,status:"accepted"}, därefter ett slutligtres{runId,status:"ok"|"error",summary}efter att körningen avslutats; strömmad utdata anländer somevent:"agent".
Metoder (initial uppsättning)
health— fullständig hälsobild (samma form somopenclaw health --json).status— kort sammanfattning.system-presence— aktuell närvarolista.system-event— posta en närvaro-/systemnotis (strukturerad).send— skicka ett meddelande via den/de aktiva kanalen/kanalerna.agent— kör en agenttur (strömmar händelser tillbaka på samma anslutning).node.list— lista parade + för närvarande anslutna noder (inkluderarcaps,deviceFamily,modelIdentifier,paired,connectedoch annonseradecommands).node.describe— beskriv en nod (funktioner + stöddanode.invoke-kommandon; fungerar för parade noder och för för närvarande anslutna oparade noder).node.invoke— anropa ett kommando på en nod (t.ex.canvas.*,camera.*).node.pair.*— parningslivscykel (request,list,approve,reject,verify).
client.instanceId är viktigt.
Händelser
agent— strömmade verktygs-/utdatahändelser från agentkörningen (sekvens-taggade).presence— närvarouppdateringar (deltor med stateVersion) pushas till alla anslutna klienter.tick— periodisk keepalive/no-op för att bekräfta liv.shutdown- Gateway avslutas; payload innehållerreasonoch valfrirestartExpectedMs. Klienter bör återansluta.
WebChat-integration
- WebChat är ett inbyggt SwiftUI-UI som pratar direkt med Gateway-WebSocket för historik, sändningar, avbrott och händelser.
- Fjärranvändning går via samma SSH/Tailscale-tunnel; om en gateway-token är konfigurerad inkluderar klienten den under
connect. - macOS-appen ansluter via en enda WS (delad anslutning); den hydratiserar närvaro från den initiala ögonblicksbilden och lyssnar på
presence-händelser för att uppdatera UI:t.
Typning och validering
- Servern validerar varje inkommande frame med AJV mot JSON Schema som emitteras från protokolldefinitionerna.
- Klienter (TS/Swift) konsumerar genererade typer (TS direkt; Swift via repots generator).
- Protokolldefinitionerna är sanningskällan; regenerera schema/modeller med:
pnpm protocol:genpnpm protocol:gen:swift
Anslutningsögonblicksbild
hello-okinkluderar ensnapshotmedpresence,health,stateVersionochuptimeMssamtpolicy {maxPayload,maxBufferedBytes,tickIntervalMs}så att klienter kan rendera direkt utan extra förfrågningar.health/system-presencefinns kvar för manuell uppdatering, men krävs inte vid anslutning.
Felkoder (res.error-form)
- Fel använder
{ kod, meddelande, detaljer?, återförsökbar?, retryAfterMs? }. - Standardkoder:
NOT_LINKED— WhatsApp inte autentiserat.AGENT_TIMEOUT— agenten svarade inte inom den konfigurerade tidsgränsen.INVALID_REQUEST— schema-/parametervalidering misslyckades.UNAVAILABLE— Gateway håller på att stängas av eller ett beroende är otillgängligt.
Keepalive-beteende
tick-händelser (eller WS ping/pong) emitteras periodiskt så att klienter vet att Gateway är vid liv även när ingen trafik sker.- Sänd-/agent-acknowledgements är separata svar; överbelasta inte tickar för sändningar.
Replay / glapp
- Händelser spelas inte om. Klienter känner av kryphål och bör uppdatera (
health+system-presence) innan de fortsätter. WebChat och macOS klienter uppdateras nu automatiskt vid lucka.
Övervakning (macOS-exempel)
- Använd launchd för att hålla tjänsten vid liv:
- Program: sökväg till
openclaw - Argument:
gateway - KeepAlive: true
- StandardOut/Err: filsökvägar eller
syslog
- Program: sökväg till
- Vid fel startar launchd om; fatal felkonfiguration bör fortsätta avsluta så att operatören märker det.
- LaunchAgents är per användare och kräver en inloggad session; för headless-uppsättningar använd en anpassad LaunchDaemon (levereras inte).
openclaw gateway installskriver~/Library/LaunchAgents/bot.molt.gateway.plist(ellerbot.molt.<profile>.plist; äldrecom.openclaw.*rensas upp).openclaw doctorgranskar LaunchAgent-konfigen och kan uppdatera den till aktuella standarder.
Hantering av Gateway-tjänsten (CLI)
Använd Gateway-CLI för install/start/stop/restart/status:gateway statussonderar Gateway-RPC som standard med tjänstens lösta port/konfig (åsidosätt med--url).gateway status --deeplägger till systemomfattande skanningar (LaunchDaemons/systemenheter).gateway status --no-probehoppar över RPC-sonderingen (användbart när nätverk är nere).gateway status --jsonär stabilt för skript.gateway statusrapporterar övervakarens körtid (launchd/systemd kör) separat från RPC-nåbarhet (WS-anslutning + status-RPC).gateway statusskriver ut konfigsökväg + sondmål för att undvika förvirring kring ”localhost vs LAN-bindning” och profilmissmatchningar.gateway statusinkluderar den senaste gateway-felraden när tjänsten ser ut att köra men porten är stängd.logstailar Gateway-fil-loggen via RPC (inga manuellatail/grepbehövs).- Om andra gateway-liknande tjänster upptäcks, varnar CLI om de inte är OpenClaw profiltjänster.
Vi rekommenderar fortfarande en gateway per maskin för de flesta inställningar; använd isolerade profiler/portar för redundans eller en räddningsbot. Se Flera gateways.
- Städning:
openclaw gateway uninstall(aktuell tjänst) ochopenclaw doctor(äldre migreringar).
- Städning:
gateway installär en no-op när den redan är installerad; användopenclaw gateway install --forceför att installera om (profil-/env-/sökvägsändringar).
- OpenClaw.app kan bunta ihop ett nodbaserat gateway-relä och installera en LaunchAgent som är märkt
bot.molt.gateway(ellerbot.molt.<profile>; äldrecom.openclaw.*etiketter lastar fortfarande ren). - För att stoppa den på ett rent sätt, använd
openclaw gateway stop(ellerlaunchctl bootout gui/$UID/bot.molt.gateway). - För att starta om, använd
openclaw gateway restart(ellerlaunchctl kickstart -k gui/$UID/bot.molt.gateway).launchctlfungerar endast om LaunchAgent är installerad; annars användopenclaw gateway installförst.- Ersätt etiketten med
bot.molt.<profile>när du kör en namngiven profil.
Övervakning (systemd användarenhet)
OpenClaw installerar en systemd-användarservice som standard på Linux/WSL2. Vi rekommenderar användartjänster för enanvändarsmaskiner (enklare env, per-användarkonfiguration). Använd en systemtjänst för flera användare eller alltid-på servrar (inga kvardröjande krävs, delad övervakning).openclaw gateway install skriver användarenheten. openclaw doctor granskar
enheten och kan uppdatera den för att matcha de rekommenderade standardinställningarna.
Skapa ~/.config/systemd/user/openclaw-gateway[-<profile>].service:
/var/lib/systemd/linger).
Aktivera sedan tjänsten:
/etc/systemd/system/openclaw-gateway[-<profile>].service (kopiera enheten ovan,
switch WantedBy=multi-user.target, sätt User= + WorkingDirectory=), sedan:
Windows (WSL2)
Windows-installationer bör använda WSL2 och följa Linux-avsnittet för systemd ovan.Operativa kontroller
- Liv: öppna WS och skicka
req:connect→ förväntaresmedpayload.type="hello-ok"(med ögonblicksbild). - Beredskap: anropa
health→ förväntaok: trueoch en länkad kanal ilinkChannel(när tillämpligt). - Debug: prenumerera på
tick- ochpresence-händelser; säkerställ attstatusvisar länk-/autentiseringsålder; närvaroposter visar Gateway-värd och anslutna klienter.
Säkerhetsgarantier
- Anta en Gateway per värd som standard; om du kör flera profiler, isolera portar/tillstånd och rikta mot rätt instans.
- Ingen fallback till direkta Baileys-anslutningar; om Gateway är nere misslyckas sändningar snabbt.
- Icke-anslutningsförsta frames eller felaktig JSON avvisas och socketen stängs.
- Graciös avstängning: emittera
shutdown-händelsen innan stängning; klienter måste hantera stängning + återanslutning.
CLI-hjälpare
openclaw gateway health|status— begär hälsa/status över Gateway-WS.openclaw message send --target <num> --message "hi" [--media ...]— skicka via Gateway (idempotent för WhatsApp).openclaw agent --message "hi" --to <num>— kör en agenttur (väntar på slutresultat som standard).openclaw gateway call <method> --params '{"k":"v"}'— rå metodanropare för felsökning.openclaw gateway stop|restart— stoppa/starta om den övervakade gateway-tjänsten (launchd/systemd).- Gateway-hjälparunderkommandon förutsätter en körande gateway på
--url; de startar inte längre automatiskt en.
Migreringsvägledning
- Avveckla användning av
openclaw gatewayoch den äldre TCP-kontrollporten. - Uppdatera klienter till att tala WS-protokollet med obligatorisk anslutning och strukturerad närvaro.