CLI commands

Node

openclaw node

เรียกใช้โฮสต์โหนดแบบไม่มีส่วนติดต่อผู้ใช้ที่เชื่อมต่อกับ Gateway WebSocket และเปิดให้ใช้ system.run / system.which บนเครื่องนี้

ทำไมต้องใช้โฮสต์โหนด?

ใช้โฮสต์โหนดเมื่อคุณต้องการให้เอเจนต์เรียกใช้คำสั่งบนเครื่องอื่นในเครือข่ายของคุณ โดยไม่ต้องติดตั้งแอปคู่หู macOS แบบเต็มไว้ที่นั่น

กรณีใช้งานทั่วไป:

  • เรียกใช้คำสั่งบนเครื่อง Linux/Windows ระยะไกล (เซิร์ฟเวอร์บิลด์, เครื่องแล็บ, NAS)
  • ทำให้ exec ยังคงอยู่ในแซนด์บ็อกซ์บน Gateway แต่ส่งต่อการรันที่ได้รับอนุมัติไปยังโฮสต์อื่น
  • จัดหาเป้าหมายการประมวลผลแบบเบาและไม่มีส่วนติดต่อผู้ใช้สำหรับโหนดระบบอัตโนมัติหรือ CI

การประมวลผลยังคงถูกควบคุมด้วยการอนุมัติ execและ allowlist รายเอเจนต์บน โฮสต์โหนด ดังนั้นคุณจึงสามารถจำกัดขอบเขตและกำหนดสิทธิ์การเข้าถึงคำสั่งได้อย่างชัดเจน

พร็อกซีเบราว์เซอร์ (ไม่ต้องตั้งค่า)

โฮสต์โหนดจะประกาศพร็อกซีเบราว์เซอร์โดยอัตโนมัติ หากไม่ได้ปิดใช้ browser.enabled บนโหนด ซึ่งทำให้เอเจนต์ใช้ระบบอัตโนมัติของเบราว์เซอร์บนโหนดนั้นได้ โดยไม่ต้องตั้งค่าเพิ่มเติม

โดยค่าเริ่มต้น พร็อกซีจะเปิดเผยพื้นผิวโปรไฟล์เบราว์เซอร์ปกติของโหนด หากคุณ ตั้งค่า nodeHost.browserProxy.allowProfiles พร็อกซีจะกลายเป็นแบบจำกัด: การกำหนดเป้าหมายโปรไฟล์ที่ไม่ได้อยู่ใน allowlist จะถูกปฏิเสธ และเส้นทาง สร้าง/ลบโปรไฟล์แบบถาวรจะถูกบล็อกผ่านพร็อกซี

ปิดใช้บนโหนดได้หากจำเป็น:

{
  nodeHost: {
    browserProxy: {
      enabled: false,
    },
  },
}

เรียกใช้ (เบื้องหน้า)

openclaw node run --host <gateway-host> --port 18789

ตัวเลือก:

  • --host <host>: โฮสต์ Gateway WebSocket (ค่าเริ่มต้น: 127.0.0.1)
  • --port <port>: พอร์ต Gateway WebSocket (ค่าเริ่มต้น: 18789)
  • --tls: ใช้ TLS สำหรับการเชื่อมต่อ Gateway
  • --tls-fingerprint <sha256>: ลายนิ้วมือใบรับรอง TLS ที่คาดไว้ (sha256)
  • --node-id <id>: แทนที่รหัสโหนด (ล้างโทเค็นการจับคู่)
  • --display-name <name>: แทนที่ชื่อที่แสดงของโหนด

การยืนยันตัวตน Gateway สำหรับโฮสต์โหนด

openclaw node run และ openclaw node install แก้ค่าการยืนยันตัวตน Gateway จาก config/env (ไม่มีแฟล็ก --token/--password บนคำสั่งโหนด):

  • ตรวจสอบ OPENCLAW_GATEWAY_TOKEN / OPENCLAW_GATEWAY_PASSWORD ก่อน
  • จากนั้นใช้ค่าท้องถิ่นสำรอง: gateway.auth.token / gateway.auth.password
  • ในโหมดท้องถิ่น โฮสต์โหนดจงใจไม่สืบทอด gateway.remote.token / gateway.remote.password
  • หากกำหนดค่า gateway.auth.token / gateway.auth.password อย่างชัดเจนผ่าน SecretRef และแก้ค่าไม่ได้ การแก้ค่าการยืนยันตัวตนของโหนดจะปิดโดยปริยาย (ไม่มี remote fallback มาปิดบัง)
  • ใน gateway.mode=remote ฟิลด์ไคลเอนต์ระยะไกล (gateway.remote.token / gateway.remote.password) จะมีสิทธิ์ใช้งานได้ด้วยตามกฎลำดับความสำคัญของระยะไกล
  • การแก้ค่าการยืนยันตัวตนของโฮสต์โหนดจะเคารพเฉพาะตัวแปร env OPENCLAW_GATEWAY_*

