Gateway
คู่มือปฏิบัติการ Gateway
ใช้หน้านี้สำหรับการเริ่มต้นใช้งาน Gateway service ในวันแรก และการดำเนินงานในวันที่สอง
การวินิจฉัยโดยเริ่มจากอาการ พร้อมลำดับคำสั่งที่แน่นอนและลายเซ็นของบันทึก
คู่มือการตั้งค่าตามงาน + เอกสารอ้างอิงการกำหนดค่าฉบับเต็ม
สัญญา SecretRef, พฤติกรรมสแนปช็อตขณะรันไทม์ และการดำเนินการย้าย/โหลดใหม่
กฎ target/path ที่แน่นอนของ secrets apply และพฤติกรรม auth-profile แบบอ้างอิงเท่านั้น
การเริ่มต้นในเครื่องภายใน 5 นาที
Start the Gateway
openclaw gateway --port 18789# debug/trace mirrored to stdioopenclaw gateway --port 18789 --verbose# force-kill listener on selected port, then startopenclaw gateway --forceVerify service health
openclaw gateway statusopenclaw statusopenclaw logs --followค่าพื้นฐานที่ปกติ: Runtime: running, Connectivity probe: ok และ Capability: ... ที่ตรงกับสิ่งที่คุณคาดไว้ ใช้ openclaw gateway status --require-rpc เมื่อคุณต้องการหลักฐาน RPC ขอบเขตการอ่าน ไม่ใช่แค่การเข้าถึงได้
Validate channel readiness
openclaw channels status --probeเมื่อมี Gateway ที่เข้าถึงได้ คำสั่งนี้จะรันการตรวจสอบ channel แบบสดต่อบัญชี และการ audit เพิ่มเติม หาก Gateway เข้าถึงไม่ได้ CLI จะถอยกลับไปแสดงสรุป channel จากการกำหนดค่าเท่านั้นแทน ผลลัพธ์จากการตรวจสอบสด
โมเดลรันไทม์
- process ที่ทำงานตลอดเวลาหนึ่งตัวสำหรับการ routing, control plane และการเชื่อมต่อ channel
- พอร์ตเดียวแบบ multiplexed สำหรับ:
- WebSocket control/RPC
- HTTP API ที่เข้ากันได้กับ OpenAI (
/v1/models,/v1/embeddings,/v1/chat/completions,/v1/responses,/tools/invoke) - Control UI และ hooks
- โหมด bind เริ่มต้น:
loopback - ต้องมีการยืนยันตัวตนโดยค่าเริ่มต้น การตั้งค่า shared-secret ใช้
gateway.auth.token/gateway.auth.password(หรือOPENCLAW_GATEWAY_TOKEN/OPENCLAW_GATEWAY_PASSWORD) และการตั้งค่า reverse-proxy แบบไม่ใช่ loopback สามารถใช้gateway.auth.mode: "trusted-proxy"ได้
endpoint ที่เข้ากันได้กับ OpenAI
พื้นผิวความเข้ากันได้ที่ให้ประโยชน์สูงสุดของ OpenClaw ตอนนี้คือ:
GET /v1/modelsGET /v1/models/{id}POST /v1/embeddingsPOST /v1/chat/completionsPOST /v1/responses
เหตุผลที่ชุดนี้สำคัญ:
- การผสานรวม Open WebUI, LobeChat และ LibreChat ส่วนใหญ่จะตรวจสอบ
/v1/modelsก่อน - ไปป์ไลน์ RAG และ memory จำนวนมากคาดหวัง
/v1/embeddings - client แบบ agent-native นิยมใช้
/v1/responsesมากขึ้นเรื่อย ๆ
หมายเหตุการวางแผน:
/v1/modelsเน้น agent เป็นอันดับแรก: ส่งคืนopenclaw,openclaw/defaultและopenclaw/<agentId>openclaw/defaultเป็น alias ที่เสถียร ซึ่งแมปไปยัง agent เริ่มต้นที่กำหนดค่าไว้เสมอ- ใช้
x-openclaw-modelเมื่อต้องการ override backend provider/model มิฉะนั้น model และการตั้งค่า embedding ปกติของ agent ที่เลือกจะยังเป็นตัวควบคุม
ทั้งหมดนี้รันบนพอร์ต Gateway หลัก และใช้ขอบเขตการยืนยันตัวตนของ operator ที่เชื่อถือได้เดียวกันกับส่วนที่เหลือของ HTTP API ของ Gateway
ลำดับความสำคัญของพอร์ตและ bind
| การตั้งค่า | ลำดับการแก้ค่า |
|---|---|
| พอร์ต Gateway | --port → OPENCLAW_GATEWAY_PORT → gateway.port → 18789 |
| โหมด Bind | CLI/override → gateway.bind → loopback |
Gateway service ที่ติดตั้งแล้วจะบันทึกค่า --port ที่แก้แล้วไว้ใน metadata ของ supervisor หลังจากเปลี่ยน gateway.port ให้รัน openclaw doctor --fix หรือ openclaw gateway install --force เพื่อให้ launchd/systemd/schtasks เริ่ม process บนพอร์ตใหม่
การเริ่มต้น Gateway ใช้พอร์ตและ bind ที่มีผลเดียวกันเมื่อ seed
origin ของ Control UI ในเครื่องสำหรับ bind แบบไม่ใช่ loopback ตัวอย่างเช่น --bind lan --port 3000
จะ seed http://localhost:3000 และ http://127.0.0.1:3000 ก่อนที่การตรวจสอบ
รันไทม์จะทำงาน เพิ่ม origin ของเบราว์เซอร์ระยะไกลใด ๆ เช่น HTTPS proxy URLs ไปยัง
gateway.controlUi.allowedOrigins อย่างชัดเจน
โหมด Hot reload
gateway.reload.mode |
พฤติกรรม |
|---|---|
off |
ไม่มีการโหลด config ใหม่ |
hot |
ใช้เฉพาะการเปลี่ยนแปลงที่ปลอดภัยสำหรับ hot |
restart |
รีสตาร์ตเมื่อมีการเปลี่ยนแปลงที่ต้องโหลดใหม่ |
hybrid (ค่าเริ่มต้น) |
hot-apply เมื่อปลอดภัย และรีสตาร์ตเมื่อจำเป็น |
ชุดคำสั่งของ operator
openclaw gateway statusopenclaw gateway status --deep # adds a system-level service scanopenclaw gateway status --jsonopenclaw gateway installopenclaw gateway restartopenclaw gateway stopopenclaw secrets reloadopenclaw logs --followopenclaw doctorgateway status --deep ใช้สำหรับการค้นหา service เพิ่มเติม (LaunchDaemons/systemd system
units/schtasks) ไม่ใช่การตรวจสอบสุขภาพ RPC ที่ลึกกว่า
Gateway หลายตัว (โฮสต์เดียวกัน)
การติดตั้งส่วนใหญ่ควรรัน Gateway หนึ่งตัวต่อเครื่อง Gateway เดียวสามารถโฮสต์ agent และ channel ได้หลายรายการ
คุณต้องใช้ Gateway หลายตัวเฉพาะเมื่อคุณตั้งใจต้องการการแยกส่วนหรือบอทช่วยกู้คืน
การตรวจสอบที่มีประโยชน์:
openclaw gateway status --deepopenclaw gateway probeสิ่งที่ควรคาดหวัง:
gateway status --deepสามารถรายงานOther gateway-like services detected (best effort)และพิมพ์คำแนะนำการล้างข้อมูลเมื่อยังมีการติดตั้ง launchd/systemd/schtasks ที่ค้างอยู่gateway probeสามารถเตือนเกี่ยวกับmultiple reachable gatewaysเมื่อมี target มากกว่าหนึ่งตัว ตอบกลับ- หากตั้งใจให้เป็นเช่นนั้น ให้แยกพอร์ต, config/state และราก workspace ต่อ Gateway
Checklist ต่อ instance:
gateway.portที่ไม่ซ้ำOPENCLAW_CONFIG_PATHที่ไม่ซ้ำOPENCLAW_STATE_DIRที่ไม่ซ้ำagents.defaults.workspaceที่ไม่ซ้ำ
ตัวอย่าง:
OPENCLAW_CONFIG_PATH=~/.openclaw/a.json OPENCLAW_STATE_DIR=~/.openclaw-a openclaw gateway --port 19001OPENCLAW_CONFIG_PATH=~/.openclaw/b.json OPENCLAW_STATE_DIR=~/.openclaw-b openclaw gateway --port 19002การตั้งค่าโดยละเอียด: /gateway/multiple-gateways.
การเข้าถึงระยะไกล
แนะนำ: Tailscale/VPN. ทางเลือกสำรอง: SSH tunnel.
ssh -N -L 18789:127.0.0.1:18789 user@hostจากนั้นเชื่อมต่อ client ในเครื่องไปยัง ws://127.0.0.1:18789
ดู: Remote Gateway, Authentication, Tailscale.
การกำกับดูแลและ lifecycle ของ service
ใช้การรันแบบ supervised เพื่อความน่าเชื่อถือใกล้เคียง production
macOS (launchd)
openclaw gateway installopenclaw gateway statusopenclaw gateway restartopenclaw gateway stopใช้ openclaw gateway restart สำหรับการรีสตาร์ต อย่า chain openclaw gateway stop และ openclaw gateway start เพื่อใช้แทนการรีสตาร์ต
บน macOS, gateway stop ใช้ launchctl bootout โดยค่าเริ่มต้น — วิธีนี้จะลบ LaunchAgent ออกจาก boot session ปัจจุบันโดยไม่คงการ disable ไว้ ดังนั้นการกู้คืนอัตโนมัติของ KeepAlive จึงยังทำงานได้หลังจาก crash ที่ไม่คาดคิด และ gateway start จะเปิดใช้งานใหม่ได้อย่างสะอาด หากต้องการระงับ auto-respawn ข้ามการ reboot อย่างถาวร ให้ส่ง --disable: openclaw gateway stop --disable
label ของ LaunchAgent คือ ai.openclaw.gateway (ค่าเริ่มต้น) หรือ ai.openclaw.<profile> (profile ที่ตั้งชื่อ) openclaw doctor จะ audit และซ่อม drift ของ config service
Linux (systemd user)
openclaw gateway installsystemctl --user enable --now openclaw-gateway[-<profile>].serviceopenclaw gateway statusเพื่อให้คงอยู่หลัง logout ให้เปิดใช้ lingering:
sudo loginctl enable-linger <user>ตัวอย่าง user-unit แบบ manual เมื่อคุณต้องการพาธการติดตั้งแบบกำหนดเอง:
[Unit]Description=OpenClaw GatewayAfter=network-online.targetWants=network-online.target [Service]ExecStart=/usr/local/bin/openclaw gateway --port 18789Restart=alwaysRestartSec=5TimeoutStopSec=30TimeoutStartSec=30SuccessExitStatus=0 143KillMode=control-group [Install]WantedBy=default.targetWindows (native)
openclaw gateway installopenclaw gateway status --jsonopenclaw gateway restartopenclaw gateway stopการเริ่มต้นแบบ managed บน Windows native ใช้ Scheduled Task ชื่อ OpenClaw Gateway
(หรือ OpenClaw Gateway (<profile>) สำหรับ profile ที่ตั้งชื่อ) หากการสร้าง Scheduled Task
ถูกปฏิเสธ OpenClaw จะถอยกลับไปใช้ตัวเรียกใช้งานใน Startup-folder ต่อผู้ใช้
ที่ชี้ไปยัง gateway.cmd ภายใน state directory
Linux (system service)
ใช้ system unit สำหรับโฮสต์แบบหลายผู้ใช้/ทำงานตลอดเวลา
sudo systemctl daemon-reloadsudo systemctl enable --now openclaw-gateway[-<profile>].serviceใช้ body ของ service เดียวกับ user unit แต่ติดตั้งไว้ภายใต้
/etc/systemd/system/openclaw-gateway[-<profile>].service และปรับ
ExecStart= หาก binary openclaw ของคุณอยู่ที่อื่น
อย่าให้ openclaw doctor --fix ติดตั้ง Gateway service ระดับผู้ใช้สำหรับ profile/port เดียวกันด้วย Doctor จะปฏิเสธการติดตั้งอัตโนมัตินั้นเมื่อพบ Gateway service ของ OpenClaw ระดับระบบ ใช้ OPENCLAW_SERVICE_REPAIR_POLICY=external เมื่อ system unit เป็นเจ้าของ lifecycle
เส้นทางด่วนสำหรับ dev profile
openclaw --dev setupopenclaw --dev gateway --allow-unconfiguredopenclaw --dev statusค่าเริ่มต้นรวม state/config ที่แยกไว้ และพอร์ต Gateway พื้นฐาน 19001
อ้างอิงย่อของ Protocol (มุมมอง operator)
- frame แรกของ client ต้องเป็น
connect - Gateway ส่งคืนสแนปช็อต
hello-ok(presence,health,stateVersion,uptimeMs, limits/policy) hello-ok.features.methods/eventsเป็นรายการ discovery แบบระมัดระวัง ไม่ใช่ dump ที่สร้างขึ้นของ helper route ทุกตัวที่เรียกได้- คำขอ:
req(method, params)→res(ok/payload|error) - event ทั่วไปรวมถึง
connect.challenge,agent,chat,session.message,session.tool,sessions.changed,presence,tick,health,heartbeat, event ของ lifecycle การ pairing/approval และshutdown
การรัน agent มีสองขั้นตอน:
- ack accepted ทันที (
status:"accepted") - response การเสร็จสิ้นขั้นสุดท้าย (
status:"ok"|"error") พร้อม eventagentที่ stream อยู่ระหว่างนั้น
ดูเอกสาร protocol ฉบับเต็ม: Gateway Protocol.
การตรวจสอบด้านปฏิบัติการ
Liveness
- เปิด WS และส่ง
connect - คาดหวัง response
hello-okพร้อมสแนปช็อต
Readiness
openclaw gateway statusopenclaw channels status --probeopenclaw healthการกู้คืน gap
event จะไม่ถูก replay เมื่อเกิดช่องว่างของ sequence ให้ refresh state (health, system-presence) ก่อนดำเนินการต่อ
ลายเซ็นความล้มเหลวที่พบบ่อย
| รูปแบบข้อความ | ปัญหาที่เป็นไปได้ |
|---|---|
refusing to bind gateway ... without auth |
การผูกกับที่อยู่ที่ไม่ใช่ลูปแบ็กโดยไม่มีเส้นทางการยืนยันตัวตนของ Gateway ที่ถูกต้อง |
another gateway instance is already listening / EADDRINUSE |
พอร์ตขัดแย้ง |
Gateway start blocked: set gateway.mode=local |
ตั้งค่าคอนฟิกเป็นโหมดระยะไกล หรือสแตมป์โหมดภายในเครื่องหายไปจากคอนฟิกที่เสียหาย |
unauthorized during connect |
การยืนยันตัวตนไม่ตรงกันระหว่างไคลเอนต์และ Gateway |
สำหรับลำดับขั้นการวินิจฉัยฉบับเต็ม ให้ใช้ การแก้ไขปัญหา Gateway
การรับประกันด้านความปลอดภัย
- ไคลเอนต์โปรโตคอล Gateway ล้มเหลวอย่างรวดเร็วเมื่อ Gateway ไม่พร้อมใช้งาน (ไม่มีการย้อนกลับไปใช้ช่องทางโดยตรงโดยนัย)
- เฟรมแรกที่ไม่ถูกต้องหรือไม่ใช่การเชื่อมต่อจะถูกปฏิเสธและปิด
- การปิดระบบอย่างนุ่มนวลจะส่งเหตุการณ์
shutdownก่อนปิดซ็อกเก็ต
ที่เกี่ยวข้อง: