Multi-agent
สถานะการออนไลน์
OpenClaw "สถานะการปรากฏ" เป็นมุมมองแบบเบาและพยายามแสดงข้อมูลให้ดีที่สุดสำหรับ:
- ตัว Gateway เอง และ
- ไคลเอนต์ที่ผู้ใช้มองเห็นซึ่งเชื่อมต่อกับ Gateway (แอป Mac, WebChat, โหนด ฯลฯ)
สถานะการปรากฏจะแสดงข้อมูลเมตาการเชื่อมต่อแบบสดในหน้า Devices ของ Control UI (ภายใต้ Settings → Devices) และแท็บ Instances ของแอป macOS
หน้านี้อธิบายรายการไคลเอนต์ของ Gateway หากต้องการตรวจหา Mac ที่ใช้งานล่าสุด และกำหนดเส้นทางการแจ้งเตือนของโหนดไปยังเครื่องนั้น โปรดดู สถานะการปรากฏของคอมพิวเตอร์ที่ใช้งานอยู่
ฟิลด์สถานะการปรากฏ (ข้อมูลที่แสดง)
รายการสถานะการปรากฏเป็นออบเจ็กต์ที่มีโครงสร้าง โดยมีฟิลด์ต่างๆ เช่น:
instanceId(ไม่บังคับแต่แนะนำอย่างยิ่ง): ข้อมูลประจำตัวไคลเอนต์แบบคงที่ (โดยทั่วไปคือconnect.client.instanceId)host: ชื่อโฮสต์ที่อ่านเข้าใจง่ายip: ที่อยู่ IP ที่ระบุได้ดีที่สุดversion: สตริงเวอร์ชันของไคลเอนต์deviceFamily/modelIdentifier: ข้อมูลบ่งชี้ฮาร์ดแวร์mode:ui,webchat,cli,backend,node,probe,testlastInputSeconds: จำนวนวินาทีนับจากอินพุตล่าสุดของผู้ใช้ หากทราบreason: สตริงรูปแบบอิสระที่ไคลเอนต์ส่งมา โดยตัว Gateway เองจะส่งเฉพาะself,connectและdisconnectdeviceId,roles,scopes: ข้อมูลประจำตัวอุปกรณ์และข้อมูลบ่งชี้บทบาท/ขอบเขตจากการจับมือเชื่อมต่อts: การประทับเวลาของการอัปเดตล่าสุด (มิลลิวินาทีนับจาก epoch)
แหล่งข้อมูล (สถานะการปรากฏมาจากที่ใด)
รายการสถานะการปรากฏสร้างขึ้นจากหลายแหล่งและถูก ผสาน เข้าด้วยกัน
1) รายการของ Gateway เอง
Gateway จะสร้างรายการ "ตนเอง" เริ่มต้นทุกครั้งเมื่อเริ่มทำงาน เพื่อให้ UI แสดงโฮสต์ของ Gateway ได้ก่อนที่จะมีไคลเอนต์เชื่อมต่อ
2) การเชื่อมต่อ WebSocket
ไคลเอนต์ WS ทุกตัวเริ่มต้นด้วยคำขอ connect เมื่อจับมือสำเร็จ
Gateway จะเพิ่มหรืออัปเดตรายการสถานะการปรากฏสำหรับการเชื่อมต่อนั้น
เหตุผลที่การเชื่อมต่อระนาบควบคุมชั่วคราวไม่ปรากฏ
คำสั่ง CLI, ไคลเอนต์ RPC ฝั่งแบ็กเอนด์ และโพรบมักเชื่อมต่อเพียงชั่วครู่ เพื่อหลีกเลี่ยง
การเก็บความเปลี่ยนแปลงเหล่านั้นไว้ตลอด TTL ของสถานะการปรากฏ ไคลเอนต์ในโหมด cli, backend
หรือ probe จะ ไม่ ถูกสร้างเป็นรายการสถานะการปรากฏ ส่วนไคลเอนต์ในโหมดทดสอบ
จะยังคงถูกติดตาม เนื่องจากชุดทดสอบใช้ไคลเอนต์เหล่านี้แทนไคลเอนต์จริง
3) บีคอน system-event
ไคลเอนต์สามารถส่งบีคอนเป็นระยะที่มีข้อมูลมากขึ้นผ่านเมธอด system-event แอป Mac
ใช้วิธีนี้เพื่อรายงานชื่อโฮสต์, IP และ lastInputSeconds
4) การเชื่อมต่อของโหนด (บทบาท: node)
เมื่อโหนดเชื่อมต่อผ่าน Gateway WebSocket ด้วย role: node ตัว Gateway
จะเพิ่มหรืออัปเดตรายการสถานะการปรากฏสำหรับโหนดนั้น (ใช้กระบวนการเดียวกับไคลเอนต์ WS อื่นๆ)
กฎการผสานและขจัดรายการซ้ำ (เหตุผลที่ instanceId มีความสำคัญ)
รายการสถานะการปรากฏจัดเก็บอยู่ในแมปเดียวภายในหน่วยความจำ โดยใช้คีย์แบบไม่สนใจ
ตัวพิมพ์เล็ก-ใหญ่จากค่าแรกที่มีอยู่ตามลำดับต่อไปนี้: ID อุปกรณ์ที่จับคู่แล้ว, connect.client.instanceId
หรือ ID เฉพาะการเชื่อมต่อเป็นทางเลือกสุดท้าย
ไคลเอนต์ระนาบควบคุมชั่วคราวจะไม่ถูกติดตามเลย (ดูด้านบน)
ดังนั้น ID การเชื่อมต่อของไคลเอนต์เหล่านั้นจะไม่กลายเป็นคีย์ สำหรับไคลเอนต์อื่นๆ
การใช้ ID การเชื่อมต่อเป็นค่าทดแทนหมายความว่า ไคลเอนต์ที่เชื่อมต่อใหม่โดยไม่มี
instanceId แบบคงที่จะแสดงเป็นแถว ซ้ำ
TTL และขนาดที่จำกัด
สถานะการปรากฏเป็นข้อมูลชั่วคราวโดยเจตนา:
- TTL: รายการที่เก่ากว่า 5 นาทีจะถูกลบ
- จำนวนรายการสูงสุด: 200 (ลบรายการที่เก่าที่สุดก่อน)
วิธีนี้ช่วยให้รายการเป็นปัจจุบันและป้องกันการใช้หน่วยความจำที่เพิ่มขึ้นอย่างไร้ขีดจำกัด
ข้อควรระวังเกี่ยวกับการเชื่อมต่อระยะไกล/ทันเนล (IP แบบลูปแบ็ก)
เมื่อไคลเอนต์เชื่อมต่อผ่านทันเนล SSH / การส่งต่อพอร์ตภายในเครื่อง Gateway
อาจเห็นที่อยู่ระยะไกลเป็น 127.0.0.1 เพื่อหลีกเลี่ยงการบันทึกที่อยู่ของทันเนลนั้น
เป็น IP ของไคลเอนต์ การจัดการการเชื่อมต่อจะละเว้น ip ทั้งหมดสำหรับ
ไคลเอนต์ที่ตรวจพบว่าเป็นเครื่องภายใน (ลูปแบ็ก) แทนการเขียนที่อยู่ลูปแบ็ก
ลงในรายการ
ผู้ใช้ข้อมูล
หน้า Devices ของ Control UI
หน้า Devices จะรวม system-presence เข้ากับระเบียนการจับคู่และโหนด
ที่จัดเก็บถาวร โดยตรึงบีคอนของ Gateway เองไว้เป็นรายการแรก และใช้ ID อุปกรณ์หรือ
อินสแตนซ์ที่ตรงกันสำหรับข้อมูลเมตาแบบสดของแพลตฟอร์ม เวอร์ชัน รุ่น และระยะเวลานับจากอินพุตล่าสุด
แท็บ Instances ของ macOS
แอป macOS แสดงผลลัพธ์จาก system-presence และใช้ตัวบ่งชี้สถานะขนาดเล็ก
(Active/Idle/Stale) ตามอายุของการอัปเดตล่าสุด
เคล็ดลับการดีบัก
- หากต้องการดูรายการดิบ ให้เรียก
system-presenceกับ Gateway - หากพบรายการซ้ำ:
- ตรวจสอบว่าไคลเอนต์ส่ง
client.instanceIdแบบคงที่ในการจับมือ - ตรวจสอบว่าบีคอนเป็นระยะใช้
instanceIdเดียวกัน - ตรวจสอบว่ารายการที่ได้จากการเชื่อมต่อไม่มี
instanceIdหรือไม่ (เป็นเรื่องปกติที่จะมีรายการซ้ำ)
- ตรวจสอบว่าไคลเอนต์ส่ง
เนื้อหาที่เกี่ยวข้อง
วิธีที่อินพุตทางกายภาพของ Mac เลือกโหนดที่ใช้งานอยู่และกำหนดเส้นทางการแจ้งเตือนการเชื่อมต่อ
ตัวบ่งชี้การพิมพ์ถูกส่งเมื่อใดและวิธีปรับแต่ง
การสตรีมขาออก การแบ่งส่วน และการจัดรูปแบบแยกตามช่องทาง
องค์ประกอบของ Gateway และโปรโตคอล WebSocket ที่ขับเคลื่อนการอัปเดตสถานะการปรากฏ
โปรโตคอลบนสายสำหรับ connect, system-event และ system-presence