สำหรับโหนดที่เชื่อมต่อกับ Gateway ws:// ที่ไม่ใช่ local loopback บนเครือข่ายส่วนตัว ที่เชื่อถือได้ ให้ตั้งค่า OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 หากไม่มีค่านี้ การเริ่มต้นโหนด จะปิดโดยปริยายและขอให้คุณใช้ wss://, ทันเนล SSH หรือ Tailscale นี่เป็นการเลือกเข้าร่วมผ่านสภาพแวดล้อมของกระบวนการ ไม่ใช่คีย์ config openclaw.json openclaw node install จะบันทึกค่านี้ไว้ในบริการโหนดที่ถูกควบคุมเมื่อค่าอยู่ใน สภาพแวดล้อมของคำสั่งติดตั้ง

บริการ (เบื้องหลัง)

ติดตั้งโฮสต์โหนดแบบไม่มีส่วนติดต่อผู้ใช้เป็นบริการผู้ใช้

openclaw node install --host <gateway-host> --port 18789

ตัวเลือก:

  • --host <host>: โฮสต์ Gateway WebSocket (ค่าเริ่มต้น: 127.0.0.1)
  • --port <port>: พอร์ต Gateway WebSocket (ค่าเริ่มต้น: 18789)
  • --tls: ใช้ TLS สำหรับการเชื่อมต่อ Gateway
  • --tls-fingerprint <sha256>: ลายนิ้วมือใบรับรอง TLS ที่คาดไว้ (sha256)
  • --node-id <id>: แทนที่รหัสโหนด (ล้างโทเค็นการจับคู่)
  • --display-name <name>: แทนที่ชื่อที่แสดงของโหนด
  • --runtime <runtime>: รันไทม์บริการ (node หรือ bun)
  • --force: ติดตั้งใหม่/เขียนทับหากติดตั้งไว้แล้ว

จัดการบริการ:

openclaw node status
openclaw node start
openclaw node stop
openclaw node restart
openclaw node uninstall

ใช้ openclaw node run สำหรับโฮสต์โหนดเบื้องหน้า (ไม่มีบริการ)

คำสั่งบริการรองรับ --json สำหรับเอาต์พุตที่เครื่องอ่านได้

โฮสต์โหนดจะลองเชื่อมต่อใหม่เมื่อ Gateway รีสตาร์ทและเครือข่ายปิดภายในกระบวนการ หาก Gateway รายงานการหยุดพักการยืนยันตัวตนด้วยโทเค็น/รหัสผ่าน/bootstrap แบบสิ้นสุด โฮสต์โหนด จะบันทึกรายละเอียดการปิดและออกด้วยสถานะไม่เป็นศูนย์ เพื่อให้ launchd/systemd สามารถรีสตาร์ทด้วย config และข้อมูลประจำตัวชุดใหม่ได้ การหยุดพักที่ต้องจับคู่จะยังอยู่ในโฟลว์ เบื้องหน้า เพื่อให้คำขอที่รอดำเนินการสามารถได้รับการอนุมัติ

การจับคู่

การเชื่อมต่อครั้งแรกจะสร้างคำขอจับคู่อุปกรณ์ที่รอดำเนินการ (role: node) บน Gateway อนุมัติผ่าน:

openclaw devices list
openclaw devices approve <requestId>

บนเครือข่ายโหนดที่ควบคุมอย่างเข้มงวด ผู้ควบคุม Gateway สามารถเลือกเข้าร่วมอย่างชัดเจน เพื่ออนุมัติการจับคู่โหนดครั้งแรกจาก CIDR ที่เชื่อถือได้โดยอัตโนมัติ:

{
  gateway: {
    nodes: {
      pairing: {
        autoApproveCidrs: ["192.168.1.0/24"],
      },
    },
  },
}

ค่านี้ถูกปิดใช้โดยค่าเริ่มต้น ใช้กับการจับคู่ role: node ใหม่ที่ ไม่มี scope ที่ร้องขอเท่านั้น ไคลเอนต์ผู้ควบคุม/เบราว์เซอร์, Control UI, WebChat และการอัปเกรด role, scope, metadata หรือ public-key ยังคงต้องอนุมัติด้วยตนเอง

หากโหนดลองจับคู่ใหม่พร้อมรายละเอียดการยืนยันตัวตนที่เปลี่ยนไป (role/scopes/public key) คำขอที่รอดำเนินการก่อนหน้าจะถูกแทนที่ และมีการสร้าง requestId ใหม่ เรียกใช้ openclaw devices list อีกครั้งก่อนอนุมัติ

โฮสต์โหนดจัดเก็บรหัสโหนด โทเค็น ชื่อที่แสดง และข้อมูลการเชื่อมต่อ Gateway ไว้ใน ~/.openclaw/node.json

การอนุมัติ exec

system.run ถูกควบคุมด้วยการอนุมัติ exec ท้องถิ่น:

สำหรับ exec โหนดแบบ async ที่ได้รับอนุมัติ OpenClaw จะเตรียม systemRunPlan มาตรฐาน ก่อนแสดงพรอมต์ การส่งต่อ system.run ที่ได้รับอนุมัติภายหลังจะนำแผนที่จัดเก็บไว้นั้น กลับมาใช้ ดังนั้นการแก้ไขฟิลด์ command/cwd/session หลังจากสร้างคำขออนุมัติแล้ว จะถูกปฏิเสธแทนที่จะเปลี่ยนสิ่งที่โหนดประมวลผล

ที่เกี่ยวข้อง