Ghép cặp do Gateway sở hữu (Tùy chọn B)
Trong cơ chế ghép cặp do Gateway sở hữu, Gateway là nguồn sự thật cho việc node nào được phép tham gia. Các UI (ứng dụng macOS, các client tương lai) chỉ là frontend phê duyệt hoặc từ chối các yêu cầu đang chờ. Quan trọng: Các node WS sử dụng ghép cặp thiết bị (vai trònode) trong quá trình connect.
node.pair.* là một kho ghép cặp riêng và không kiểm soát bắt tay WS.
Chỉ các client gọi rõ ràng node.pair.* mới sử dụng luồng này.
Khái niệm
- Yêu cầu đang chờ: một nút yêu cầu tham gia; cần được phê duyệt.
- Nút đã ghép cặp: nút đã được phê duyệt và được cấp token xác thực.
- Vận chuyển: endpoint Gateway WS chuyển tiếp các yêu cầu nhưng không quyết định tư cách thành viên. (Hỗ trợ cầu TCP cũ đã bị ngừng/loại bỏ.)
Cách hoạt động của ghép cặp
- Một nút kết nối tới WS của Gateway và yêu cầu ghép cặp.
- Gateway lưu một yêu cầu đang chờ và phát
node.pair.requested. - Bạn phê duyệt hoặc từ chối yêu cầu (CLI hoặc UI).
- Khi phê duyệt, Gateway phát hành một token mới (token được xoay vòng khi ghép cặp lại).
- Nút kết nối lại bằng token và lúc này đã được “ghép cặp”.
Quy trình CLI (thân thiện với môi trường không UI)
nodes status hiển thị các nút đã ghép cặp/đang kết nối và khả năng của chúng.
Bề mặt API (giao thức gateway)
Sự kiện:node.pair.requested— phát khi một yêu cầu đang chờ mới được tạo.node.pair.resolved— phát khi một yêu cầu được phê duyệt/bị từ chối/hết hạn.
node.pair.request— tạo hoặc tái sử dụng một yêu cầu đang chờ.node.pair.list— liệt kê các nút đang chờ + đã ghép cặp.node.pair.approve— phê duyệt một yêu cầu đang chờ (cấp token).node.pair.reject— từ chối một yêu cầu đang chờ.node.pair.verify— xác minh{ nodeId, token }.
node.pair.requestlà idempotent theo từng nút: các lần gọi lặp lại trả về cùng một yêu cầu đang chờ.- Việc phê duyệt luôn tạo ra một token mới; không có token nào từng được trả về từ
node.pair.request. - Các yêu cầu có thể bao gồm
silent: truenhư một gợi ý cho các luồng tự động phê duyệt.
Tự động phê duyệt (ứng dụng macOS)
Ứng dụng macOS có thể tùy chọn thử phê duyệt im lặng khi:- yêu cầu được đánh dấu
silent, và - ứng dụng có thể xác minh kết nối SSH tới máy chủ gateway bằng cùng một người dùng.
Lưu trữ (cục bộ, riêng tư)
Trạng thái ghép cặp được lưu dưới thư mục trạng thái của Gateway (mặc định~/.openclaw):
~/.openclaw/nodes/paired.json~/.openclaw/nodes/pending.json
OPENCLAW_STATE_DIR, thư mục nodes/ sẽ di chuyển theo.
Ghi chú bảo mật:
- Token là bí mật; hãy coi
paired.jsonlà dữ liệu nhạy cảm. - Xoay vòng token yêu cầu phê duyệt lại (hoặc xóa mục nhập của nút).
Hành vi vận chuyển
- Lớp vận chuyển là không trạng thái; nó không lưu trữ tư cách thành viên.
- Nếu Gateway ngoại tuyến hoặc ghép cặp bị vô hiệu hóa, các nút không thể ghép cặp.
- Nếu Gateway ở chế độ từ xa, việc ghép cặp vẫn diễn ra với kho lưu trữ của Gateway từ xa.