Documentation Index
Fetch the complete documentation index at: https://openclawhub.vn/llms.txt
Use this file to discover all available pages before exploring further.
Nodes
Node là một thiết bị phụ trợ (macOS/iOS/Android/headless) kết nối với Gateway qua WebSocket (cùng cổng với operators) vớirole: "node" và cung cấp một bề mặt lệnh (ví dụ: canvas.*, camera.*, device.*, notifications.*, system.*) thông qua node.invoke. Chi tiết giao thức: Gateway protocol.
Giao thức cũ: Bridge protocol (TCP JSONL; đã ngừng hỗ trợ cho các node hiện tại).
macOS cũng có thể chạy ở chế độ node mode: ứng dụng menubar kết nối với WS server của Gateway và cung cấp các lệnh canvas/camera cục bộ như một node (vì vậy openclaw nodes … hoạt động trên máy Mac này).
Lưu ý:
- Nodes là thiết bị ngoại vi, không phải gateways. Chúng không chạy dịch vụ gateway.
- Tin nhắn Telegram/WhatsApp/v.v. đến trên gateway, không phải trên nodes.
- Hướng dẫn khắc phục sự cố: /nodes/troubleshooting
Ghép đôi + trạng thái
WS nodes sử dụng ghép đôi thiết bị. Nodes trình bày một danh tính thiết bị trong quá trìnhconnect; Gateway tạo một yêu cầu ghép đôi thiết bị cho role: node. Phê duyệt thông qua CLI của thiết bị (hoặc UI).
CLI nhanh:
requestId mới được tạo. Chạy lại openclaw devices list trước khi phê duyệt.
Lưu ý:
nodes statusđánh dấu một node là paired khi vai trò ghép đôi thiết bị của nó bao gồmnode.node.pair.*(CLI:openclaw nodes pending/approve/reject) là một kho ghép đôi node thuộc sở hữu của gateway riêng biệt; nó không kiểm soát quá trình bắt tay WSconnect.
Máy chủ node từ xa (system.run)
Sử dụng node host khi Gateway của bạn chạy trên một máy và bạn muốn các lệnh được thực thi trên máy khác. Mô hình vẫn nói chuyện với gateway; gateway chuyển tiếp các cuộc gọiexec đến node host khi host=node được chọn.
Chạy cái gì ở đâu
- Gateway host: nhận tin nhắn, chạy mô hình, định tuyến các cuộc gọi công cụ.
- Node host: thực thi
system.run/system.whichtrên máy node. - Phê duyệt: được thực thi trên node host qua
~/.openclaw/exec-approvals.json.
- Các lần chạy node dựa trên phê duyệt ràng buộc ngữ cảnh yêu cầu chính xác.
- Đối với các thực thi file shell/runtime trực tiếp, OpenClaw cũng cố gắng ràng buộc một file cục bộ cụ thể và từ chối chạy nếu file đó thay đổi trước khi thực thi.
- Nếu OpenClaw không thể xác định chính xác một file cục bộ cụ thể cho một lệnh interpreter/runtime, thực thi dựa trên phê duyệt bị từ chối thay vì giả vờ bao phủ toàn bộ runtime. Sử dụng sandboxing, các host riêng biệt, hoặc một danh sách cho phép tin cậy rõ ràng/toàn bộ quy trình làm việc cho các ngữ nghĩa interpreter rộng hơn.
Khởi động một node host (foreground)
Trên máy node:Gateway từ xa qua SSH tunnel (loopback bind)
Nếu Gateway bind vào loopback (gateway.bind=loopback, mặc định trong chế độ local), các node host từ xa không thể kết nối trực tiếp. Tạo một SSH tunnel và chỉ định node host tại đầu cục bộ của tunnel.
Ví dụ (node host -> gateway host):
openclaw node runhỗ trợ xác thực bằng token hoặc mật khẩu.- Biến môi trường được ưu tiên:
OPENCLAW_GATEWAY_TOKEN/OPENCLAW_GATEWAY_PASSWORD. - Cấu hình dự phòng là
gateway.auth.token/gateway.auth.password. - Trong chế độ local, node host cố ý bỏ qua
gateway.remote.token/gateway.remote.password. - Trong chế độ remote,
gateway.remote.token/gateway.remote.passwordđủ điều kiện theo quy tắc ưu tiên từ xa. - Nếu các SecretRefs
gateway.auth.*cục bộ đang hoạt động được cấu hình nhưng không được giải quyết, xác thực node-host sẽ thất bại.
Khởi động một node host (service)
Ghép đôi + đặt tên
Trên gateway host:openclaw devices list và phê duyệt requestId hiện tại.
Tùy chọn đặt tên:
--display-nametrênopenclaw node run/openclaw node install(lưu trữ trong~/.openclaw/node.jsontrên node).openclaw nodes rename --node <id|name|ip> --name "Build Node"(ghi đè trên gateway).
Danh sách cho phép các lệnh
Phê duyệt thực thi là mỗi node host. Thêm các mục danh sách cho phép từ gateway:~/.openclaw/exec-approvals.json.
Chỉ định thực thi tại node
Cấu hình mặc định (cấu hình gateway):exec nào với host=node sẽ chạy trên node host (tuân theo danh sách cho phép/phê duyệt của node).
Liên quan:
Thực thi lệnh
Cấp thấp (raw RPC):Ảnh chụp màn hình (canvas snapshots)
Nếu node đang hiển thị Canvas (WebView),canvas.snapshot trả về { format, base64 }.
Trợ giúp CLI (ghi vào một file tạm và in MEDIA:<path>):
Điều khiển Canvas
canvas presentchấp nhận URL hoặc đường dẫn file cục bộ (--target), cùng với tùy chọn--x/--y/--width/--heightđể định vị.canvas evalchấp nhận JS inline (--js) hoặc một đối số vị trí.
A2UI (Canvas)
- Chỉ hỗ trợ A2UI v0.8 JSONL (v0.9/createSurface bị từ chối).
Ảnh + video (node camera)
Ảnh (jpg):
mp4):
- Node phải được foregrounded cho
canvas.*vàcamera.*(các cuộc gọi nền trả vềNODE_BACKGROUND_UNAVAILABLE). - Thời lượng clip bị giới hạn (hiện tại
<= 60s) để tránh payload base64 quá lớn. - Android sẽ yêu cầu quyền
CAMERA/RECORD_AUDIOkhi có thể; quyền bị từ chối sẽ thất bại với*_PERMISSION_REQUIRED.
Ghi màn hình (nodes)
Các node được hỗ trợ cung cấpscreen.record (mp4). Ví dụ:
- Khả năng
screen.recordphụ thuộc vào nền tảng node. - Ghi màn hình bị giới hạn ở
<= 60s. --no-audiovô hiệu hóa ghi âm micro trên các nền tảng được hỗ trợ.- Sử dụng
--screen <index>để chọn màn hình khi có nhiều màn hình.
Vị trí (nodes)
Nodes cung cấplocation.get khi Vị trí được bật trong cài đặt.
Trợ giúp CLI:
- Vị trí tắt theo mặc định.
- “Luôn luôn” yêu cầu quyền hệ thống; lấy dữ liệu nền là nỗ lực tốt nhất.
- Phản hồi bao gồm lat/lon, độ chính xác (mét), và dấu thời gian.
SMS (Android nodes)
Các node Android có thể cung cấpsms.send khi người dùng cấp quyền SMS và thiết bị hỗ trợ điện thoại.
Thực thi cấp thấp:
- Lời nhắc quyền phải được chấp nhận trên thiết bị Android trước khi khả năng này được quảng cáo.
- Các thiết bị chỉ có Wi-Fi không có điện thoại sẽ không quảng cáo
sms.send.
Thiết bị Android + lệnh dữ liệu cá nhân
Các node Android có thể quảng cáo các nhóm lệnh bổ sung khi các khả năng tương ứng được bật. Các nhóm có sẵn:device.status,device.info,device.permissions,device.healthnotifications.list,notifications.actionsphotos.latestcontacts.search,contacts.addcalendar.events,calendar.addcallLog.searchsms.searchmotion.activity,motion.pedometer
- Các lệnh chuyển động được kiểm soát bởi các cảm biến có sẵn.
Lệnh hệ thống (node host / mac node)
Node macOS cung cấpsystem.run, system.notify, và system.execApprovals.get/set.
Node host headless cung cấp system.run, system.which, và system.execApprovals.get/set.
Ví dụ:
system.runtrả về stdout/stderr/mã thoát trong payload.system.notifytôn trọng trạng thái quyền thông báo trên ứng dụng macOS.- Metadata
platform/deviceFamilykhông được nhận dạng của node sử dụng danh sách cho phép mặc định bảo thủ loại trừsystem.runvàsystem.which. Nếu bạn cần các lệnh đó cho một nền tảng không xác định, thêm chúng rõ ràng quagateway.nodes.allowCommands. system.runhỗ trợ--cwd,--env KEY=VAL,--command-timeout, và--needs-screen-recording.- Đối với các shell wrappers (
bash|sh|zsh ... -c/-lc), các giá trị--envtheo yêu cầu được giảm xuống một danh sách cho phép rõ ràng (TERM,LANG,LC_*,COLORTERM,NO_COLOR,FORCE_COLOR). - Đối với các quyết định cho phép luôn trong chế độ danh sách cho phép, các wrapper dispatch đã biết (
env,nice,nohup,stdbuf,timeout) lưu trữ các đường dẫn thực thi bên trong thay vì các đường dẫn wrapper. Nếu không thể mở gói an toàn, không có mục danh sách cho phép nào được lưu trữ tự động. - Trên các node host Windows trong chế độ danh sách cho phép, các lần chạy shell-wrapper qua
cmd.exe /cyêu cầu phê duyệt (mục danh sách cho phép một mình không tự động cho phép dạng wrapper). system.notifyhỗ trợ--priority <passive|active|timeSensitive>và--delivery <system|overlay|auto>.- Các node host bỏ qua các ghi đè
PATHvà loại bỏ các khóa khởi động/shell nguy hiểm (DYLD_*,LD_*,NODE_OPTIONS,PYTHON*,PERL*,RUBYOPT,SHELLOPTS,PS4). Nếu bạn cần thêm các mục PATH, cấu hình môi trường dịch vụ node host (hoặc cài đặt công cụ ở các vị trí tiêu chuẩn) thay vì truyềnPATHqua--env. - Trên chế độ node macOS,
system.runđược kiểm soát bởi các phê duyệt thực thi trong ứng dụng macOS (Cài đặt → Phê duyệt thực thi). Hỏi/danh sách cho phép/toàn bộ hoạt động giống như node host headless; các lời nhắc bị từ chối trả vềSYSTEM_RUN_DENIED. - Trên node host headless,
system.runđược kiểm soát bởi các phê duyệt thực thi (~/.openclaw/exec-approvals.json).
Ràng buộc node thực thi
Khi có nhiều node, bạn có thể ràng buộc thực thi vào một node cụ thể. Điều này đặt node mặc định choexec host=node (và có thể được ghi đè theo agent).
Mặc định toàn cầu:
Bản đồ quyền
Nodes có thể bao gồm một bản đồpermissions trong node.list / node.describe, được khóa theo tên quyền (ví dụ: screenRecording, accessibility) với các giá trị boolean (true = được cấp).
Node host headless (đa nền tảng)
OpenClaw có thể chạy một node host headless (không có UI) kết nối với Gateway WebSocket và cung cấpsystem.run / system.which. Điều này hữu ích trên Linux/Windows
hoặc để chạy một node tối thiểu cùng với một server.
Khởi động nó:
- Ghép đôi vẫn được yêu cầu (Gateway sẽ hiển thị một lời nhắc ghép đôi thiết bị).
- Node host lưu trữ id node, token, tên hiển thị, và thông tin kết nối gateway trong
~/.openclaw/node.json. - Phê duyệt thực thi được thực thi cục bộ qua
~/.openclaw/exec-approvals.json(xem Exec approvals). - Trên macOS, node host headless thực thi
system.runcục bộ theo mặc định. ĐặtOPENCLAW_NODE_EXEC_HOST=appđể định tuyếnsystem.runqua host thực thi ứng dụng đồng hành; thêmOPENCLAW_NODE_EXEC_FALLBACK=0để yêu cầu host ứng dụng và thất bại nếu nó không khả dụng. - Thêm
--tls/--tls-fingerprintkhi Gateway WS sử dụng TLS.
Chế độ node Mac
- Ứng dụng menubar macOS kết nối với WS server của Gateway như một node (vì vậy
openclaw nodes …hoạt động trên máy Mac này). - Trong chế độ remote, ứng dụng mở một SSH tunnel cho cổng Gateway và kết nối với
localhost.