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, test
  • lastInputSeconds: จำนวนวินาทีนับจากอินพุตล่าสุดของผู้ใช้ หากทราบ
  • reason: สตริงรูปแบบอิสระที่ไคลเอนต์ส่งมา โดยตัว Gateway เองจะส่งเฉพาะ self, connect และ disconnect
  • deviceId, 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 หรือไม่ (เป็นเรื่องปกติที่จะมีรายการซ้ำ)

เนื้อหาที่เกี่ยวข้อง

Was this useful?
On this page

On this page