Gateway
การจับคู่ที่ Gateway เป็นเจ้าของ
ในการจับคู่ที่ Gateway เป็นเจ้าของ Gateway คือแหล่งข้อมูลจริงสำหรับกำหนดว่าโหนดใด ได้รับอนุญาตให้เข้าร่วมได้ UI (แอป macOS, ไคลเอนต์ในอนาคต) เป็นเพียงส่วนหน้าที่ อนุมัติหรือปฏิเสธคำขอที่รอดำเนินการ
สำคัญ: โหนด WS ใช้ การจับคู่อุปกรณ์ (บทบาท node) ระหว่าง connect
node.pair.* เป็นที่เก็บการจับคู่แยกต่างหาก และ ไม่ได้ ใช้กั้นการจับมือ WS
เฉพาะไคลเอนต์ที่เรียก node.pair.* อย่างชัดเจนเท่านั้นที่ใช้โฟลว์นี้
แนวคิด
- คำขอที่รอดำเนินการ: โหนดขอเข้าร่วม ต้องได้รับการอนุมัติ
- โหนดที่จับคู่แล้ว: โหนดที่ได้รับอนุมัติพร้อมโทเค็นยืนยันตัวตนที่ออกให้แล้ว
- ทรานสปอร์ต: เอ็นด์พอยต์ WS ของ Gateway ส่งต่อคำขอ แต่ไม่ได้ตัดสิน สมาชิกภาพ (การรองรับบริดจ์ TCP แบบเดิมถูกนำออกแล้ว)
การจับคู่ทำงานอย่างไร
- โหนดเชื่อมต่อกับ WS ของ Gateway และขอจับคู่
- Gateway เก็บ คำขอที่รอดำเนินการ และส่งอีเวนต์
node.pair.requested - คุณอนุมัติหรือปฏิเสธคำขอ (CLI หรือ UI)
- เมื่ออนุมัติ Gateway จะออก โทเค็นใหม่ (โทเค็นจะถูกหมุนเวียนเมื่อจับคู่ใหม่)
- โหนดเชื่อมต่อใหม่โดยใช้โทเค็น และตอนนี้ถือว่า "จับคู่แล้ว"
คำขอที่รอดำเนินการจะหมดอายุโดยอัตโนมัติหลังจาก 5 นาที
เวิร์กโฟลว์ CLI (เหมาะสำหรับแบบไม่มีหน้าจอ)
openclaw nodes pending
openclaw nodes approve <requestId>
openclaw nodes reject <requestId>
openclaw nodes status
openclaw nodes remove --node <id|name|ip>
openclaw nodes rename --node <id|name|ip> --name "Living Room iPad"
nodes status แสดงโหนดที่จับคู่แล้ว/เชื่อมต่ออยู่ และความสามารถของโหนดเหล่านั้น
พื้นผิว API (โปรโตคอล Gateway)
อีเวนต์:
node.pair.requested- ส่งเมื่อมีการสร้างคำขอที่รอดำเนินการใหม่node.pair.resolved- ส่งเมื่อคำขอได้รับการอนุมัติ/ปฏิเสธ/หมดอายุ
เมธอด:
node.pair.request- สร้างหรือใช้คำขอที่รอดำเนินการซ้ำnode.pair.list- แสดงรายการโหนดที่รอดำเนินการ + โหนดที่จับคู่แล้ว (operator.pairing)node.pair.approve- อนุมัติคำขอที่รอดำเนินการ (ออกโทเค็น)node.pair.reject- ปฏิเสธคำขอที่รอดำเนินการnode.pair.remove- ลบรายการโหนดที่จับคู่แล้วซึ่งค้างอยู่node.pair.verify- ตรวจสอบ{ nodeId, token }
หมายเหตุ:
node.pair.requestเป็นแบบ idempotent ต่อโหนด: การเรียกซ้ำจะคืน คำขอที่รอดำเนินการเดียวกัน- คำขอซ้ำสำหรับโหนดที่รอดำเนินการเดียวกันจะรีเฟรชเมทาดาทาโหนดที่เก็บไว้ และสแนปชอตคำสั่งที่ประกาศล่าสุดซึ่งอยู่ในรายการอนุญาต เพื่อให้ผู้ปฏิบัติงานมองเห็นได้
- การอนุมัติจะสร้างโทเค็นใหม่ เสมอ ไม่มีโทเค็นใดถูกคืนจาก
node.pair.request - ระดับขอบเขตผู้ปฏิบัติงานและการตรวจสอบตอนอนุมัติสรุปไว้ใน ขอบเขตผู้ปฏิบัติงาน
- คำขออาจใส่
silent: trueเป็นคำใบ้สำหรับโฟลว์อนุมัติอัตโนมัติ node.pair.approveใช้คำสั่งที่ประกาศไว้ในคำขอที่รอดำเนินการเพื่อบังคับใช้ ขอบเขตอนุมัติเพิ่มเติม:- คำขอที่ไม่มีคำสั่ง:
operator.pairing - คำขอคำสั่งที่ไม่ใช่ exec:
operator.pairing+operator.write - คำขอ
system.run/system.run.prepare/system.which:operator.pairing+operator.admin
- คำขอที่ไม่มีคำสั่ง:
การกั้นคำสั่ง Node (2026.3.31+)
เมื่อโหนดเชื่อมต่อเป็นครั้งแรก ระบบจะขอจับคู่โดยอัตโนมัติ จนกว่าคำขอจับคู่จะได้รับการอนุมัติ คำสั่งโหนดที่รอดำเนินการทั้งหมดจากโหนดนั้นจะถูกกรองและจะไม่ถูกเรียกใช้งาน เมื่อสร้างความเชื่อถือผ่านการอนุมัติการจับคู่แล้ว คำสั่งที่โหนดประกาศจะพร้อมใช้งานภายใต้นโยบายคำสั่งปกติ
หมายความว่า:
- โหนดที่ก่อนหน้านี้พึ่งพาเฉพาะการจับคู่อุปกรณ์เพื่อเปิดเผยคำสั่ง ต้องทำการจับคู่โหนดให้เสร็จสมบูรณ์แล้ว
- คำสั่งที่ถูกจัดคิวก่อนการอนุมัติการจับคู่จะถูกทิ้ง ไม่ถูกเลื่อนออกไป
ขอบเขตความเชื่อถือของอีเวนต์ Node (2026.3.31+)
สรุปที่มาจากโหนดและอีเวนต์เซสชันที่เกี่ยวข้องถูกจำกัดไว้เฉพาะพื้นผิวที่เชื่อถือได้ตามเจตนา โฟลว์ที่ขับเคลื่อนด้วยการแจ้งเตือนหรือถูกทริกเกอร์โดยโหนด ซึ่งก่อนหน้านี้พึ่งพาการเข้าถึงเครื่องโฮสต์หรือเครื่องมือเซสชันที่กว้างกว่า อาจต้องปรับเปลี่ยน การเสริมความแข็งแกร่งนี้ทำให้มั่นใจว่าอีเวนต์โหนดไม่สามารถยกระดับไปสู่การเข้าถึงเครื่องมือระดับโฮสต์เกินกว่าที่ขอบเขตความเชื่อถือของโหนดอนุญาต
การอัปเดตสถานะการปรากฏของโหนดแบบคงทนจะทำตามขอบเขตตัวตนเดียวกัน อีเวนต์ node.presence.alive จะ
ได้รับการยอมรับเฉพาะจากเซสชันอุปกรณ์โหนดที่ผ่านการยืนยันตัวตน และอัปเดตเมทาดาทาการจับคู่เฉพาะเมื่อ
ตัวตนอุปกรณ์/โหนดจับคู่แล้ว ค่า client.id ที่ประกาศด้วยตัวเองไม่เพียงพอสำหรับเขียน
สถานะที่เห็นล่าสุด
การอนุมัติอัตโนมัติ (แอป macOS)
แอป macOS สามารถพยายามทำ การอนุมัติแบบเงียบ ได้ตามตัวเลือก เมื่อ:
- คำขอถูกทำเครื่องหมายเป็น
silentและ - แอปสามารถตรวจสอบการเชื่อมต่อ SSH ไปยังโฮสต์ gateway โดยใช้ผู้ใช้เดียวกันได้
หากการอนุมัติแบบเงียบล้มเหลว จะย้อนกลับไปใช้พรอมป์ "อนุมัติ/ปฏิเสธ" ตามปกติ
การอนุมัติอัตโนมัติของอุปกรณ์แบบ CIDR ที่เชื่อถือได้
การจับคู่อุปกรณ์ WS สำหรับ role: node ยังคงเป็นแบบแมนนวลโดยค่าเริ่มต้น สำหรับเครือข่าย
โหนดส่วนตัวที่ Gateway เชื่อถือเส้นทางเครือข่ายอยู่แล้ว ผู้ปฏิบัติงานสามารถ
เลือกใช้ได้ด้วย CIDR หรือ IP แบบตรงตัวที่ระบุชัดเจน:
{
gateway: {
nodes: {
pairing: {
autoApproveCidrs: ["192.168.1.0/24"],
},
},
},
}
ขอบเขตความปลอดภัย:
- ปิดใช้งานเมื่อไม่ได้ตั้งค่า
gateway.nodes.pairing.autoApproveCidrs - ไม่มีโหมดอนุมัติอัตโนมัติแบบครอบคลุมทั้ง LAN หรือเครือข่ายส่วนตัว
- เฉพาะการจับคู่อุปกรณ์
role: nodeใหม่ที่ไม่มีขอบเขตที่ร้องขอเท่านั้นที่เข้าเกณฑ์ - ไคลเอนต์ผู้ปฏิบัติงาน เบราว์เซอร์ Control UI และ WebChat ยังคงเป็นแบบแมนนวล
- การอัปเกรดบทบาท ขอบเขต เมทาดาทา และกุญแจสาธารณะยังคงเป็นแบบแมนนวล
- เส้นทางเฮดเดอร์พร็อกซีที่เชื่อถือได้แบบ same-host loopback ไม่เข้าเกณฑ์ เพราะเส้นทางนั้น อาจถูกปลอมแปลงโดยผู้เรียกในเครื่องได้
การอนุมัติอัตโนมัติสำหรับการอัปเกรดเมทาดาทา
เมื่ออุปกรณ์ที่จับคู่แล้วเชื่อมต่อใหม่พร้อมการเปลี่ยนแปลงเมทาดาทาที่ไม่อ่อนไหวเท่านั้น
(เช่น ชื่อที่แสดงหรือคำใบ้แพลตฟอร์มไคลเอนต์) OpenClaw จะถือว่าเป็น
metadata-upgrade การอนุมัติอัตโนมัติแบบเงียบมีขอบเขตแคบ: ใช้เฉพาะ
กับการเชื่อมต่อใหม่ในเครื่องที่ไม่ใช่เบราว์เซอร์และเชื่อถือได้ ซึ่งได้พิสูจน์การครอบครองข้อมูลรับรองในเครื่อง
หรือข้อมูลรับรองร่วมแล้ว รวมถึงการเชื่อมต่อใหม่จากแอปเนทีฟบนโฮสต์เดียวกันหลังการเปลี่ยนแปลงเมทาดาทา
เวอร์ชัน OS ไคลเอนต์เบราว์เซอร์/Control UI และไคลเอนต์ระยะไกลยังคง
ใช้โฟลว์อนุมัติซ้ำแบบชัดเจน การอัปเกรดขอบเขต (อ่านเป็นเขียน/admin) และ
การเปลี่ยนกุญแจสาธารณะ ไม่ เข้าเกณฑ์สำหรับการอนุมัติอัตโนมัติแบบ metadata-upgrade -
ยังคงเป็นคำขออนุมัติซ้ำแบบชัดเจน
ตัวช่วยจับคู่ QR
/pair qr เรนเดอร์เพย์โหลดการจับคู่เป็นสื่อที่มีโครงสร้าง เพื่อให้ไคลเอนต์มือถือและ
เบราว์เซอร์สามารถสแกนได้โดยตรง
การลบอุปกรณ์ยังจะกวาดล้างคำขอจับคู่ที่รอดำเนินการซึ่งค้างอยู่สำหรับ
รหัสอุปกรณ์นั้นด้วย ดังนั้น nodes pending จะไม่แสดงแถวกำพร้าหลังการเพิกถอน
ความเป็นภายในพื้นที่และเฮดเดอร์ที่ส่งต่อ
การจับคู่ของ Gateway จะถือว่าการเชื่อมต่อเป็น loopback เฉพาะเมื่อทั้งซ็อกเก็ตดิบ
และหลักฐานพร็อกซีต้นทางใด ๆ สอดคล้องกัน หากคำขอมาถึงบน loopback แต่
มีเฮดเดอร์ X-Forwarded-For / X-Forwarded-Host / X-Forwarded-Proto
ที่ชี้ไปยังต้นทางที่ไม่ใช่ภายใน หลักฐานเฮดเดอร์ที่ส่งต่อนั้นจะทำให้
การอ้างว่าเป็นพื้นที่ loopback ไม่เข้าเกณฑ์ เส้นทางการจับคู่จึงต้องได้รับการอนุมัติอย่างชัดเจน
แทนที่จะถือว่าคำขอเป็นการเชื่อมต่อจากโฮสต์เดียวกันแบบเงียบ ๆ ดู
การยืนยันตัวตนพร็อกซีที่เชื่อถือได้ สำหรับกฎเทียบเท่าเกี่ยวกับ
การยืนยันตัวตนผู้ปฏิบัติงาน
พื้นที่จัดเก็บ (ภายในเครื่อง, ส่วนตัว)
สถานะการจับคู่ถูกเก็บไว้ใต้ไดเรกทอรีสถานะของ Gateway (ค่าเริ่มต้น ~/.openclaw):
~/.openclaw/nodes/paired.json~/.openclaw/nodes/pending.json
หากคุณแทนที่ OPENCLAW_STATE_DIR โฟลเดอร์ nodes/ จะย้ายตามไปด้วย
หมายเหตุด้านความปลอดภัย:
- โทเค็นเป็นความลับ ให้ถือว่า
paired.jsonเป็นข้อมูลอ่อนไหว - การหมุนเวียนโทเค็นต้องมีการอนุมัติซ้ำ (หรือการลบรายการโหนด)
พฤติกรรมของทรานสปอร์ต
- ทรานสปอร์ตเป็นแบบ ไร้สถานะ ไม่เก็บสมาชิกภาพ
- หาก Gateway ออฟไลน์หรือปิดใช้งานการจับคู่ โหนดจะจับคู่ไม่ได้
- หาก Gateway อยู่ในโหมดระยะไกล การจับคู่ยังคงเกิดขึ้นกับที่เก็บของ Gateway ระยะไกล