Documentation Index
Fetch the complete documentation index at: https://openclawhub.vn/llms.txt
Use this file to discover all available pages before exploring further.
Hiện diện
“Hiện diện” trong OpenClaw là một cái nhìn nhẹ nhàng, nỗ lực tốt nhất về:- chính Gateway, và
- các client kết nối với Gateway (ứng dụng mac, WebChat, CLI, v.v.)
Các trường hiện diện (những gì hiển thị)
Các mục hiện diện là các đối tượng có cấu trúc với các trường như:instanceId(không bắt buộc nhưng rất khuyến khích): định danh client ổn định (thường làconnect.client.instanceId)host: tên host thân thiện với người dùngip: địa chỉ IP nỗ lực tốt nhấtversion: chuỗi phiên bản clientdeviceFamily/modelIdentifier: gợi ý phần cứngmode:ui,webchat,cli,backend,probe,test,node, …lastInputSeconds: “số giây kể từ lần nhập cuối cùng của người dùng” (nếu biết)reason:self,connect,node-connected,periodic, …ts: dấu thời gian cập nhật cuối cùng (ms kể từ epoch)
Nguồn tạo (hiện diện đến từ đâu)
Các mục hiện diện được tạo ra từ nhiều nguồn và được hợp nhất.1) Mục tự thân của Gateway
Gateway luôn khởi tạo một mục “tự thân” khi khởi động để giao diện người dùng hiển thị host gateway ngay cả khi chưa có client nào kết nối.2) Kết nối WebSocket
Mỗi client WS bắt đầu với một yêu cầuconnect. Khi bắt tay thành công, Gateway cập nhật hoặc thêm mới một mục hiện diện cho kết nối đó.
Tại sao các lệnh CLI một lần không hiển thị
CLI thường kết nối để thực hiện các lệnh ngắn, một lần. Để tránh làm đầy danh sách Instances,client.mode === "cli" không được chuyển thành một mục hiện diện.
3) Beacon system-event
Các client có thể gửi các beacon định kỳ phong phú hơn thông qua phương thức system-event. Ứng dụng mac sử dụng điều này để báo cáo tên host, IP và lastInputSeconds.
4) Kết nối Node (vai trò: node)
Khi một node kết nối qua Gateway WebSocket vớirole: node, Gateway cập nhật hoặc thêm mới một mục hiện diện cho node đó (quy trình tương tự như các client WS khác).
Quy tắc hợp nhất + loại bỏ trùng lặp (tại sao instanceId quan trọng)
Các mục hiện diện được lưu trữ trong một bản đồ trong bộ nhớ:
- Các mục được khóa bằng một khóa hiện diện.
- Khóa tốt nhất là
instanceIdổn định (từconnect.client.instanceId) có thể tồn tại qua các lần khởi động lại. - Khóa không phân biệt chữ hoa chữ thường.
instanceId ổn định, nó có thể xuất hiện như một hàng trùng lặp.
Thời gian tồn tại và kích thước giới hạn
Hiện diện được thiết kế để tồn tại ngắn hạn:- TTL: các mục cũ hơn 5 phút sẽ bị loại bỏ
- Số lượng mục tối đa: 200 (mục cũ nhất bị loại bỏ trước)
Lưu ý về kết nối từ xa/đường hầm (IP loopback)
Khi một client kết nối qua một đường hầm SSH / chuyển tiếp cổng địa phương, Gateway có thể thấy địa chỉ từ xa là127.0.0.1. Để tránh ghi đè một địa chỉ IP tốt do client báo cáo, các địa chỉ từ xa loopback bị bỏ qua.
Người tiêu dùng
Tab Instances trên macOS
Ứng dụng macOS hiển thị đầu ra củasystem-presence và áp dụng một chỉ báo trạng thái nhỏ (Hoạt động/Không hoạt động/Lỗi thời) dựa trên tuổi của lần cập nhật cuối cùng.
Mẹo gỡ lỗi
- Để xem danh sách thô, gọi
system-presenceđối với Gateway. - Nếu thấy trùng lặp:
- xác nhận các client gửi một
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 được tạo từ kết nối có thiếu
instanceIdkhông (trùng lặp là điều có thể xảy ra)
- xác nhận các client gửi một