Skip to main content
“Hiện diện” của OpenClaw là một chế độ xem nhẹ, hoạt động theo khả năng tốt nhất về:
  • chính Gateway, và
  • các ứng dụng khách hiển thị với người dùng đang kết nối với Gateway (ứng dụng Mac, WebChat, các node, v.v.)
Thông tin hiện diện hiển thị siêu dữ liệu kết nối trực tiếp trên trang Devices của giao diện điều khiển (trong Settings → Devices) và tab Instances của ứng dụng macOS. Trang này trình bày danh sách ứng dụng khách của Gateway. Để phát hiện máy Mac bạn sử dụng gần đây nhất và định tuyến cảnh báo node đến đó, hãy xem Thông tin hiện diện của máy tính đang hoạt động.

Các trường thông tin hiện diện (nội dung được hiển thị)

Các mục thông tin hiện diện là những đối tượng có cấu trúc với các trường như:
  • instanceId (không bắt buộc nhưng đặc biệt khuyến nghị): danh tính ổn định của ứng dụng khách (thường là connect.client.instanceId)
  • host: tên máy chủ thân thiện với người dùng
  • ip: địa chỉ IP được xác định theo khả năng tốt nhất
  • version: chuỗi phiên bản của ứng dụng khách
  • deviceFamily / modelIdentifier: thông tin gợi ý về phần cứng
  • mode: ui, webchat, cli, backend, node, probe, test
  • lastInputSeconds: số giây kể từ lần nhập liệu gần nhất của người dùng, nếu biết
  • reason: chuỗi dạng tự do do ứng dụng khách cung cấp; chính Gateway chỉ phát self, connectdisconnect
  • deviceId, roles, scopes: danh tính thiết bị và thông tin gợi ý về vai trò/phạm vi từ quá trình bắt tay kết nối
  • ts: dấu thời gian của lần cập nhật gần nhất (ms kể từ epoch)

Nguồn tạo (thông tin hiện diện đến từ đâu)

Các mục thông tin hiện diện được tạo từ nhiều nguồn và được hợp nhất.

1) Mục của chính Gateway

Gateway luôn khởi tạo một mục “self” khi bắt đầu để giao diện người dùng hiển thị máy chủ Gateway ngay cả trước khi có ứng dụng khách nào kết nối.

2) Kết nối WebSocket

Mỗi ứng dụng khách WS bắt đầu bằng một yêu cầu connect. Khi quá trình bắt tay thành công, Gateway chèn hoặc cập nhật một mục thông tin hiện diện cho kết nối đó.

Vì sao các kết nối mặt phẳng điều khiển tạm thời không xuất hiện

Các lệnh CLI, ứng dụng khách RPC phía máy chủ và trình thăm dò thường chỉ kết nối trong thời gian ngắn. Để tránh lưu giữ sự biến động đó trong suốt TTL của thông tin hiện diện, các ứng dụng khách ở chế độ cli, backend hoặc probe không được chuyển thành mục thông tin hiện diện. Các ứng dụng khách ở chế độ kiểm thử vẫn được theo dõi vì các bộ kiểm thử sử dụng chúng để thay thế cho ứng dụng khách thực.

3) Beacon system-event

Ứng dụng khách có thể gửi các beacon định kỳ giàu thông tin hơn qua phương thức system-event. Ứng dụng Mac sử dụng phương thức này để báo cáo tên máy chủ, IP, phiên bản và siêu dữ liệu về trạng thái hoạt động. Hoạt động nhập liệu vật lý không thuộc beacon chung này; sự kiện node gốc dành riêng cho mục đích được mô tả trong Thông tin hiện diện của máy tính đang hoạt động chịu trách nhiệm về hoạt động đó. Máy Mac gắn thẻ các beacon này bằng system-presence-clear-last-input; các Gateway hiện tại sử dụng dấu hiệu tương thích ngược đó để xóa mọi thông tin về độ gần đây của lần nhập liệu được giữ lại từ ứng dụng cũ hơn. Beacon cũng mang một giá trị cố định là 30 ngày để các Gateway cũ hơn bỏ qua thẻ sẽ ghi đè độ gần đây chính xác thay vì giữ lại nó. Không có hoạt động mới nào được lấy mẫu cho giá trị tương thích này.

