การจับคู่ที่เป็นเจ้าของโดยGateway(ตัวเลือกB)¶
ในการจับคู่แบบเกตเวย์เป็นเจ้าของ Gateway คือแหล่งความจริงว่ามีโหนดใดบ้างที่ได้รับอนุญาตให้เข้าร่วม ในการจับคู่ที่เป็นเจ้าของโดยGateway Gatewayคือแหล่งอ้างอิงหลักสำหรับการกำหนดว่าโหนดใดได้รับอนุญาตให้เข้าร่วม UIต่างๆ(แอปmacOSและไคลเอนต์ในอนาคต)เป็นเพียงส่วนหน้าในการอนุมัติหรือปฏิเสธคำขอที่รอดำเนินการ
สำคัญ: โหนดWSใช้การจับคู่อุปกรณ์(บทบาท node)ระหว่าง connect
node.pair.*เป็นที่เก็บการจับคู่แยกต่างหากและไม่ใช้เป็นเกณฑ์ในการทำWS handshake เฉพาะไคลเอนต์ที่เรียก node.pair.* โดยชัดเจนเท่านั้นที่ใช้โฟลว์นี้
node.pair.* เป็นที่เก็บการจับคู่แยกต่างหาก และ ไม่ ใช้ควบคุมการจับมือ WS
มีเพียงไคลเอนต์ที่เรียก node.pair.* อย่างชัดเจนเท่านั้นที่ใช้โฟลว์นี้
แนวคิด¶
- คำขอที่รอดำเนินการ: โหนดร้องขอเข้าร่วม; ต้องได้รับการอนุมัติ
- โหนดที่จับคู่แล้ว: โหนดที่ได้รับอนุมัติและมีการออกโทเคนยืนยันตัวตน
- ทรานสปอร์ต: ปลายทางWSของGatewayทำหน้าที่ส่งต่อคำขอแต่ไม่ตัดสินใจเรื่องสมาชิกภาพ(การรองรับTCP bridge แบบเดิมเลิกใช้/ถูกนำออกแล้ว) (การรองรับบริดจ์ 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 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— แสดงรายการโหนดที่รอดำเนินการ+ที่จับคู่แล้วnode.pair.approve— อนุมัติคำขอที่รอดำเนินการ(ออกโทเคน)node.pair.reject— ปฏิเสธคำขอที่รอดำเนินการnode.pair.verify— ตรวจสอบ{ nodeId, token }
หมายเหตุ:
node.pair.requestเป็น idempotent ต่อโหนด: การเรียกซ้ำจะได้คำขอที่รอดำเนินการเดิม- การอนุมัติจะสร้างโทเคนใหม่ เสมอ; จะไม่มีการส่งคืนโทเคนจาก
node.pair.request - คำขออาจรวม
silent: trueเป็นตัวบ่งชี้สำหรับโฟลว์การอนุมัติอัตโนมัติ
การอนุมัติอัตโนมัติ(แอปmacOS)¶
แอปmacOSสามารถพยายามทำการอนุมัติแบบเงียบได้เมื่อ:
- คำขอถูกทำเครื่องหมายเป็น
silentและ - แอปสามารถยืนยันการเชื่อมต่อSSHไปยังโฮสต์Gatewayโดยใช้ผู้ใช้เดียวกัน
หากการอนุมัติแบบเงียบล้มเหลว ระบบจะกลับไปใช้พรอมต์ปกติ“อนุมัติ/ปฏิเสธ”
ที่เก็บข้อมูล(ภายในเครื่อง,ส่วนตัว)¶
สถานะการจับคู่ถูกจัดเก็บภายใต้ไดเรกทอรีสถานะของGateway(ค่าเริ่มต้น ~/.openclaw):
~/.openclaw/nodes/paired.json~/.openclaw/nodes/pending.json
หากคุณแทนที่ OPENCLAW_STATE_DIR โฟลเดอร์ nodes/ จะย้ายตามไปด้วย
หมายเหตุด้านความปลอดภัย:
- โทเคนเป็นความลับ; ควรปฏิบัติต่อ
paired.jsonเป็นข้อมูลอ่อนไหว - การหมุนเวียนโทเคนต้องมีการอนุมัติใหม่(หรือลบรายการโหนด)
พฤติกรรมของทรานสปอร์ต¶
- ทรานสปอร์ตเป็นแบบไร้สถานะ; ไม่จัดเก็บสมาชิกภาพ
- หากGatewayออฟไลน์หรือปิดการจับคู่ โหนดจะไม่สามารถจับคู่ได้
- หากGatewayอยู่ในโหมดระยะไกล การจับคู่ายังคงทำกับที่เก็บของGatewayระยะไกลนั้น