4) Kết nối node (vai trò: node)

Khi một node kết nối qua WebSocket của Gateway với role: node, Gateway chèn hoặc cập nhật một mục thông tin hiện diện cho node đó (cùng luồng với các ứng dụng khách WS khác).

Quy tắc hợp nhất + loại bỏ trùng lặp (vì sao instanceId quan trọng)

Các mục thông tin hiện diện được lưu trong một ánh xạ duy nhất trong bộ nhớ, với khóa không phân biệt chữ hoa chữ thường là giá trị khả dụng đầu tiên theo thứ tự: id thiết bị đã ghép nối, connect.client.instanceId, hoặc id riêng của kết nối như phương án cuối cùng. Các ứng dụng khách mặt phẳng điều khiển tạm thời bị loại hoàn toàn khỏi quá trình theo dõi (xem phần trên), vì vậy id kết nối của chúng không bao giờ trở thành khóa. Với mọi ứng dụng khách khác, việc dùng id kết nối làm phương án dự phòng đồng nghĩa với việc một ứng dụng khách kết nối lại mà không có instanceId ổn định sẽ xuất hiện dưới dạng một hàng trùng lặp.

TTL và giới hạn kích thước

Thông tin hiện diện được thiết kế để tồn tại tạm thời:
  • TTL: các mục cũ hơn 5 phút sẽ bị loại bỏ
  • Số mục tối đa: 200 (mục cũ nhất bị loại bỏ trước)
Điều này giúp danh sách luôn mới và tránh mức sử dụng bộ nhớ tăng không giới hạn.

Lưu ý về kết nối từ xa/đường hầm (IP loopback)

Khi một ứng dụng khách kết nối qua đường hầm SSH / chuyển tiếp cổng cục bộ, Gateway có thể thấy địa chỉ từ xa là 127.0.0.1. Để tránh ghi lại địa chỉ đường hầm đó làm IP của ứng dụng khách, quá trình xử lý kết nối sẽ bỏ qua hoàn toàn ip đối với các ứng dụng khách được phát hiện là cục bộ (loopback), thay vì ghi địa chỉ loopback vào mục.

Thành phần sử dụng

Trang Devices của giao diện điều khiển

Trang Devices kết hợp system-presence với các bản ghi ghép nối và node bền vững. Trang này ghim beacon của chính Gateway ở đầu và sử dụng id thiết bị hoặc id phiên bản khớp nhau cho siêu dữ liệu trực tiếp về nền tảng, phiên bản, kiểu máy và độ gần đây của lần nhập liệu.

Tab Instances trên macOS

Ứng dụng macOS hiển thị đầu ra của system-presence và áp dụng một chỉ báo trạng thái nhỏ (Active/Idle/Stale) dựa trên thời gian kể từ lần cập nhật gần nhất.

Mẹo gỡ lỗi

  • Để xem danh sách thô, hãy gọi system-presence trên Gateway.
  • Nếu thấy các mục trùng lặp:
    • xác nhận ứng dụng khách gửi client.instanceId ổn định trong quá trình bắt tay
    • xác nhận các beacon định kỳ sử dụng cùng instanceId
    • kiểm tra xem mục bắt nguồn từ kết nối có thiếu instanceId hay không (trùng lặp là điều được dự kiến)

Liên quan

Thông tin hiện diện của máy tính đang hoạt động

Cách hoạt động nhập liệu vật lý trên máy Mac chọn một node đang hoạt động và định tuyến cảnh báo kết nối.

Chỉ báo đang nhập

Thời điểm các chỉ báo đang nhập được gửi và cách điều chỉnh chúng.

Truyền phát và chia khối

Truyền phát đầu ra, chia khối và định dạng theo từng kênh.

Kiến trúc Gateway

Các thành phần Gateway và giao thức WebSocket điều khiển việc cập nhật thông tin hiện diện.

Giao thức Gateway

Giao thức truyền dẫn cho connect, system-eventsystem-presence.